]> git.r.bdr.sh - rbdr/dotfiles/commitdiff
Adds atom
authorBen Beltran <redacted>
Fri, 10 Jul 2015 16:12:25 +0000 (11:12 -0500)
committerBen Beltran <redacted>
Fri, 10 Jul 2015 16:12:25 +0000 (11:12 -0500)
3014 files changed:
atom/.apm/.apmrc [new file with mode: 0644]
atom/.apm/amdefine/0.1.1/package.tgz [new file with mode: 0644]
atom/.apm/amdefine/0.1.1/package/package.json [new file with mode: 0644]
atom/.apm/async/0.2.10/package.tgz [new file with mode: 0644]
atom/.apm/async/0.2.10/package/package.json [new file with mode: 0644]
atom/.apm/atom-space-pen-views/2.0.5/package.tgz [new file with mode: 0644]
atom/.apm/atom-space-pen-views/2.0.5/package/package.json [new file with mode: 0644]
atom/.apm/coffee-script/1.8.0/package.tgz [new file with mode: 0644]
atom/.apm/coffee-script/1.8.0/package/package.json [new file with mode: 0644]
atom/.apm/coffeestack/1.1.2/package.tgz [new file with mode: 0644]
atom/.apm/coffeestack/1.1.2/package/package.json [new file with mode: 0644]
atom/.apm/d/0.1.1/package.tgz [new file with mode: 0644]
atom/.apm/d/0.1.1/package/package.json [new file with mode: 0644]
atom/.apm/emissary/1.3.3/package.tgz [new file with mode: 0644]
atom/.apm/emissary/1.3.3/package/package.json [new file with mode: 0644]
atom/.apm/es5-ext/0.10.7/package.tgz [new file with mode: 0644]
atom/.apm/es5-ext/0.10.7/package/package.json [new file with mode: 0644]
atom/.apm/es6-iterator/0.1.3/package.tgz [new file with mode: 0644]
atom/.apm/es6-iterator/0.1.3/package/package.json [new file with mode: 0644]
atom/.apm/es6-symbol/2.0.1/package.tgz [new file with mode: 0644]
atom/.apm/es6-symbol/2.0.1/package/package.json [new file with mode: 0644]
atom/.apm/es6-weak-map/0.1.4/package.tgz [new file with mode: 0644]
atom/.apm/es6-weak-map/0.1.4/package/package.json [new file with mode: 0644]
atom/.apm/event-kit/0.7.2/package.tgz [new file with mode: 0644]
atom/.apm/event-kit/0.7.2/package/package.json [new file with mode: 0644]
atom/.apm/ex-mode/0.5.1/package.tgz [new file with mode: 0644]
atom/.apm/ex-mode/0.5.1/package/package.json [new file with mode: 0644]
atom/.apm/fs-plus/2.8.1/package.tgz [new file with mode: 0644]
atom/.apm/fs-plus/2.8.1/package/package.json [new file with mode: 0644]
atom/.apm/fuzzaldrin/2.1.0/package.tgz [new file with mode: 0644]
atom/.apm/fuzzaldrin/2.1.0/package/package.json [new file with mode: 0644]
atom/.apm/grim/0.12.0/package.tgz [new file with mode: 0644]
atom/.apm/grim/0.12.0/package/package.json [new file with mode: 0644]
atom/.apm/grim/1.4.1/package.tgz [new file with mode: 0644]
atom/.apm/grim/1.4.1/package/package.json [new file with mode: 0644]
atom/.apm/jquery/2.1.4/package.tgz [new file with mode: 0644]
atom/.apm/jquery/2.1.4/package/package.json [new file with mode: 0644]
atom/.apm/mixto/1.0.0/package.tgz [new file with mode: 0644]
atom/.apm/mixto/1.0.0/package/package.json [new file with mode: 0644]
atom/.apm/mkdirp/0.3.5/package.tgz [new file with mode: 0644]
atom/.apm/mkdirp/0.3.5/package/package.json [new file with mode: 0644]
atom/.apm/property-accessors/1.1.3/package.tgz [new file with mode: 0644]
atom/.apm/property-accessors/1.1.3/package/package.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/amdefine/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/async/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/atom-space-pen-views/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/coffee-script/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/coffeestack/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/d/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/emissary/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/es5-ext/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/es6-iterator/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/es6-symbol/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/es6-weak-map/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/event-kit/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/fs-plus/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/fuzzaldrin/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/grim/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/jquery/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/mixto/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/mkdirp/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/property-accessors/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/rimraf/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/source-map/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/space-pen/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/underscore-plus/.cache.json [new file with mode: 0644]
atom/.apm/registry.npmjs.org/underscore/.cache.json [new file with mode: 0644]
atom/.apm/relative-line-numbers/0.1.5/package.tgz [new file with mode: 0644]
atom/.apm/relative-line-numbers/0.1.5/package/package.json [new file with mode: 0644]
atom/.apm/rimraf/2.2.8/package.tgz [new file with mode: 0644]
atom/.apm/rimraf/2.2.8/package/package.json [new file with mode: 0644]
atom/.apm/source-map/0.1.43/package.tgz [new file with mode: 0644]
atom/.apm/source-map/0.1.43/package/package.json [new file with mode: 0644]
atom/.apm/space-pen/5.1.1/package.tgz [new file with mode: 0644]
atom/.apm/space-pen/5.1.1/package/package.json [new file with mode: 0644]
atom/.apm/underscore-plus/1.6.6/package.tgz [new file with mode: 0644]
atom/.apm/underscore-plus/1.6.6/package/package.json [new file with mode: 0644]
atom/.apm/underscore/1.6.0/package.tgz [new file with mode: 0644]
atom/.apm/underscore/1.6.0/package/package.json [new file with mode: 0644]
atom/.apm/vim-mode-visual-block/0.2.7/package.tgz [new file with mode: 0644]
atom/.apm/vim-mode-visual-block/0.2.7/package/package.json [new file with mode: 0644]
atom/.apm/vim-mode/0.54.0/package.tgz [new file with mode: 0644]
atom/.apm/vim-mode/0.54.0/package/package.json [new file with mode: 0644]
atom/.apm/vim-surround/0.7.2/package.tgz [new file with mode: 0644]
atom/.apm/vim-surround/0.7.2/package/package.json [new file with mode: 0644]
atom/.gitignore [new file with mode: 0644]
atom/config.cson [new file with mode: 0644]
atom/init.coffee [new file with mode: 0644]
atom/keymap.cson [new file with mode: 0644]
atom/packages/README.md [new file with mode: 0644]
atom/packages/ex-mode/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/CHANGELOG.md [new file with mode: 0644]
atom/packages/ex-mode/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/README.md [new file with mode: 0644]
atom/packages/ex-mode/keymaps/ex-mode.cson [new file with mode: 0644]
atom/packages/ex-mode/lib/command-error.coffee [new file with mode: 0644]
atom/packages/ex-mode/lib/command.coffee [new file with mode: 0644]
atom/packages/ex-mode/lib/ex-command-mode-input-element.coffee [new file with mode: 0644]
atom/packages/ex-mode/lib/ex-mode.coffee [new file with mode: 0644]
atom/packages/ex-mode/lib/ex-state.coffee [new file with mode: 0644]
atom/packages/ex-mode/lib/ex-view-model.coffee [new file with mode: 0644]
atom/packages/ex-mode/lib/ex.coffee [new file with mode: 0644]
atom/packages/ex-mode/lib/find.coffee [new file with mode: 0644]
atom/packages/ex-mode/lib/global-ex-state.coffee [new file with mode: 0644]
atom/packages/ex-mode/lib/view-model.coffee [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/main.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/scroll-view.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/select-list-view.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/text-editor-view.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/filter.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/fuzzaldrin.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/matcher.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/scorer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/atom-space-pen-views/stylesheets/select-list.less [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/api.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/lib/composite-disposable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/lib/disposable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/lib/emitter.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/lib/event-kit.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/lib/deprecation.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/lib/grim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/behavior.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emissary.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emitter.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/helpers.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/signal.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscriber.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscription.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.lint [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/CHANGES [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/LICENCE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.lint [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/CHANGES [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/LICENCE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/auto-bind.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/lazy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lint [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lintignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/CHANGES [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/__tad.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/_compare-by-length.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/binary-search.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/clear.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/compact.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/contains.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/diff.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-index-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-last-index-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/exclusion.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first-index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/flatten.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/for-each-right.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/group.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/indexes-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/intersection.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last-index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/remove.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/separate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/some-right.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/__scopes.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_is-extensible.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/generate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/is-plain-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/to-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/valid-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean/is-boolean.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/days-in-month.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-day.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-month.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-year.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/format.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/is-date.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/valid-date.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#/throw.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/custom.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/is-error.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/valid-error.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/compose.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/curry.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/lock.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/not.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/partial.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/spread.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/to-string-tokens.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/_define-length.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/constant.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/identity.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/invoke.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-arguments.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-function.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/noop.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/pluck.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/valid-function.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/global.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/for-each.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/is.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_pack-ieee754.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_unpack-ieee754.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#/pad.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-number.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-integer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-pos-integer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-uint32.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/_iterate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/clear.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compact.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compare.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy-deep.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/count.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/create.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/eq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/every.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/filter.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/first-key.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/flatten.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/for-each.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/get-property-names.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-array-like.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-callable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy-deep.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-empty.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-plain-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/key-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map-keys.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin-prototypes.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/normalize-options.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/primitive-set.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/safe-traverse.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/serialize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/some.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/to-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/unserialize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-callable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-value.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable-value.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-sticky.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-unicode.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/escape.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/is-reg-exp.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/at.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/camel-to-hyphen.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/capitalize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/case-insensitive-compare.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/hyphen-to-camel.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/indent.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/last.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/_data.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/pad.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace-all.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/format-method.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/is-string.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/random-uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.lint [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/CHANGES [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#/chain.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/for-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/get.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/is-iterable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/string.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/valid-iterable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.lint [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/CHANGES [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-native-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-symbol.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/polyfill.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/validate-symbol.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-native-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-weak-map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/polyfill.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/valid-weak-map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/event-kit/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/api.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/lib/space-pen.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/lib/deprecation.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/lib/grim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/.bin/cake [new symlink]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/.bin/coffee [new symlink]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/CNAME [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/CONTRIBUTING.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/README [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/bin/cake [new file with mode: 0755]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/bin/coffee [new file with mode: 0755]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/browser.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/cake.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/coffee-script.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/command.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/grammar.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/helpers.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/lexer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/nodes.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/optparse.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/parser.js [new file with mode: 0755]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/register.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/repl.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/rewriter.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/scope.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/sourcemap.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/examples/pow.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/readme.markdown [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/chmod.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/clobber.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/mkdirp.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/perm.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/perm_sync.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/race.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/rel.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/return.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/return_sync.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/root.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/sync.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/umask.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/umask_sync.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/register.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/repl.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/lib/fs-plus.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/.bin/rimraf [new symlink]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/component.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/lib/async.js [new file with mode: 0755]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/examples/pow.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/readme.markdown [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/chmod.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/clobber.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/mkdirp.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/perm.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/perm_sync.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/race.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/rel.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/return.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/return_sync.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/root.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/sync.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/umask.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/umask_sync.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/AUTHORS [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/bin.js [new file with mode: 0755]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/rimraf.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/run.sh [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/setup.sh [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/test-async.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/test-sync.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/CHANGELOG.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/Makefile.dryice.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/assert-shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/mini-require.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/prefix-source-map.jsm [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/prefix-utils.jsm [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/suffix-browser.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/suffix-source-map.jsm [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/suffix-utils.jsm [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/test-prefix.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/test-suffix.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/array-set.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/base64-vlq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/base64.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/binary-search.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/mapping-list.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-map-consumer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-map-generator.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-node.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/util.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/amdefine.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/intercept.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/run-tests.js [new file with mode: 0755]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-api.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-array-set.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-base64-vlq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-base64.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-binary-search.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-dog-fooding.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-source-map-consumer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-source-map-generator.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-source-node.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-util.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/util.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/behavior.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/emissary.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/emitter.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/helpers.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/signal.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/subscriber.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/subscription.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.lint [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/CHANGES [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/LICENCE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.lint [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/CHANGES [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/LICENCE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/auto-bind.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/lazy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lint [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lintignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/CHANGES [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/__tad.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/_compare-by-length.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/binary-search.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/clear.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/compact.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/contains.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/diff.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-index-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-last-index-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/exclusion.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first-index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/flatten.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/for-each-right.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/group.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/indexes-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/intersection.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last-index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/remove.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/separate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/some-right.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/__scopes.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_is-extensible.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/generate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/is-plain-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/to-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/valid-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean/is-boolean.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/days-in-month.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-day.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-month.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-year.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/format.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/is-date.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/valid-date.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#/throw.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/custom.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/is-error.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/valid-error.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/compose.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/curry.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/lock.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/not.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/partial.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/spread.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/to-string-tokens.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/_define-length.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/constant.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/identity.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/invoke.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-arguments.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-function.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/noop.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/pluck.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/valid-function.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/global.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/for-each.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/is.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_pack-ieee754.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_unpack-ieee754.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#/pad.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-number.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-integer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-pos-integer.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-uint32.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/_iterate.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/clear.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compact.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compare.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy-deep.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/count.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/create.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/eq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/every.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/filter.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/first-key.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/flatten.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/for-each.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/get-property-names.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-array-like.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-callable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy-deep.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-empty.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-plain-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/key-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map-keys.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin-prototypes.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/normalize-options.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/primitive-set.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/safe-traverse.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/serialize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/some.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/to-array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/unserialize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-callable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-value.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like-object.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable-value.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-sticky.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-unicode.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/escape.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/is-reg-exp.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/at.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/camel-to-hyphen.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/capitalize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/case-insensitive-compare.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/hyphen-to-camel.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/indent.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/last.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/_data.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/pad.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace-all.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/format-method.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/is-string.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/random-uniq.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/shim.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.lint [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/CHANGES [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#/chain.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/array.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/for-of.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/get.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/is-iterable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/string.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/valid-iterable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.lint [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.travis.yml [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/CHANGES [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-native-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-symbol.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/polyfill.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/validate-symbol.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/implement.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/index.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-native-implemented.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-weak-map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/polyfill.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/valid-weak-map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/.bowerrc [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/.jscsrc [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/.npmignore [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/AUTHORS.txt [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/CONTRIBUTING.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/MIT-LICENSE.txt [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/bower.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/dist/jquery.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/dist/jquery.min.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/dist/jquery.min.map [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/jsonp.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/load.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/parseJSON.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/parseXML.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/script.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/var/nonce.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/var/rquery.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/xhr.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/attr.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/classes.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/prop.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/support.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/val.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/callbacks.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/access.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/init.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/parseHTML.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/ready.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/var/rsingleTag.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/addGetHookIf.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/curCSS.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/defaultDisplay.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/hiddenVisibleSelectors.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/support.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/swap.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/cssExpand.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/getStyles.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/isHidden.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/rmargin.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/rnumnonpx.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/Data.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/accepts.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/var/data_priv.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/var/data_user.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/deferred.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/deprecated.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/dimensions.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/effects.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/effects/Tween.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/effects/animatedSelector.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event/ajax.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event/alias.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event/support.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/exports/amd.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/exports/global.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/intro.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/jquery.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation/_evalUrl.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation/support.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation/var/rcheckableType.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/offset.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/outro.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/queue.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/queue/delay.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/selector-native.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/selector-sizzle.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/selector.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/serialize.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/dist/sizzle.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/dist/sizzle.min.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/dist/sizzle.min.map [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/empty.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/mixed_sort.html [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/testinit.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/index.html [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/jquery.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/unit/extending.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/unit/selector.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/unit/utilities.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/traversing.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/traversing/findFilter.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/traversing/var/rneedsContext.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/arr.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/class2type.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/concat.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/hasOwn.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/indexOf.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/pnum.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/push.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/rnotwhite.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/slice.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/strundefined.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/support.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/toString.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/wrap.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/space-pen/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/underscore-plus/LICENSE.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/underscore-plus/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/underscore-plus/lib/underscore-plus.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/LICENSE [new file with mode: 0644]
atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/README.md [new file with mode: 0644]
atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/package.json [new file with mode: 0644]
atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/underscore-min.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/underscore.js [new file with mode: 0644]
atom/packages/ex-mode/node_modules/underscore-plus/package.json [new file with mode: 0644]
atom/packages/ex-mode/package.json [new file with mode: 0644]
atom/packages/ex-mode/spec/ex-mode-spec.coffee [new file with mode: 0644]
atom/packages/ex-mode/spec/ex-mode-view-spec.coffee [new file with mode: 0644]
atom/packages/ex-mode/styles/ex-mode.less [new file with mode: 0644]
atom/packages/relative-line-numbers/.npmignore [new file with mode: 0644]
atom/packages/relative-line-numbers/CHANGELOG.md [new file with mode: 0644]
atom/packages/relative-line-numbers/LICENSE.md [new file with mode: 0644]
atom/packages/relative-line-numbers/README.md [new file with mode: 0644]
atom/packages/relative-line-numbers/lib/line-number-view.coffee [new file with mode: 0644]
atom/packages/relative-line-numbers/lib/relative-line-numbers.coffee [new file with mode: 0644]
atom/packages/relative-line-numbers/package.json [new file with mode: 0644]
atom/packages/vim-mode-visual-block/.npmignore [new file with mode: 0644]
atom/packages/vim-mode-visual-block/CHANGELOG.md [new file with mode: 0644]
atom/packages/vim-mode-visual-block/LICENSE.md [new file with mode: 0644]
atom/packages/vim-mode-visual-block/README.md [new file with mode: 0644]
atom/packages/vim-mode-visual-block/keymaps/vim-mode-visual-block.cson [new file with mode: 0644]
atom/packages/vim-mode-visual-block/lib/main.coffee [new file with mode: 0644]
atom/packages/vim-mode-visual-block/node_modules/underscore-plus/LICENSE.md [new file with mode: 0644]
atom/packages/vim-mode-visual-block/node_modules/underscore-plus/README.md [new file with mode: 0644]
atom/packages/vim-mode-visual-block/node_modules/underscore-plus/lib/underscore-plus.js [new file with mode: 0644]
atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/LICENSE [new file with mode: 0644]
atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/README.md [new file with mode: 0644]
atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/package.json [new file with mode: 0644]
atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/underscore-min.js [new file with mode: 0644]
atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/underscore.js [new file with mode: 0644]
atom/packages/vim-mode-visual-block/node_modules/underscore-plus/package.json [new file with mode: 0644]
atom/packages/vim-mode-visual-block/package.json [new file with mode: 0644]
atom/packages/vim-mode/.coffeelintignore [new file with mode: 0644]
atom/packages/vim-mode/.npmignore [new file with mode: 0644]
atom/packages/vim-mode/.travis.yml [new file with mode: 0644]
atom/packages/vim-mode/CHANGELOG.md [new file with mode: 0644]
atom/packages/vim-mode/CONTRIBUTING.md [new file with mode: 0644]
atom/packages/vim-mode/LICENSE.md [new file with mode: 0644]
atom/packages/vim-mode/MAINTAINERS.md [new file with mode: 0644]
atom/packages/vim-mode/README.md [new file with mode: 0644]
atom/packages/vim-mode/coffeelint.json [new file with mode: 0644]
atom/packages/vim-mode/docs/motions.md [new file with mode: 0644]
atom/packages/vim-mode/docs/operators.md [new file with mode: 0644]
atom/packages/vim-mode/docs/overview.md [new file with mode: 0644]
atom/packages/vim-mode/docs/scrolling.md [new file with mode: 0644]
atom/packages/vim-mode/docs/windows.md [new file with mode: 0644]
atom/packages/vim-mode/keymaps/vim-mode.cson [new file with mode: 0644]
atom/packages/vim-mode/lib/global-vim-state.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/motions/find-motion.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/motions/general-motions.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/motions/index.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/motions/move-to-mark-motion.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/motions/search-motion.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/operators/general-operators.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/operators/increase-operators.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/operators/indent-operators.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/operators/index.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/operators/input.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/operators/put-operator.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/operators/replace-operator.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/prefixes.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/scroll.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/settings.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/status-bar-manager.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/text-objects.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/utils.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/view-models/search-view-model.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/view-models/view-model.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/view-models/vim-command-mode-input-element.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/vim-mode.coffee [new file with mode: 0644]
atom/packages/vim-mode/lib/vim-state.coffee [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/LICENSE.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/api.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/lib/composite-disposable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/lib/disposable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/lib/emitter.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/lib/event-kit.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/LICENSE.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/lib/deprecation.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/lib/grim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/LICENSE.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/behavior.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emissary.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emitter.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/helpers.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/signal.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscriber.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscription.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.lint [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.npmignore [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.travis.yml [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/CHANGES [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/LICENCE [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.lint [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.npmignore [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.travis.yml [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/CHANGES [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/LICENCE [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/auto-bind.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/lazy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lint [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lintignore [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.npmignore [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.travis.yml [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/CHANGES [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/LICENSE [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/__tad.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/_compare-by-length.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/binary-search.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/clear.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/compact.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/contains.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/diff.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-index-of.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-last-index-of.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/exclusion.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first-index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/flatten.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/for-each-right.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/group.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/indexes-of.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/intersection.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-copy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-uniq.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last-index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/remove.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/separate.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/some-right.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/uniq.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/__scopes.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_is-extensible.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/generate.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/is-plain-array.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/to-array.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/valid-array.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean/is-boolean.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/copy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/days-in-month.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-day.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-month.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-year.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/format.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/is-date.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/valid-date.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#/throw.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/custom.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/is-error.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/valid-error.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/compose.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/copy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/curry.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/lock.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/not.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/partial.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/spread.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/to-string-tokens.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/_define-length.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/constant.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/identity.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/invoke.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-arguments.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-function.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/noop.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/pluck.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/valid-function.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/global.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/for-each.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/is.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate-object.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_pack-ieee754.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_unpack-ieee754.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#/pad.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-number.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-integer.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-pos-integer.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-uint32.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/_iterate.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/clear.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compact.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compare.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy-deep.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/count.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/create.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/eq.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/every.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/filter.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/first-key.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/flatten.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/for-each.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/get-property-names.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-array-like.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-callable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy-deep.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-empty.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-object.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-plain-object.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/key-of.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map-keys.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin-prototypes.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/normalize-options.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/primitive-set.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/safe-traverse.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/serialize.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/some.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/to-array.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/unserialize.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-callable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-object.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-value.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like-object.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable-value.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-sticky.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-unicode.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/escape.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/is-reg-exp.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/at.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/camel-to-hyphen.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/capitalize.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/case-insensitive-compare.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/hyphen-to-camel.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/indent.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/last.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/_data.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/pad.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace-all.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/format-method.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/is-string.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/random-uniq.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/shim.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.lint [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.npmignore [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.travis.yml [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/CHANGES [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/LICENSE [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#/chain.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/array.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/for-of.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/get.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/is-iterable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/string.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/valid-iterable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.lint [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.npmignore [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.travis.yml [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/CHANGES [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/LICENSE [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-native-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-symbol.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/polyfill.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/validate-symbol.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/implement.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/index.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-native-implemented.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-weak-map.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/polyfill.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/valid-weak-map.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/LICENSE.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/LICENSE.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/package.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/package.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/event-kit/package.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/underscore-plus/LICENSE.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/underscore-plus/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/underscore-plus/lib/underscore-plus.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/LICENSE [new file with mode: 0644]
atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/README.md [new file with mode: 0644]
atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/package.json [new file with mode: 0644]
atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/underscore-min.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/underscore.js [new file with mode: 0644]
atom/packages/vim-mode/node_modules/underscore-plus/package.json [new file with mode: 0644]
atom/packages/vim-mode/package.json [new file with mode: 0644]
atom/packages/vim-mode/spec/motions-spec.coffee [new file with mode: 0644]
atom/packages/vim-mode/spec/operators-spec.coffee [new file with mode: 0644]
atom/packages/vim-mode/spec/prefixes-spec.coffee [new file with mode: 0644]
atom/packages/vim-mode/spec/scroll-spec.coffee [new file with mode: 0644]
atom/packages/vim-mode/spec/spec-helper.coffee [new file with mode: 0644]
atom/packages/vim-mode/spec/text-objects-spec.coffee [new file with mode: 0644]
atom/packages/vim-mode/spec/vim-mode-spec.coffee [new file with mode: 0644]
atom/packages/vim-mode/spec/vim-state-spec.coffee [new file with mode: 0644]
atom/packages/vim-mode/styles/vim-mode.less [new file with mode: 0644]
atom/packages/vim-surround/.npmignore [new file with mode: 0644]
atom/packages/vim-surround/.travis.yml [new file with mode: 0644]
atom/packages/vim-surround/CHANGELOG.md [new file with mode: 0644]
atom/packages/vim-surround/LICENSE.md [new file with mode: 0644]
atom/packages/vim-surround/README.md [new file with mode: 0644]
atom/packages/vim-surround/keymaps/surround.cson [new file with mode: 0644]
atom/packages/vim-surround/lib/command/base.coffee [new file with mode: 0644]
atom/packages/vim-surround/lib/command/change.coffee [new file with mode: 0644]
atom/packages/vim-surround/lib/command/delete.coffee [new file with mode: 0644]
atom/packages/vim-surround/lib/command/selector.coffee [new file with mode: 0644]
atom/packages/vim-surround/lib/command/surround.coffee [new file with mode: 0644]
atom/packages/vim-surround/lib/vim-surround.coffee [new file with mode: 0644]
atom/packages/vim-surround/package.json [new file with mode: 0644]
atom/packages/vim-surround/spec/spec-helper.coffee [new file with mode: 0644]
atom/packages/vim-surround/spec/vim-surround-spec.coffee [new file with mode: 0644]
atom/snippets.cson [new file with mode: 0644]
atom/styles.less [new file with mode: 0644]

diff --git a/atom/.apm/.apmrc b/atom/.apm/.apmrc
new file mode 100644 (file)
index 0000000..d8961b2
--- /dev/null
@@ -0,0 +1,5 @@
+; This file is auto-generated and should not be edited since any
+; modifications will be lost the next time any apm command is run.
+;
+; You should instead edit your .apmrc config located in ~/.atom/.apmrc
+cache = /Users/benbeltran/.atom/.apm
diff --git a/atom/.apm/amdefine/0.1.1/package.tgz b/atom/.apm/amdefine/0.1.1/package.tgz
new file mode 100644 (file)
index 0000000..d9b8df0
Binary files /dev/null and b/atom/.apm/amdefine/0.1.1/package.tgz differ
diff --git a/atom/.apm/amdefine/0.1.1/package/package.json b/atom/.apm/amdefine/0.1.1/package/package.json
new file mode 100644 (file)
index 0000000..4216526
--- /dev/null
@@ -0,0 +1 @@
+{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.1.1","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"license":"BSD-3-Clause AND MIT","repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"gitHead":"fcadcc8080f47084b973bac3b3c4b3dd3e0f957d","bugs":{"url":"https://github.com/jrburke/amdefine/issues"},"_id":"amdefine@0.1.1","scripts":{},"_shasum":"b5c75c532052dccd6a39c0064c772c8d57a06cd2","_from":"amdefine@>=0.0.4","_npmVersion":"1.4.28","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"dist":{"shasum":"b5c75c532052dccd6a39c0064c772c8d57a06cd2","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/async/0.2.10/package.tgz b/atom/.apm/async/0.2.10/package.tgz
new file mode 100644 (file)
index 0000000..6a47bd6
Binary files /dev/null and b/atom/.apm/async/0.2.10/package.tgz differ
diff --git a/atom/.apm/async/0.2.10/package/package.json b/atom/.apm/async/0.2.10/package/package.json
new file mode 100644 (file)
index 0000000..29c25ca
--- /dev/null
@@ -0,0 +1 @@
+{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.10","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"_id":"async@0.2.10","dist":{"shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","tarball":"http://registry.npmjs.org/async/-/async-0.2.10.tgz"},"_from":"async@>=0.2.9 <0.3.0","_npmVersion":"1.3.2","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{},"_shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","_resolved":"https://registry.npmjs.org/async/-/async-0.2.10.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/atom-space-pen-views/2.0.5/package.tgz b/atom/.apm/atom-space-pen-views/2.0.5/package.tgz
new file mode 100644 (file)
index 0000000..ecc9cad
Binary files /dev/null and b/atom/.apm/atom-space-pen-views/2.0.5/package.tgz differ
diff --git a/atom/.apm/atom-space-pen-views/2.0.5/package/package.json b/atom/.apm/atom-space-pen-views/2.0.5/package/package.json
new file mode 100644 (file)
index 0000000..6e6a039
--- /dev/null
@@ -0,0 +1 @@
+{"name":"atom-space-pen-views","version":"2.0.5","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{"prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","space-pen":"^5.0.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"0e5fc262cc62d453bbd6dce9ecaec5caddc553f9","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.5","_shasum":"4ef545a6ef396c8342717b0d9d2569577a2651f4","_from":"atom-space-pen-views@>=2.0.4 <3.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"4ef545a6ef396c8342717b0d9d2569577a2651f4","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.5.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.5.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/coffee-script/1.8.0/package.tgz b/atom/.apm/coffee-script/1.8.0/package.tgz
new file mode 100644 (file)
index 0000000..69b2688
Binary files /dev/null and b/atom/.apm/coffee-script/1.8.0/package.tgz differ
diff --git a/atom/.apm/coffee-script/1.8.0/package/package.json b/atom/.apm/coffee-script/1.8.0/package/package.json
new file mode 100644 (file)
index 0000000..51282b0
--- /dev/null
@@ -0,0 +1 @@
+{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.8.0","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.6.2"},"dependencies":{"mkdirp":"~0.3.5"},"_id":"coffee-script@1.8.0","dist":{"shasum":"9c9f1d2b4a52a000ded15b659791703648263c1d","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz"},"_from":"coffee-script@>=1.8.0 <1.9.0","_npmVersion":"1.3.21","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"_shasum":"9c9f1d2b4a52a000ded15b659791703648263c1d","_resolved":"https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/coffeestack/1.1.2/package.tgz b/atom/.apm/coffeestack/1.1.2/package.tgz
new file mode 100644 (file)
index 0000000..e108374
Binary files /dev/null and b/atom/.apm/coffeestack/1.1.2/package.tgz differ
diff --git a/atom/.apm/coffeestack/1.1.2/package/package.json b/atom/.apm/coffeestack/1.1.2/package/package.json
new file mode 100644 (file)
index 0000000..72de8f6
--- /dev/null
@@ -0,0 +1 @@
+{"name":"coffeestack","version":"1.1.2","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","fs-plus":"^2.5.0","source-map":"~0.1.43"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-coffeelint":"0.0.7","grunt-contrib-coffee":"~0.7.0","grunt-shell":"~0.3.0","jasmine-focused":"1.x","rimraf":"~2.2.0","temp":"^0.8.1"},"gitHead":"8484218a00e59526d9f064b64441df788526fa04","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@1.1.2","_shasum":"35278f3beb9ce6f5d0ada1fb6e087852b657ce98","_from":"coffeestack@>=1.0.0 <2.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"35278f3beb9ce6f5d0ada1fb6e087852b657ce98","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-1.1.2.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/coffeestack/-/coffeestack-1.1.2.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/d/0.1.1/package.tgz b/atom/.apm/d/0.1.1/package.tgz
new file mode 100644 (file)
index 0000000..0e19514
Binary files /dev/null and b/atom/.apm/d/0.1.1/package.tgz differ
diff --git a/atom/.apm/d/0.1.1/package/package.json b/atom/.apm/d/0.1.1/package/package.json
new file mode 100644 (file)
index 0000000..bbcd236
--- /dev/null
@@ -0,0 +1 @@
+{"name":"d","version":"0.1.1","description":"Property descriptor factory","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"scripts":{"test":"node node_modules/tad/bin/tad"},"repository":{"type":"git","url":"git://github.com/medikoo/d.git"},"keywords":["descriptor","es","ecmascript","ecma","property","descriptors","meta","properties"],"dependencies":{"es5-ext":"~0.10.2"},"devDependencies":{"tad":"~0.1.21"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/d/issues"},"homepage":"https://github.com/medikoo/d","_id":"d@0.1.1","dist":{"shasum":"da184c535d18d8ee7ba2aa229b914009fae11309","tarball":"http://registry.npmjs.org/d/-/d-0.1.1.tgz"},"_from":"d@>=0.1.1 <0.2.0","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{},"_shasum":"da184c535d18d8ee7ba2aa229b914009fae11309","_resolved":"https://registry.npmjs.org/d/-/d-0.1.1.tgz","readme":"ERROR: No README data found!"}
\ No newline at end of file
diff --git a/atom/.apm/emissary/1.3.3/package.tgz b/atom/.apm/emissary/1.3.3/package.tgz
new file mode 100644 (file)
index 0000000..e8e3d8a
Binary files /dev/null and b/atom/.apm/emissary/1.3.3/package.tgz differ
diff --git a/atom/.apm/emissary/1.3.3/package/package.json b/atom/.apm/emissary/1.3.3/package/package.json
new file mode 100644 (file)
index 0000000..8bf554a
--- /dev/null
@@ -0,0 +1 @@
+{"name":"emissary","version":"1.3.3","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","es6-weak-map":"^0.1.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"13170d3e1f8b1cd4396d6dceb3c3bccf0887dae2","_id":"emissary@1.3.3","_shasum":"a618d92d682b232d31111dc3625a5df661799606","_from":"emissary@>=1.2.0 <2.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"a618d92d682b232d31111dc3625a5df661799606","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz","readme":"ERROR: No README data found!"}
\ No newline at end of file
diff --git a/atom/.apm/es5-ext/0.10.7/package.tgz b/atom/.apm/es5-ext/0.10.7/package.tgz
new file mode 100644 (file)
index 0000000..0aa368a
Binary files /dev/null and b/atom/.apm/es5-ext/0.10.7/package.tgz differ
diff --git a/atom/.apm/es5-ext/0.10.7/package/package.json b/atom/.apm/es5-ext/0.10.7/package/package.json
new file mode 100644 (file)
index 0000000..3168e57
--- /dev/null
@@ -0,0 +1 @@
+{"name":"es5-ext","version":"0.10.7","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.2","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"5b63ee02f50dfbc70dc1f62bc66b8718af443f83","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.7","_shasum":"dfaea50721301042e2d89c1719d43493fa821656","_from":"es5-ext@>=0.10.6 <0.11.0","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"dfaea50721301042e2d89c1719d43493fa821656","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz","readme":"ERROR: No README data found!"}
\ No newline at end of file
diff --git a/atom/.apm/es6-iterator/0.1.3/package.tgz b/atom/.apm/es6-iterator/0.1.3/package.tgz
new file mode 100644 (file)
index 0000000..3f7cfd2
Binary files /dev/null and b/atom/.apm/es6-iterator/0.1.3/package.tgz differ
diff --git a/atom/.apm/es6-iterator/0.1.3/package/package.json b/atom/.apm/es6-iterator/0.1.3/package/package.json
new file mode 100644 (file)
index 0000000..1cc0d20
--- /dev/null
@@ -0,0 +1 @@
+{"name":"es6-iterator","version":"0.1.3","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5","es6-symbol":"~2.0.1"},"devDependencies":{"event-emitter":"~0.3.3","tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"2addc362c6f139e4941cf4726eeb59e5960c5cef","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator","_id":"es6-iterator@0.1.3","_shasum":"d6f58b8c4fc413c249b4baa19768f8e4d7c8944e","_from":"es6-iterator@>=0.1.3 <0.2.0","_npmVersion":"2.3.0","_nodeVersion":"0.11.16","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"d6f58b8c4fc413c249b4baa19768f8e4d7c8944e","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz","readme":"ERROR: No README data found!"}
\ No newline at end of file
diff --git a/atom/.apm/es6-symbol/2.0.1/package.tgz b/atom/.apm/es6-symbol/2.0.1/package.tgz
new file mode 100644 (file)
index 0000000..866cf5e
Binary files /dev/null and b/atom/.apm/es6-symbol/2.0.1/package.tgz differ
diff --git a/atom/.apm/es6-symbol/2.0.1/package/package.json b/atom/.apm/es6-symbol/2.0.1/package/package.json
new file mode 100644 (file)
index 0000000..564673c
--- /dev/null
@@ -0,0 +1 @@
+{"name":"es6-symbol","version":"2.0.1","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5"},"devDependencies":{"tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"51f6938d7830269fefa38f02eb912f5472b3ccd7","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@2.0.1","_shasum":"761b5c67cfd4f1d18afb234f691d678682cb3bf3","_from":"es6-symbol@>=2.0.1 <2.1.0","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"761b5c67cfd4f1d18afb234f691d678682cb3bf3","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz","readme":"ERROR: No README data found!"}
\ No newline at end of file
diff --git a/atom/.apm/es6-weak-map/0.1.4/package.tgz b/atom/.apm/es6-weak-map/0.1.4/package.tgz
new file mode 100644 (file)
index 0000000..f4ef004
Binary files /dev/null and b/atom/.apm/es6-weak-map/0.1.4/package.tgz differ
diff --git a/atom/.apm/es6-weak-map/0.1.4/package/package.json b/atom/.apm/es6-weak-map/0.1.4/package/package.json
new file mode 100644 (file)
index 0000000..d62a4a9
--- /dev/null
@@ -0,0 +1 @@
+{"name":"es6-weak-map","version":"0.1.4","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.6","es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.2"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"e68802395b82a700257374c379cfaafe84ee8552","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.4","_shasum":"706cef9e99aa236ba7766c239c8b9e286ea7d228","_from":"es6-weak-map@>=0.1.2 <0.2.0","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"706cef9e99aa236ba7766c239c8b9e286ea7d228","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz","readme":"ERROR: No README data found!"}
\ No newline at end of file
diff --git a/atom/.apm/event-kit/0.7.2/package.tgz b/atom/.apm/event-kit/0.7.2/package.tgz
new file mode 100644 (file)
index 0000000..8b9dbac
Binary files /dev/null and b/atom/.apm/event-kit/0.7.2/package.tgz differ
diff --git a/atom/.apm/event-kit/0.7.2/package/package.json b/atom/.apm/event-kit/0.7.2/package/package.json
new file mode 100644 (file)
index 0000000..87c4791
--- /dev/null
@@ -0,0 +1 @@
+{"name":"event-kit","version":"0.7.2","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"997b618b19566d5740c77507492528c52b5edb6a","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.7.2","_shasum":"331f5c36fde2ebd6413b69b56633e2b6b5cf9e60","_from":"event-kit@>=0.7.2 <0.8.0","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"331f5c36fde2ebd6413b69b56633e2b6b5cf9e60","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.7.2.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/event-kit/-/event-kit-0.7.2.tgz","readme":"ERROR: No README data found!"}
\ No newline at end of file
diff --git a/atom/.apm/ex-mode/0.5.1/package.tgz b/atom/.apm/ex-mode/0.5.1/package.tgz
new file mode 100644 (file)
index 0000000..8770c16
Binary files /dev/null and b/atom/.apm/ex-mode/0.5.1/package.tgz differ
diff --git a/atom/.apm/ex-mode/0.5.1/package/package.json b/atom/.apm/ex-mode/0.5.1/package/package.json
new file mode 100644 (file)
index 0000000..48fbbfd
--- /dev/null
@@ -0,0 +1 @@
+{"name":"ex-mode","main":"./lib/ex-mode","version":"0.5.1","description":"Ex for Atom's vim-mode","activationCommands":{"atom-workspace":"ex-mode:open"},"repository":{"type":"git","url":"https://github.com/lloeki/ex-mode"},"license":"MIT","engines":{"atom":">=0.200.0 <2.0.0"},"dependencies":{"underscore-plus":"1.x","event-kit":"^0.7.2","space-pen":"^5.1.1","atom-space-pen-views":"^2.0.4"},"consumedServices":{"vim-mode":{"versions":{"^0.1.0":"consumeVim"}}},"providedServices":{"ex-mode":{"description":"Ex commands","versions":{"0.20.0":"provideEx"}}},"readme":"# ex-mode package\n\nex-mode for Atom's vim-mode\n\n## Use\n\nInstall both [vim-mode](https://github.com/atom/vim-mode) and ex-mode. Type `:` in command mode. Enter `w` or `write`.\n\n## Extend\n\nUse the service to register commands, from your own package, or straight from `init.coffee`:\n\n```coffee\n# in Atom's init.coffee\natom.packages.onDidActivatePackage (pack) ->\n  if pack.name == 'ex-mode'\n    Ex = pack.mainModule.provideEx()\n    Ex.registerCommand 'z', -> console.log(\"Zzzzzz...\")\n```\n\nSee `lib/ex.coffee` for some examples commands. Contributions are very welcome!\n\n## Status\n\nGroundwork is done. More ex commands are easy to add and will be coming as time permits and contributions come in.\n\n## License\n\nMIT\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/lloeki/ex-mode/issues"},"homepage":"https://github.com/lloeki/ex-mode","_id":"ex-mode@0.5.1","_shasum":"8af9a669232d55ae62ee5b6d21750e864564a7fe","_resolved":"file:../d-11562-87793-1y2kizp/package.tgz","_from":"../d-11562-87793-1y2kizp/package.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/fs-plus/2.8.1/package.tgz b/atom/.apm/fs-plus/2.8.1/package.tgz
new file mode 100644 (file)
index 0000000..0b46fd0
Binary files /dev/null and b/atom/.apm/fs-plus/2.8.1/package.tgz differ
diff --git a/atom/.apm/fs-plus/2.8.1/package/package.json b/atom/.apm/fs-plus/2.8.1/package/package.json
new file mode 100644 (file)
index 0000000..5722391
--- /dev/null
@@ -0,0 +1 @@
+{"name":"fs-plus","version":"2.8.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"eb4915c02f09427b1bb002b886a9cfc34a262e1f","_id":"fs-plus@2.8.1","_shasum":"60bcae0d2066f4bb4726f23add525dada80630f6","_from":"fs-plus@>=2.5.0 <3.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"60bcae0d2066f4bb4726f23add525dada80630f6","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.8.1.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/fs-plus/-/fs-plus-2.8.1.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/fuzzaldrin/2.1.0/package.tgz b/atom/.apm/fuzzaldrin/2.1.0/package.tgz
new file mode 100644 (file)
index 0000000..10d2031
Binary files /dev/null and b/atom/.apm/fuzzaldrin/2.1.0/package.tgz differ
diff --git a/atom/.apm/fuzzaldrin/2.1.0/package/package.json b/atom/.apm/fuzzaldrin/2.1.0/package/package.json
new file mode 100644 (file)
index 0000000..ac06b33
--- /dev/null
@@ -0,0 +1 @@
+{"name":"fuzzaldrin","version":"2.1.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"coffee benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.7"},"_id":"fuzzaldrin@2.1.0","dist":{"shasum":"90204c3e2fdaa6941bb28d16645d418063a90e9b","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-2.1.0.tgz"},"_from":"fuzzaldrin@>=2.1.0 <3.0.0","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{},"_shasum":"90204c3e2fdaa6941bb28d16645d418063a90e9b","_resolved":"https://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-2.1.0.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/grim/0.12.0/package.tgz b/atom/.apm/grim/0.12.0/package.tgz
new file mode 100644 (file)
index 0000000..665f938
Binary files /dev/null and b/atom/.apm/grim/0.12.0/package.tgz differ
diff --git a/atom/.apm/grim/0.12.0/package/package.json b/atom/.apm/grim/0.12.0/package/package.json
new file mode 100644 (file)
index 0000000..13f7bb9
--- /dev/null
@@ -0,0 +1 @@
+{"name":"grim","version":"0.12.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c24f22a7e415d5d6b695967e341f7fb7aa27d83f","homepage":"https://github.com/atom/grim","_id":"grim@0.12.0","_shasum":"86d4ea11bf57b960688c624878bdc126fe4b7d1b","_from":"grim@>=0.12.0 <0.13.0","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"86d4ea11bf57b960688c624878bdc126fe4b7d1b","tarball":"http://registry.npmjs.org/grim/-/grim-0.12.0.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/grim/-/grim-0.12.0.tgz","readme":"ERROR: No README data found!"}
\ No newline at end of file
diff --git a/atom/.apm/grim/1.4.1/package.tgz b/atom/.apm/grim/1.4.1/package.tgz
new file mode 100644 (file)
index 0000000..074a3d4
Binary files /dev/null and b/atom/.apm/grim/1.4.1/package.tgz differ
diff --git a/atom/.apm/grim/1.4.1/package/package.json b/atom/.apm/grim/1.4.1/package/package.json
new file mode 100644 (file)
index 0000000..9e0621c
--- /dev/null
@@ -0,0 +1 @@
+{"name":"grim","version":"1.4.1","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"dbcb234a130aaef6af1458bfa686f65c5b97690a","homepage":"https://github.com/atom/grim","_id":"grim@1.4.1","_shasum":"bd47bf11823bbfb1fc731914fab51016bea9e677","_from":"grim@>=1.0.0 <2.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"bd47bf11823bbfb1fc731914fab51016bea9e677","tarball":"http://registry.npmjs.org/grim/-/grim-1.4.1.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/grim/-/grim-1.4.1.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/jquery/2.1.4/package.tgz b/atom/.apm/jquery/2.1.4/package.tgz
new file mode 100644 (file)
index 0000000..af2bc2a
Binary files /dev/null and b/atom/.apm/jquery/2.1.4/package.tgz differ
diff --git a/atom/.apm/jquery/2.1.4/package/package.json b/atom/.apm/jquery/2.1.4/package/package.json
new file mode 100644 (file)
index 0000000..1c6ce71
--- /dev/null
@@ -0,0 +1 @@
+{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.4","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.4/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.4/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"2.0.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","jsdom":"1.5.0","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"7751e69b615c6eca6f783a81e292a55725af6b85","_id":"jquery@2.1.4","_shasum":"228bde698a0c61431dc2630a6a154f15890d2317","_from":"jquery@>=2.1.3 <3.0.0","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"timmywil","email":"timmywillisn@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"228bde698a0c61431dc2630a6a154f15890d2317","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/mixto/1.0.0/package.tgz b/atom/.apm/mixto/1.0.0/package.tgz
new file mode 100644 (file)
index 0000000..03db8b9
Binary files /dev/null and b/atom/.apm/mixto/1.0.0/package.tgz differ
diff --git a/atom/.apm/mixto/1.0.0/package/package.json b/atom/.apm/mixto/1.0.0/package/package.json
new file mode 100644 (file)
index 0000000..e48fdc8
--- /dev/null
@@ -0,0 +1 @@
+{"name":"mixto","version":"1.0.0","description":"A mixin superclass. Its subclasses have `.extend` and `.includeInto` methods to mix behavior into other objects and classes.","main":"lib/mixin","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/mixto"},"keywords":["mixin","trait"],"bugs":{"url":"https://github.com/atom/mixto/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/mixto/raw/master/LICENSE.md"}],"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"author":{"name":"Nathan Sobo"},"_id":"mixto@1.0.0","dist":{"shasum":"c320ef61b52f2898f522e17d8bbc6d506d8425b6","tarball":"http://registry.npmjs.org/mixto/-/mixto-1.0.0.tgz"},"_from":"mixto@>=1.0.0 <2.0.0","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{},"_shasum":"c320ef61b52f2898f522e17d8bbc6d506d8425b6","_resolved":"https://registry.npmjs.org/mixto/-/mixto-1.0.0.tgz","readme":"ERROR: No README data found!","homepage":"https://github.com/atom/mixto"}
\ No newline at end of file
diff --git a/atom/.apm/mkdirp/0.3.5/package.tgz b/atom/.apm/mkdirp/0.3.5/package.tgz
new file mode 100644 (file)
index 0000000..29d8571
Binary files /dev/null and b/atom/.apm/mkdirp/0.3.5/package.tgz differ
diff --git a/atom/.apm/mkdirp/0.3.5/package/package.json b/atom/.apm/mkdirp/0.3.5/package/package.json
new file mode 100644 (file)
index 0000000..57455e1
--- /dev/null
@@ -0,0 +1 @@
+{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.3.5","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"http://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"~0.4.0"},"license":"MIT","_id":"mkdirp@0.3.5","dist":{"shasum":"de3e5f8961c88c787ee1368df849ac4413eca8d7","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"},"_from":"mkdirp@>=0.3.5 <0.4.0","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{},"_shasum":"de3e5f8961c88c787ee1368df849ac4413eca8d7","_resolved":"https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/property-accessors/1.1.3/package.tgz b/atom/.apm/property-accessors/1.1.3/package.tgz
new file mode 100644 (file)
index 0000000..eca83de
Binary files /dev/null and b/atom/.apm/property-accessors/1.1.3/package.tgz differ
diff --git a/atom/.apm/property-accessors/1.1.3/package/package.json b/atom/.apm/property-accessors/1.1.3/package/package.json
new file mode 100644 (file)
index 0000000..907a39c
--- /dev/null
@@ -0,0 +1 @@
+{"name":"property-accessors","version":"1.1.3","description":"A mixin for declaring property accessors","main":"lib/property-accessors","scripts":{"test":"grunt test","publish":"grunt"},"repository":{"type":"git","url":"https://github.com/atom/property-accessors"},"keywords":["property","accessors","metaprogramming"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/telepath/raw/master/LICENSE.md"}],"bugs":{"url":"https://github.com/atom/property-accessors/issues"},"homepage":"http://atom.github.io/property-accessors/","dependencies":{"mixto":"1.x","es6-weak-map":"^0.1.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"c90f096dfc8f589ecb8186cadfbfcf97dc5f5cc6","_id":"property-accessors@1.1.3","_shasum":"1dde84024631865909ef30703365680c5f928b15","_from":"property-accessors@>=1.1.0 <2.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"1dde84024631865909ef30703365680c5f928b15","tarball":"http://registry.npmjs.org/property-accessors/-/property-accessors-1.1.3.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/property-accessors/-/property-accessors-1.1.3.tgz","readme":"ERROR: No README data found!"}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/amdefine/.cache.json b/atom/.apm/registry.npmjs.org/amdefine/.cache.json
new file mode 100644 (file)
index 0000000..3505109
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"amdefine","_rev":"22-bd5a8f194ca83bbf018248932e8c7d13","name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.1","homepage":"http://github.com/jrburke/amdefine.js","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"main":"./amdefine.js","engines":{"node":">=0.6.0"},"_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"_id":"amdefine@0.0.1","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"20add952bf0f8941ae2765386c92310679d4a954","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.1.tgz"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.2":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.2","homepage":"http://github.com/jrburke/amdefine.js","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"_id":"amdefine@0.0.2","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"e857fddd8f9f35706d79ea749769260eec8aaf64","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.2.tgz"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.3":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.3","homepage":"http://github.com/jrburke/amdefine.js","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.3","dist":{"shasum":"614a059498baf6145e43b08bd4e9bd03a76d8528","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.3.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.4":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.4","homepage":"http://github.com/jrburke/amdefine.js","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.4","dist":{"shasum":"510e24a0f231314e1105b9c747e79aaed694a0e9","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.4.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.5":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.5","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.5","dist":{"shasum":"86b6e9470f8cde955ef7daa3cf5d544ba81aa3db","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.6":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.6","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.6","dist":{"shasum":"71c4fa15af79f48f0f9ecb6f76e59ef56cfa9e11","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.6.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.7":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.7","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.7","dist":{"shasum":"701b674496bcb16aa2edb8db232b7f9c9332d3c8","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.7.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.0.8":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.0.8","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"_id":"amdefine@0.0.8","dist":{"shasum":"34dc8c981e6acb3be1853bef8f0ec94a39d55ba0","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.0.8.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.1.0":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.1.0","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"licenses":[{"type":"BSD","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"},{"type":"MIT","url":"https://github.com/jrburke/amdefine/blob/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"bugs":{"url":"https://github.com/jrburke/amdefine/issues"},"_id":"amdefine@0.1.0","dist":{"shasum":"3ca9735cf1dde0edf7a4bf6641709c8024f9b227","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"directories":{}},"0.1.1":{"name":"amdefine","description":"Provide AMD's define() API for declaring modules in the AMD format","version":"0.1.1","homepage":"http://github.com/jrburke/amdefine","author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"license":"BSD-3-Clause AND MIT","repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"main":"./amdefine.js","engines":{"node":">=0.4.2"},"gitHead":"fcadcc8080f47084b973bac3b3c4b3dd3e0f957d","bugs":{"url":"https://github.com/jrburke/amdefine/issues"},"_id":"amdefine@0.1.1","scripts":{},"_shasum":"b5c75c532052dccd6a39c0064c772c8d57a06cd2","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jrburke","email":"jrburke@gmail.com"},"maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"dist":{"shasum":"b5c75c532052dccd6a39c0064c772c8d57a06cd2","tarball":"http://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz"},"directories":{}}},"readme":"# amdefine\n\nA module that can be used to implement AMD's define() in Node. This allows you\nto code to the AMD API and have the module work in node programs without\nrequiring those other programs to use AMD.\n\n## Usage\n\n**1)** Update your package.json to indicate amdefine as a dependency:\n\n```javascript\n    \"dependencies\": {\n        \"amdefine\": \">=0.1.0\"\n    }\n```\n\nThen run `npm install` to get amdefine into your project.\n\n**2)** At the top of each module that uses define(), place this code:\n\n```javascript\nif (typeof define !== 'function') { var define = require('amdefine')(module) }\n```\n\n**Only use these snippets** when loading amdefine. If you preserve the basic structure,\nwith the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer).\n\nYou can add spaces, line breaks and even require amdefine with a local path, but\nkeep the rest of the structure to get the stripping behavior.\n\nAs you may know, because `if` statements in JavaScript don't have their own scope, the var\ndeclaration in the above snippet is made whether the `if` expression is truthy or not. If\nRequireJS is loaded then the declaration is superfluous because `define` is already already\ndeclared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var`\ndeclarations of the same variable in the same scope gracefully.\n\nIf you want to deliver amdefine.js with your code rather than specifying it as a dependency\nwith npm, then just download the latest release and refer to it using a relative path:\n\n[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js)\n\n### amdefine/intercept\n\nConsider this very experimental.\n\nInstead of pasting the piece of text for the amdefine setup of a `define`\nvariable in each module you create or consume, you can use `amdefine/intercept`\ninstead. It will automatically insert the above snippet in each .js file loaded\nby Node.\n\n**Warning**: you should only use this if you are creating an application that\nis consuming AMD style defined()'d modules that are distributed via npm and want\nto run that code in Node.\n\nFor library code where you are not sure if it will be used by others in Node or\nin the browser, then explicitly depending on amdefine and placing the code\nsnippet above is suggested path, instead of using `amdefine/intercept`. The\nintercept module affects all .js files loaded in the Node app, and it is\ninconsiderate to modify global state like that unless you are also controlling\nthe top level app.\n\n#### Why distribute AMD-style modules via npm?\n\nnpm has a lot of weaknesses for front-end use (installed layout is not great,\nshould have better support for the `baseUrl + moduleID + '.js' style of loading,\nsingle file JS installs), but some people want a JS package manager and are\nwilling to live with those constraints. If that is you, but still want to author\nin AMD style modules to get dynamic require([]), better direct source usage and\npowerful loader plugin support in the browser, then this tool can help.\n\n#### amdefine/intercept usage\n\nJust require it in your top level app module (for example index.js, server.js):\n\n```javascript\nrequire('amdefine/intercept');\n```\n\nThe module does not return a value, so no need to assign the result to a local\nvariable.\n\nThen just require() code as you normally would with Node's require(). Any .js\nloaded after the intercept require will have the amdefine check injected in\nthe .js source as it is loaded. It does not modify the source on disk, just\nprepends some content to the text of the module as it is loaded by Node.\n\n#### How amdefine/intercept works\n\nIt overrides the `Module._extensions['.js']` in Node to automatically prepend\nthe amdefine snippet above. So, it will affect any .js file loaded by your\napp.\n\n## define() usage\n\nIt is best if you use the anonymous forms of define() in your module:\n\n```javascript\ndefine(function (require) {\n    var dependency = require('dependency');\n});\n```\n\nor\n\n```javascript\ndefine(['dependency'], function (dependency) {\n\n});\n```\n\n## RequireJS optimizer integration. <a name=\"optimizer\"></name>\n\nVersion 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html)\nwill have support for stripping the `if (typeof define !== 'function')` check\nmentioned above, so you can include this snippet for code that runs in the\nbrowser, but avoid taking the cost of the if() statement once the code is\noptimized for deployment.\n\n## Node 0.4 Support\n\nIf you want to support Node 0.4, then add `require` as the second parameter to amdefine:\n\n```javascript\n//Only if you want Node 0.4. If using 0.5 or later, use the above snippet.\nif (typeof define !== 'function') { var define = require('amdefine')(module, require) }\n```\n\n## Limitations\n\n### Synchronous vs Asynchronous\n\namdefine creates a define() function that is callable by your code. It will\nexecute and trace dependencies and call the factory function *synchronously*,\nto keep the behavior in line with Node's synchronous dependency tracing.\n\nThe exception: calling AMD's callback-style require() from inside a factory\nfunction. The require callback is called on process.nextTick():\n\n```javascript\ndefine(function (require) {\n    require(['a'], function(a) {\n        //'a' is loaded synchronously, but\n        //this callback is called on process.nextTick().\n    });\n});\n```\n\n### Loader Plugins\n\nLoader plugins are supported as long as they call their load() callbacks\nsynchronously. So ones that do network requests will not work. However plugins\nlike [text](http://requirejs.org/docs/api.html#text) can load text files locally.\n\nThe plugin API's `load.fromText()` is **not supported** in amdefine, so this means\ntranspiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs)\nwill not work. This may be fixable, but it is a bit complex, and I do not have\nenough node-fu to figure it out yet. See the source for amdefine.js if you want\nto get an idea of the issues involved.\n\n## Tests\n\nTo run the tests, cd to **tests** and run:\n\n```\nnode all.js\nnode all-intercept.js\n```\n\n## License\n\nNew BSD and MIT. Check the LICENSE file for all the details.\n","maintainers":[{"name":"jrburke","email":"jrburke@gmail.com"}],"time":{"modified":"2015-06-08T21:00:25.583Z","created":"2011-12-10T01:16:02.521Z","0.0.1":"2011-12-10T01:16:03.912Z","0.0.2":"2012-02-28T22:11:53.033Z","0.0.3":"2012-10-15T00:18:41.972Z","0.0.4":"2012-10-15T05:02:38.640Z","0.0.5":"2013-05-08T17:30:15.875Z","0.0.6":"2013-08-02T18:39:56.943Z","0.0.7":"2013-08-03T01:16:01.971Z","0.0.8":"2013-08-03T06:43:30.058Z","0.1.0":"2013-10-15T04:52:41.100Z","0.1.1":"2015-06-08T21:00:25.583Z"},"author":{"name":"James Burke","email":"jrburke@gmail.com","url":"http://github.com/jrburke"},"repository":{"type":"git","url":"https://github.com/jrburke/amdefine.git"},"users":{"nate-wilkins":true,"subchen":true},"homepage":"http://github.com/jrburke/amdefine","bugs":{"url":"https://github.com/jrburke/amdefine/issues"},"license":"BSD-3-Clause AND MIT","readmeFilename":"README.md","_attachments":{},"_etag":"\"4YYSFNXID9MUWP27KTSW2EKU8\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/async/.cache.json b/atom/.apm/registry.npmjs.org/async/.cache.json
new file mode 100644 (file)
index 0000000..94e3710
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"async","_rev":"808-cd6d219de76ed2d420d3df80eaca91cf","name":"async","description":"Higher-order functions and common patterns for asynchronous code","dist-tags":{"latest":"1.3.0"},"versions":{"0.1.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.0","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.0.tgz","shasum":"ab8ece0c40627e4e8f0e09c8fcf7c19ed0c4241c"},"directories":{}},"0.1.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.1","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.1.tgz","shasum":"fb965e70dbea44c8a4b8a948472dee7d27279d5e"},"directories":{}},"0.1.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.2","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.2.tgz","shasum":"be761882a64d3dc81a669f9ee3d5c28497382691"},"directories":{}},"0.1.3":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.3","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.3.tgz","shasum":"629ca2357112d90cafc33872366b14f2695a1fbc"},"directories":{}},"0.1.4":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.4","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.4","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.4.tgz","shasum":"29de4b98712ab8858411d8d8e3361a986c3b2c18"},"directories":{}},"0.1.5":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.5","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.5","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.5.tgz","shasum":"9d83e3d4adb9c962fc4a30e7dd04bf1206c28ea5"},"directories":{}},"0.1.6":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.6","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.6","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.6.tgz","shasum":"2dfb4fa1915f86056060c2e2f35a7fb8549907cc"},"directories":{}},"0.1.7":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.7","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.7","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.4-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.7.tgz","shasum":"e9268d0d8cd8dcfe0db0895b27dcc4bcc5c739a5"},"directories":{}},"0.1.8":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.8","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.8","engines":{"node":"*"},"_nodeSupported":true,"dist":{"tarball":"http://registry.npmjs.org/async/-/async-0.1.8.tgz","shasum":"52f2df6c0aa6a7f8333e1fbac0fbd93670cf6758"},"directories":{}},"0.1.9":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.9","repository":{"type":"git","url":"git://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"}],"dependencies":{},"devDependencies":{},"_id":"async@0.1.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.1rc7","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"f984d0739b5382c949cc3bea702d21d0dbd52040","tarball":"http://registry.npmjs.org/async/-/async-0.1.9.tgz"},"directories":{}},"0.1.10":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.10","repository":{"type":"git","url":"git://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"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.10/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.10","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"12b32bf098fa7fc51ae3ac51441b8ba15f437cf1","tarball":"http://registry.npmjs.org/async/-/async-0.1.10.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.11":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.11","repository":{"type":"git","url":"git://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"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.11/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.11","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"a397a69c6febae232d20a76a5b10d8742e2b8215","tarball":"http://registry.npmjs.org/async/-/async-0.1.11.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.12":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.12","repository":{"type":"git","url":"git://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"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.12/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.12","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"ab36be6611dc63d91657128e1d65102b959d4afe","tarball":"http://registry.npmjs.org/async/-/async-0.1.12.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.13":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.13","repository":{"type":"git","url":"git://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"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.13","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"f1e53ad69dab282d8e75cbec5e2c5524b6195eab","tarball":"http://registry.npmjs.org/async/-/async-0.1.13.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.14":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.14","repository":{"type":"git","url":"git://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"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.14","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"0fcfaf089229fc657798203d1a4544102f7d26dc","tarball":"http://registry.npmjs.org/async/-/async-0.1.14.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.15":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.15","repository":{"type":"git","url":"git://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"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.15","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"2180eaca2cf2a6ca5280d41c0585bec9b3e49bd3","tarball":"http://registry.npmjs.org/async/-/async-0.1.15.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.16":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.16","repository":{"type":"git","url":"git://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"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.16","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"b3a61fdc1a9193d4f64755c7600126e254223186","tarball":"http://registry.npmjs.org/async/-/async-0.1.16.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.17":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.17","repository":{"type":"git","url":"git://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"}],"dependencies":{"uglify-js":"1.2.x"},"devDependencies":{"nodeunit":">0.0.0","nodelint":">0.0.0"},"scripts":{"preinstall":"make clean","install":"make build","test":"make test"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.17","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"03524a379e974dc9ee5c811c6ee3815d7bc54f6e","tarball":"http://registry.npmjs.org/async/-/async-0.1.17.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.18":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.18","repository":{"type":"git","url":"git://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"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.18","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"c59c923920b76d5bf23248c04433920c4d45086a","tarball":"http://registry.npmjs.org/async/-/async-0.1.18.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.19":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.19","repository":{"type":"git","url":"git://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"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.19","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"4fd6125a70f841fb10b14aeec6e23cf1479c71a7","tarball":"http://registry.npmjs.org/async/-/async-0.1.19.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.20":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.20","repository":{"type":"git","url":"git://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"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.20","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ba0e47b08ae972e04b5215de28539b313482ede5","tarball":"http://registry.npmjs.org/async/-/async-0.1.20.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.21":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.21","repository":{"type":"git","url":"git://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"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.21","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b5b12e985f09ab72c202fa00f623cd9d997e9464","tarball":"http://registry.npmjs.org/async/-/async-0.1.21.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.22":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.22","repository":{"type":"git","url":"git://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"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.22","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061","tarball":"http://registry.npmjs.org/async/-/async-0.1.22.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.0","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"},"_id":"async@0.2.0","dist":{"shasum":"db1c645337bab79d0ca93d95f5c72d9605be0fce","tarball":"http://registry.npmjs.org/async/-/async-0.2.0.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.1","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"},"_id":"async@0.2.1","dist":{"shasum":"4e37d08391132f79657a99ca73aa4eb471a6f771","tarball":"http://registry.npmjs.org/async/-/async-0.2.1.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.2","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"]},"_id":"async@0.2.2","dist":{"shasum":"8414ee47da7548126b4d3d923850d54e68a72b28","tarball":"http://registry.npmjs.org/async/-/async-0.2.2.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.3":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.3","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"]},"_id":"async@0.2.3","dist":{"shasum":"79bf601d723a2e8c3e91cb6bb08f152dca309fb3","tarball":"http://registry.npmjs.org/async/-/async-0.2.3.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.4":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.4","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"]},"_id":"async@0.2.4","dist":{"shasum":"0550e510cf43b83e2fcf1cb96399f03f1efd50eb","tarball":"http://registry.npmjs.org/async/-/async-0.2.4.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.5":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.5","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"]},"_id":"async@0.2.5","dist":{"shasum":"45f05da480749ba4c1dcd8cd3a3747ae7b36fe52","tarball":"http://registry.npmjs.org/async/-/async-0.2.5.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.6":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"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"},"_id":"async@0.2.6","dist":{"shasum":"ad3f373d9249ae324881565582bc90e152abbd68","tarball":"http://registry.npmjs.org/async/-/async-0.2.6.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.7":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.7","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"},"_id":"async@0.2.7","dist":{"shasum":"44c5ee151aece6c4bf5364cfc7c28fe4e58f18df","tarball":"http://registry.npmjs.org/async/-/async-0.2.7.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.8":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.8","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"},"_id":"async@0.2.8","dist":{"shasum":"ba1b3ffd1e6cdb1e999aca76ef6ecee8e7f55f53","tarball":"http://registry.npmjs.org/async/-/async-0.2.8.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.9":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.9","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"_id":"async@0.2.9","dist":{"shasum":"df63060fbf3d33286a76aaf6d55a2986d9ff8619","tarball":"http://registry.npmjs.org/async/-/async-0.2.9.tgz"},"_from":".","_npmVersion":"1.2.23","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.10":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.10","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"_id":"async@0.2.10","dist":{"shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","tarball":"http://registry.npmjs.org/async/-/async-0.2.10.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.3.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.3.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"homepage":"https://github.com/caolan/async","_id":"async@0.3.0","dist":{"shasum":"6d2c543c25f514c602bb22916ac222a519290d5d","tarball":"http://registry.npmjs.org/async/-/async-0.3.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.4.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.4.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"homepage":"https://github.com/caolan/async","_id":"async@0.4.0","dist":{"shasum":"208bba02850129dacc2bc3959e4126570ae80b74","tarball":"http://registry.npmjs.org/async/-/async-0.4.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.4.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.4.1","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"homepage":"https://github.com/caolan/async","_id":"async@0.4.1","dist":{"shasum":"1985abade017df906bfaa8d77d424b25366b3a5b","tarball":"http://registry.npmjs.org/async/-/async-0.4.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.5.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.5.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"homepage":"https://github.com/caolan/async","_id":"async@0.5.0","dist":{"shasum":"524bc1cf3ed2b6adc7f4a8c4987dd9c4809c764f","tarball":"http://registry.npmjs.org/async/-/async-0.5.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.6.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.6.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"homepage":"https://github.com/caolan/async","_id":"async@0.6.0","dist":{"shasum":"025a31c8b1fb11e7481fa18dbdbc2bf2e434933a","tarball":"http://registry.npmjs.org/async/-/async-0.6.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.6.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.6.1","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"homepage":"https://github.com/caolan/async","_id":"async@0.6.1","dist":{"shasum":"594fe360968fcdd2d7e0a6d95a874e4e92c7a26d","tarball":"http://registry.npmjs.org/async/-/async-0.6.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.6.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.6.2","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"homepage":"https://github.com/caolan/async","_id":"async@0.6.2","dist":{"shasum":"41fd038a3812c0a8bc1842ecf08ba63eb0392bef","tarball":"http://registry.npmjs.org/async/-/async-0.6.2.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.7.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.7.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"homepage":"https://github.com/caolan/async","_id":"async@0.7.0","dist":{"shasum":"4429e0e62f5de0a54f37458c49f0b897eb52ada5","tarball":"http://registry.npmjs.org/async/-/async-0.7.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.8.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.8.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"homepage":"https://github.com/caolan/async","_id":"async@0.8.0","dist":{"shasum":"ee65ec77298c2ff1456bc4418a052d0f06435112","tarball":"http://registry.npmjs.org/async/-/async-0.8.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.9.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.9.0","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://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"},"homepage":"https://github.com/caolan/async","_id":"async@0.9.0","dist":{"shasum":"ac3613b1da9bed1b47510bb4651b8931e47146c7","tarball":"http://registry.npmjs.org/async/-/async-0.9.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.9.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"0.9.2","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0","lodash":">=2.4.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"nodeunit test/test-async.js"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"de3a16091d5125384eff4a54deb3998b13c3814c","homepage":"https://github.com/caolan/async#readme","_id":"async@0.9.2","_shasum":"aea74d5e61c1f899613bf64bda66d4c78f2fd17d","_from":".","_npmVersion":"2.9.0","_nodeVersion":"2.0.1","_npmUser":{"name":"beaugunderson","email":"beau@beaugunderson.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"}],"dist":{"shasum":"aea74d5e61c1f899613bf64bda66d4c78f2fd17d","tarball":"http://registry.npmjs.org/async/-/async-0.9.2.tgz"},"directories":{}},"1.0.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.0.0","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"~1.0.0","jshint":"~2.7.0","lodash":">=2.4.1","mkdirp":"~0.5.1","nodeunit":">0.0.0","uglify-js":"1.2.x"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"cfa81645c9cb4011b23d1d1a445ad855762568e0","homepage":"https://github.com/caolan/async#readme","_id":"async@1.0.0","_shasum":"f8fc04ca3a13784ade9e1641af98578cfbd647a9","_from":".","_npmVersion":"2.9.1","_nodeVersion":"0.12.3","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"f8fc04ca3a13784ade9e1641af98578cfbd647a9","tarball":"http://registry.npmjs.org/async/-/async-1.0.0.tgz"},"directories":{}},"1.1.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.1.0","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"github:bestiejs/benchmark.js","coveralls":"^2.11.2","jshint":"~2.7.0","lodash":">=2.4.1","mkdirp":"~0.5.1","nodeunit":">0.0.0","nyc":"^2.1.0","uglify-js":"1.2.x","yargs":"~3.9.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js","coverage":"nyc npm test && nyc report","coveralls":"nyc npm test && nyc report --reporter=text-lcov | coveralls"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"88906aa60d407e12185139e86204aa63aa6faf28","homepage":"https://github.com/caolan/async#readme","_id":"async@1.1.0","_shasum":"2b33ea3e87fc0c5ed624f9e31a9c902c022da09b","_from":".","_npmVersion":"2.9.1","_nodeVersion":"0.12.3","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"2b33ea3e87fc0c5ed624f9e31a9c902c022da09b","tarball":"http://registry.npmjs.org/async/-/async-1.1.0.tgz"},"directories":{}},"1.2.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.2.0","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"github:bestiejs/benchmark.js","coveralls":"^2.11.2","jshint":"~2.7.0","lodash":">=2.4.1","mkdirp":"~0.5.1","nodeunit":">0.0.0","nyc":"^2.1.0","uglify-js":"1.2.x","yargs":"~3.9.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js","coverage":"nyc npm test && nyc report","coveralls":"nyc npm test && nyc report --reporter=text-lcov | coveralls"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"ff3bd90be6b862a11d0e4a11eb72a6985c26c5af","homepage":"https://github.com/caolan/async#readme","_id":"async@1.2.0","_shasum":"9029580f93d05a7cab24f502c84707ac3ef57b10","_from":".","_npmVersion":"2.9.0","_nodeVersion":"2.0.2","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"9029580f93d05a7cab24f502c84707ac3ef57b10","tarball":"http://registry.npmjs.org/async/-/async-1.2.0.tgz"},"directories":{}},"1.1.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.1.1","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"github:bestiejs/benchmark.js","coveralls":"^2.11.2","jshint":"~2.7.0","lodash":">=2.4.1","mkdirp":"~0.5.1","nodeunit":">0.0.0","nyc":"^2.1.0","uglify-js":"1.2.x","yargs":"~3.9.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js","coverage":"nyc npm test && nyc report","coveralls":"nyc npm test && nyc report --reporter=text-lcov | coveralls"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"46cbdfd5324be57f15481bee32ad0fda507171b0","homepage":"https://github.com/caolan/async#readme","_id":"async@1.1.1","_shasum":"753cb13df043ff08d810e4418d312d646ee1bbea","_from":".","_npmVersion":"2.9.0","_nodeVersion":"2.0.2","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"753cb13df043ff08d810e4418d312d646ee1bbea","tarball":"http://registry.npmjs.org/async/-/async-1.1.1.tgz"},"directories":{}},"1.2.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.2.1","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"github:bestiejs/benchmark.js","coveralls":"^2.11.2","jshint":"~2.7.0","lodash":">=2.4.1","mkdirp":"~0.5.1","nodeunit":">0.0.0","nyc":"^2.1.0","uglify-js":"1.2.x","yargs":"~3.9.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js","coverage":"nyc npm test && nyc report","coveralls":"nyc npm test && nyc report --reporter=text-lcov | coveralls"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"b66e85d1cca8c8056313253f22d18f571e7001d2","homepage":"https://github.com/caolan/async#readme","_id":"async@1.2.1","_shasum":"a4816a17cd5ff516dfa2c7698a453369b9790de0","_from":".","_npmVersion":"2.9.0","_nodeVersion":"2.0.2","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"a4816a17cd5ff516dfa2c7698a453369b9790de0","tarball":"http://registry.npmjs.org/async/-/async-1.2.1.tgz"},"directories":{}},"1.3.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"lib/async.js","author":{"name":"Caolan McMahon"},"version":"1.3.0","keywords":["async","callback","utility","module"],"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"license":"MIT","devDependencies":{"benchmark":"github:bestiejs/benchmark.js","coveralls":"^2.11.2","jshint":"~2.8.0","lodash":"^3.9.0","mkdirp":"~0.5.1","nodeunit":">0.0.0","nyc":"^2.1.0","uglify-js":"~2.4.0","xyz":"^0.5.0","yargs":"~3.9.1"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"],"categories":["Utilities"]},"scripts":{"test":"npm run-script lint && nodeunit test/test-async.js","lint":"jshint lib/*.js test/*.js perf/*.js","coverage":"nyc npm test && nyc report","coveralls":"nyc npm test && nyc report --reporter=text-lcov | coveralls"},"spm":{"main":"lib/async.js"},"volo":{"main":"lib/async.js","ignore":["**/.*","node_modules","bower_components","test","tests"]},"gitHead":"71fa2638973dafd8761fa5457c472a312cc820fe","homepage":"https://github.com/caolan/async#readme","_id":"async@1.3.0","_shasum":"a6f1631e8a595a663496d0a5586bd12007d4871d","_from":".","_npmVersion":"2.9.1","_nodeVersion":"0.12.3","_npmUser":{"name":"aearly","email":"alexander.early@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"dist":{"shasum":"a6f1631e8a595a663496d0a5586bd12007d4871d","tarball":"http://registry.npmjs.org/async/-/async-1.3.0.tgz"},"directories":{}}},"maintainers":[{"name":"caolan","email":"caolan.mcmahon@gmail.com"},{"name":"beaugunderson","email":"beau@beaugunderson.com"},{"name":"aearly","email":"alexander.early@gmail.com"}],"author":{"name":"Caolan McMahon"},"repository":{"type":"git","url":"git+https://github.com/caolan/async.git"},"time":{"modified":"2015-06-29T16:14:01.899Z","created":"2010-12-19T16:41:51.765Z","0.1.0":"2010-12-19T16:41:51.765Z","0.1.1":"2010-12-19T16:41:51.765Z","0.1.2":"2010-12-19T16:41:51.765Z","0.1.3":"2010-12-19T16:41:51.765Z","0.1.4":"2010-12-19T16:41:51.765Z","0.1.5":"2010-12-19T16:41:51.765Z","0.1.6":"2010-12-19T16:41:51.765Z","0.1.7":"2010-12-19T16:41:51.765Z","0.1.8":"2011-01-18T09:56:53.975Z","0.1.9":"2011-04-27T20:48:08.634Z","0.1.10":"2011-09-19T04:40:01.573Z","0.1.11":"2011-10-14T17:07:28.752Z","0.1.12":"2011-10-14T17:19:19.452Z","0.1.13":"2011-10-29T22:33:52.448Z","0.1.14":"2011-10-29T22:40:14.486Z","0.1.15":"2011-11-01T23:05:01.415Z","0.1.16":"2012-02-13T04:56:23.926Z","0.1.17":"2012-02-27T02:40:58.997Z","0.1.18":"2012-02-27T16:51:02.109Z","0.1.19":"2012-05-24T06:51:06.109Z","0.1.20":"2012-05-24T06:53:39.997Z","0.1.21":"2012-05-24T07:16:16.753Z","0.1.22":"2012-05-30T18:26:44.821Z","0.1.23":"2012-10-04T13:52:08.947Z","0.2.0":"2013-02-04T11:38:08.943Z","0.2.1":"2013-02-04T11:52:34.110Z","0.2.2":"2013-02-05T15:55:23.202Z","0.2.3":"2013-02-06T12:48:37.415Z","0.2.4":"2013-02-07T17:26:22.236Z","0.2.5":"2013-02-10T22:42:00.162Z","0.2.6":"2013-03-03T11:29:52.674Z","0.2.7":"2013-04-09T20:50:04.712Z","0.2.8":"2013-05-01T10:04:07.430Z","0.2.9":"2013-05-28T07:50:48.795Z","0.2.10":"2014-01-23T16:23:57.271Z","0.3.0":"2014-03-28T17:16:05.640Z","0.4.0":"2014-03-28T17:25:12.580Z","0.4.1":"2014-03-30T11:42:54.298Z","0.5.0":"2014-03-30T11:46:31.381Z","0.6.0":"2014-03-30T12:04:32.275Z","0.6.1":"2014-03-30T20:35:32.550Z","0.6.2":"2014-03-31T09:56:20.294Z","0.7.0":"2014-04-07T09:07:34.303Z","0.8.0":"2014-04-29T15:26:34.028Z","0.9.0":"2014-05-16T10:20:22.247Z","0.9.2":"2015-05-19T08:45:57.198Z","1.0.0":"2015-05-20T23:40:05.710Z","1.1.0":"2015-06-01T07:59:05.989Z","1.2.0":"2015-06-02T20:56:04.526Z","1.1.1":"2015-06-08T01:26:56.285Z","1.2.1":"2015-06-08T01:43:33.907Z","1.3.0":"2015-06-29T16:14:01.899Z"},"users":{"thejh":true,"avianflu":true,"dylang":true,"ragingwind":true,"mvolkmann":true,"mikl":true,"linus":true,"pvorb":true,"dodo":true,"danielr":true,"suor":true,"dolphin278":true,"kurijov":true,"langpavel":true,"alexindigo":true,"fgribreau":true,"hughsk":true,"pid":true,"tylerstalder":true,"gillesruppert":true,"coiscir":true,"xenomuta":true,"jgoodall":true,"jswartwood":true,"drudge":true,"cpsubrian":true,"joeferner":true,"bencevans":true,"Scryptonite":true,"damonoehlman":true,"glukki":true,"tivac":true,"shama":true,"gimenete":true,"bryanburgers":true,"hij1nx":true,"sandeepmistry":true,"minddiaper":true,"fiws":true,"ljharb":true,"popeindustries":true,"dbrockman":true,"eknkc":true,"booyaa":true,"afc163":true,"maxmaximov":true,"meryn":true,"hfcorriez":true,"hyqhyq_3":true,"zonetti":true,"cmilhench":true,"cparker15":true,"jfromaniello":true,"ExxKA":true,"devoidfury":true,"cedrickchee":true,"niftymonkey":true,"paulj":true,"leesei":true,"jamesmgreene":true,"igorissen":true,"zaphod1984":true,"moonpyk":true,"joliva":true,"netroy":true,"chrisweb":true,"cuprobot":true,"tmaximini":true,"lupomontero":true,"john.pinch":true,"everywhere.js":true,"frankblizzard":true,"alanshaw":true,"forivall":true,"kubakubula":true,"doliveira":true,"dstokes":true,"pana":true,"irae":true,"mhaidarh":true,"feross":true,"tetsu3a":true,"qubyte":true,"darosh":true,"pragmadash":true,"denisix":true,"samuelrn":true,"tigefa":true,"tcrowe":true,"tpwk":true,"eins78":true,"sierrasoftworks":true,"yoavf":true,"irakli":true,"hypergeometric":true,"gammasoft":true,"youxiachai":true,"kahboom":true,"elisee":true,"soroush":true,"thomas-so":true,"shenaor":true,"dannynemer":true,"paulomcnally":true,"timur.shemsedinov":true,"slianfeng":true,"ettalea":true,"mananvaghasiya":true,"daniel7912":true,"themiddleman":true,"jacques":true,"kerimdzhanov":true,"jorgemsrs":true,"ivandimanov":true,"vegera":true,"aselzer":true,"kentcdodds":true,"putaoshu":true,"cilindrox":true,"bezoerb":true,"leodutra":true,"mpcref":true,"green_goo":true,"crimeminister":true,"rrobayna":true,"tengisb":true,"johannestegner":true,"iisii":true,"nate-wilkins":true,"hankeypancake":true,"sironfoot":true,"seldo":true,"skipzero":true,"owenlancaster":true,"esundahl":true,"zeusdeux":true,"ajduke":true,"darryl.west":true,"noder":true,"projectweekend":true,"alejonext":true,"evkline":true,"horaci":true,"h2non":true,"tarcio":true,"lucasbrigida":true,"roboterhund87":true,"nbu":true,"biggora":true,"junajan":true,"huoshaolin":true,"netzzwerg":true,"fmm":true,"redbe4rd":true,"codeshrew":true,"stonestyle":true,"caligone":true,"nswbmw":true,"landau":true,"progmer":true,"lucasjans":true,"gabeio":true,"beyoung":true,"davidhalldor":true,"cwonrails":true,"cocopas":true,"jayharris":true,"rckbt":true,"hut":true,"lobodpav":true,"alinex":true,"morishitter":true,"joost":true,"mmierswa":true,"skilbjo":true,"topcloud":true,"imzack":true,"runningtalus":true,"toogle":true,"gyoridavid":true,"humantriangle":true,"pospi":true,"sampsa":true,"z3a":true,"andre_de_souza":true,"wayneashleyberry":true,"vitaliks":true,"mikend":true,"gmturbo":true,"juriwiens":true,"ksnieck":true,"brentonhouse":true,"axelav":true,"jbdoumenjou":true,"shen-weizhong":true,"tmn":true,"gaborsar":true,"nromano":true,"chaowi":true,"jaredvogt":true,"timsmiths":true,"zckrs":true,"agent_9191":true,"djbrandl":true,"edalorzo":true,"jakub.knejzlik":true,"robertwarrengilmore":true,"trylobot":true,"oroce":true,"nak2k":true,"piron_t":true,"bmpvieira":true,"joshmu":true,"davidrlee":true,"adityabakle":true,"wilbeibi":true,"ramanshalupau":true,"dizlexik":true,"cbarrick":true,"janez89":true,"frk1705":true,"travelingtechguy":true,"thitinun":true,"shatting":true,"pilsy":true,"quadroid":true,"fanchangyong":true,"tchey":true,"arrc":true,"h02e56":true,"strangemother":true,"tmypawa":true,"ioncreature":true,"japh":true,"tonijz":true,"syzer":true,"nodecode":true,"dercoder":true,"leighakin":true,"matteospampani":true,"redmed":true,"s-konrad":true,"boustanihani":true,"ricardofbarros":true,"ryanthejuggler":true,"mswanson1524":true,"alnafie":true,"truongpv":true,"tjwebb":true,"daviddias":true,"nbarr":true,"ajohnstone":true,"atd":true,"tommyjs7":true,"omardelarosa":true,"rifaqat":true,"tsangint":true,"cortys":true,"mbildner":true,"yourhoneysky":true,"fill":true,"dennisgnl":true,"fampinheiro":true,"anilcs0405":true,"mathiasm":true,"benpptung":true,"thebearingedge":true,"leon.domingo":true,"hemphillcc":true,"jits":true,"tcauduro":true,"gorbiz":true,"guumaster":true,"brandonb927":true,"nornalbion":true,"loselovegirl":true,"lucag":true,"dilterporto":true,"wilk":true,"karmadude":true,"henryfour":true,"iaincollins":true,"louxiaojian":true,"jotadeveloper":true,"cyberien":true,"atheken":true,"lebowitz":true,"orion-":true,"thebespokepixel":true,"hecto932":true,"denmerc":true,"rpgreen":true,"colwob":true,"shieldax":true,"8bitalex":true,"memoramirez":true,"liushuping":true,"ciroque":true,"jugyo":true,"mjurincic":true,"flaviodelbianco":true,"thealphanerd":true,"samanthagmccormick":true,"trycatch9264":true,"tomi77":true,"lezuse":true,"oncletom":true,"kewin":true,"l0n9h02n":true,"sasquatch":true,"manny":true,"wxnet":true,"ruffle1986":true,"danestuckel":true,"krisbarrett":true,"tur-nr":true,"danielhuisman":true,"byossarian":true,"joshwyatt":true,"lellansin":true,"evandrix":true,"gautam.mehra762":true,"dominik.palo":true,"dgarlitt":true,"woverton":true,"legacy":true,"paulpdaniels":true,"congcong":true,"trusktr":true,"jcreigno":true,"jsolis":true,"avinashkoyyana":true,"nfd":true,"yvesm":true,"yoavniran":true,"silentcloud":true,"ivangaravito":true,"otrlennon":true,"terkelg":true,"jgubo":true,"jshkurti":true,"ryanj":true,"pensierinmusica":true,"mihaiv":true,"swak":true,"cath":true,"gdbtek":true,"adomvris":true,"hash-bang":true,"dearyhud":true,"themanspeaker":true,"shahzaib":true,"yerke":true,"gigerlin":true,"mastayoda":true,"cgfeel":true,"ashkyd":true,"schroeterm":true,"kasperstuck":true,"thorsson":true,"raksa":true,"patrick":true,"genediazjr":true,"hollobit":true,"rgraves90":true,"yeahoffline":true,"kenjisan4u":true,"tgohn":true,"tedyhy":true,"frakti":true,"minichiello":true,"johnnyeven":true,"tomas-sereikis":true,"fyockm":true,"dormi330":true,"eterna2":true,"cdubois":true,"mnemr":true,"yvanscher":true,"thomask33":true,"chehow":true,"chzhewl":true,"jezzalaycock":true,"pumych":true,"marsup":true,"javimaravillas":true,"sushant711":true,"robftw":true,"elliotchong":true,"f124275809":true,"wangnan0610":true,"lazycoder":true,"chrisayn":true,"uniquerockrz":true,"r3nya":true,"cellule":true,"leonning":true,"meme":true,"adamk":true,"salvatorelab":true,"kerry95":true,"stuligan":true,"dlpowless":true,"goblindegook":true,"davidcz":true,"nachbar90":true,"haeck":true,"pnevares":true,"markthethomas":true,"kikar":true,"blakedietz":true,"drdanryan":true,"saidgeek":true,"melvingruesbeck":true,"atonb117":true,"theodor.lindekaer":true,"vchouhan":true,"kulakowka":true,"schnarald":true,"samhwang1990":true,"lyaotian":true,"joeyblue":true,"kbeaulieu":true,"igorkirey":true,"sahilsk":true,"manxisuo":true,"mnlfischer":true,"dmitrymatveev":true,"alejcerro":true,"goodseller":true,"samhou1988":true,"tophsic":true,"docksteaderluke":true,"harutlc":true,"vboctor":true,"alexey_detr":true,"marianboda":true,"jerome.d.russ":true,"warapitiya":true,"snehlsen":true,"techmatt101":true,"nicolasmccurdy":true,"koulmomo":true,"d4nyll":true,"huarse":true,"savostin":true,"nadimix":true,"leodido":true,"tomjamescn":true,"anhulife":true,"jmm23":true,"jklassen":true,"airswoop1":true,"derickchou0129":true,"subchen":true,"simplyianm":true,"pengzhisun":true,"nickeljew":true,"dongxu":true,"risyasin":true,"brandonpapworth":true,"denistrofimov":true,"sc7639":true,"rbartoli":true,"shaneli":true,"rodrigo-medeiros":true,"swarnendu-dutta":true,"jmshahen":true,"junjiansyu":true,"itonyyo":true,"trotyl":true,"icirellik":true,"paeblits":true,"logeshpaul":true,"elgubenis":true,"alexkval":true,"aesinv":true,"arnold-almeida":true,"bruce313":true,"rcastro":true,"godion":true,"skozz":true,"zemgalis":true,"justintormey":true,"tonydieu":true,"gejiawen":true,"yvesroos":true,"yjsosa":true,"fabioelizandro":true,"tfentonz":true,"dac2205":true,"octoo":true,"tmcguire":true,"sbrajesh":true,"staraple":true,"micahjonas":true,"j3kz":true,"modao":true,"iamwiz":true,"joemdavis":true,"jasoncmcg":true,"richarddavenport":true,"xavierharrell":true,"chriscalo":true,"arunvsuresh":true,"dolymood":true,"allthingssmitty":true,"brandondoran":true,"jonatasnona":true,"tudou":true,"nwinant":true,"khaledkaram":true,"garek":true,"etsit":true,"l3au":true,"ezcabrera":true,"johnny.young":true,"subso":true,"rogier.spieker":true,"rgbz":true,"plitat":true,"favasconcelos":true,"buzuli":true,"nukisman":true,"battlemidget":true,"brandouellette":true,"till":true,"craneleeon":true,"rbecheras":true,"nikitka_m":true,"thepanuto":true,"justinshea":true,"luuhoangnam":true,"jasonlotito":true,"aclark64":true,"scottkay":true,"pigram":true,"kanongil":true,"vladan":true,"universemaster":true,"nanhualyq":true,"unboundev":true,"josuehenry14":true,"mjwilliams":true,"cestrensem":true,"zhen":true,"ddffx":true,"prabhash1785":true,"gaboesquivel":true,"bpatel":true,"davidchubbs":true,"adamkdean":true,"parkerproject":true,"confkit":true,"amoiseev":true,"buzzalderaan":true,"damianof":true,"ocd_lionel":true,"tylersmith.34":true,"princetoad":true,"tnagengast":true,"devmoreno":true,"karlbateman":true,"fvcproductions":true,"joshua.marquez":true,"freshlogic":true,"andrewpmckenzie":true,"jueb":true,"perrywu":true},"readme":"# Async.js\n\n[![Build Status via Travis CI](https://travis-ci.org/caolan/async.svg?branch=master)](https://travis-ci.org/caolan/async)\n[![NPM version](http://img.shields.io/npm/v/async.svg)](https://www.npmjs.org/package/async)\n[![Coverage Status](https://coveralls.io/repos/caolan/async/badge.svg?branch=master)](https://coveralls.io/r/caolan/async?branch=master)\n[![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)\n\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [Node.js](http://nodejs.org) and installable via `npm install async`,\nit can also be used directly in the browser.\n\nAsync is also installable via:\n\n- [bower](http://bower.io/): `bower install async`\n- [component](https://github.com/component/component): `component install\n  caolan/async`\n- [jam](http://jamjs.org/): `jam install async`\n- [spm](http://spmjs.io/): `spm install async`\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns\nfor asynchronous control flow (`parallel`, `series`, `waterfall`…). All these\nfunctions assume you follow the Node.js convention of providing a single\ncallback as the last argument of your `async` function.\n\n\n## Quick Examples\n\n```javascript\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n    // results now equals an array of the existing files\n});\n\nasync.parallel([\n    function(){ ... },\n    function(){ ... }\n], callback);\n\nasync.series([\n    function(){ ... },\n    function(){ ... }\n]);\n```\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n## Common Pitfalls\n\n<a name=\"stack-overflow\">\n### Synchronous iteration functions\n\nIf 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.nextTick` to start a new call stack on the next tick of the event loop.\n\nThis can also arise by accident if you callback early in certain cases:\n\n```js\nasync.eachSeries(hugeArray, function iterator(item, callback) {\n  if (inCache(item)) {\n    callback(null, cache[item]); // if many items are cached, you'll overflow\n  } else {\n    doSomeIO(item, callback);\n  }\n}, function done() {\n  //...\n});\n```\n\nJust change it to:\n\n```js\nasync.eachSeries(hugeArray, function iterator(item, callback) {\n  if (inCache(item)) {\n    async.setImmediate(function () {\n      callback(null, cache[item]);\n    });\n  } else {\n    doSomeIO(item, callback);\n  //...\n```\n\nAsync 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.\n\nIf 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.\n\n\n### Binding a context to an iterator\n\nThis section is really about `bind`, not about `async`. If you are wondering how to\nmake `async` execute your iterators in a given context, or are confused as to why\na method of another library isn't working as an iterator, study this example:\n\n```js\n// Here is a simple object with an (unnecessarily roundabout) squaring method\nvar AsyncSquaringLibrary = {\n  squareExponent: 2,\n  square: function(number, callback){\n    var result = Math.pow(number, this.squareExponent);\n    setTimeout(function(){\n      callback(null, result);\n    }, 200);\n  }\n};\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){\n  // result is [NaN, NaN, NaN]\n  // This fails because the `this.squareExponent` expression in the square\n  // function is not evaluated in the context of AsyncSquaringLibrary, and is\n  // therefore undefined.\n});\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){\n  // result is [1, 4, 9]\n  // With the help of bind we can attach a context to the iterator before\n  // passing it to async. Now the square function will be executed in its\n  // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`\n  // will be as expected.\n});\n```\n\n## Download\n\nThe source is available for download from\n[GitHub](https://github.com/caolan/async/blob/master/lib/async.js).\nAlternatively, you can install using Node Package Manager (`npm`):\n\n    npm install async\n\nAs well as using Bower:\n\n    bower install async\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed\n\n## In the Browser\n\nSo far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5.\n\nUsage:\n\n```html\n<script type=\"text/javascript\" src=\"async.js\"></script>\n<script type=\"text/javascript\">\n\n    async.map(data, asyncProcess, function(err, results){\n        alert(results);\n    });\n\n</script>\n```\n\n## Documentation\n\n### Collections\n\n* [`each`](#each)\n* [`eachSeries`](#eachSeries)\n* [`eachLimit`](#eachLimit)\n* [`forEachOf`](#forEachOf)\n* [`forEachOfSeries`](#forEachOfSeries)\n* [`forEachOfLimit`](#forEachOfLimit)\n* [`map`](#map)\n* [`mapSeries`](#mapSeries)\n* [`mapLimit`](#mapLimit)\n* [`filter`](#filter)\n* [`filterSeries`](#filterSeries)\n* [`reject`](#reject)\n* [`rejectSeries`](#rejectSeries)\n* [`reduce`](#reduce)\n* [`reduceRight`](#reduceRight)\n* [`detect`](#detect)\n* [`detectSeries`](#detectSeries)\n* [`sortBy`](#sortBy)\n* [`some`](#some)\n* [`every`](#every)\n* [`concat`](#concat)\n* [`concatSeries`](#concatSeries)\n\n### Control Flow\n\n* [`series`](#seriestasks-callback)\n* [`parallel`](#parallel)\n* [`parallelLimit`](#parallellimittasks-limit-callback)\n* [`whilst`](#whilst)\n* [`doWhilst`](#doWhilst)\n* [`until`](#until)\n* [`doUntil`](#doUntil)\n* [`during`](#during)\n* [`doDuring`](#doDuring)\n* [`forever`](#forever)\n* [`waterfall`](#waterfall)\n* [`compose`](#compose)\n* [`seq`](#seq)\n* [`applyEach`](#applyEach)\n* [`applyEachSeries`](#applyEachSeries)\n* [`queue`](#queue)\n* [`priorityQueue`](#priorityQueue)\n* [`cargo`](#cargo)\n* [`auto`](#auto)\n* [`retry`](#retry)\n* [`iterator`](#iterator)\n* [`times`](#times)\n* [`timesSeries`](#timesSeries)\n* [`timesLimit`](#timesLimit)\n\n### Utils\n\n* [`apply`](#apply)\n* [`nextTick`](#nextTick)\n* [`memoize`](#memoize)\n* [`unmemoize`](#unmemoize)\n* [`ensureAsync`](#ensureAsync)\n* [`constant`](#constant)\n* [`asyncify`](#asyncify)\n* [`wrapSync`](#wrapSync)\n* [`log`](#log)\n* [`dir`](#dir)\n* [`noConflict`](#noConflict)\n\n\n## Collections\n\n<a name=\"forEach\" />\n<a name=\"each\" />\n### each(arr, iterator, [callback])\n\nApplies the function `iterator` to each item in `arr`, in parallel.\nThe `iterator` is called with an item from the list, and a callback for when it\nhas finished. If the `iterator` passes an error to its `callback`, the main\n`callback` (for the `each` function) is immediately called with the error.\n\nNote, that since this function applies `iterator` to each item in parallel,\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n  The iterator is passed a `callback(err)` which must be called once it has\n  completed. If no error has occurred, the `callback` should be run without\n  arguments or with an explicit `null` argument.  The array index is not passed\n  to the iterator.  If you need the index, use [`forEachOf`](#forEachOf).\n* `callback(err)` - *Optional* A callback which is called when all `iterator` functions\n  have finished, or an error occurs.\n\n__Examples__\n\n\n```js\n// assuming openFiles is an array of file names and saveFile is a function\n// to save the modified contents of that file:\n\nasync.each(openFiles, saveFile, function(err){\n    // if any of the saves produced an error, err would equal that error\n});\n```\n\n```js\n// assuming openFiles is an array of file names\n\nasync.each(openFiles, function(file, callback) {\n\n  // Perform operation on file here.\n  console.log('Processing file ' + file);\n\n  if( file.length > 32 ) {\n    console.log('This file name is too long');\n    callback('File name too long');\n  } else {\n    // Do work to process file here\n    console.log('File processed');\n    callback();\n  }\n}, function(err){\n    // if any of the file processing produced an error, err would equal that error\n    if( err ) {\n      // One of the iterations produced an error.\n      // All processing will now stop.\n      console.log('A file failed to process');\n    } else {\n      console.log('All files have been processed successfully');\n    }\n});\n```\n\n---------------------------------------\n\n<a name=\"forEachSeries\" />\n<a name=\"eachSeries\" />\n### eachSeries(arr, iterator, [callback])\n\nThe same as [`each`](#each), only `iterator` is applied to each item in `arr` in\nseries. The next `iterator` is only called once the current one has completed.\nThis means the `iterator` functions will complete in order.\n\n\n---------------------------------------\n\n<a name=\"forEachLimit\" />\n<a name=\"eachLimit\" />\n### eachLimit(arr, limit, iterator, [callback])\n\nThe same as [`each`](#each), only no more than `limit` `iterator`s will be simultaneously\nrunning at any time.\n\nNote that the items in `arr` are not processed in batches, so there is no guarantee that\nthe first `limit` `iterator` functions will complete before any others are started.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `limit` - The maximum number of `iterator`s to run at any time.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n  The iterator is passed a `callback(err)` which must be called once it has\n  completed. If no error has occurred, the callback should be run without\n  arguments or with an explicit `null` argument.\n* `callback(err)` - *Optional* A callback which is called when all `iterator` functions\n  have finished, or an error occurs.\n\n__Example__\n\n```js\n// Assume documents is an array of JSON objects and requestApi is a\n// function that interacts with a rate-limited REST api.\n\nasync.eachLimit(documents, 20, requestApi, function(err){\n    // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n<a name=\"forEachOf\" />\n<a name=\"eachOf\" />\n\n### forEachOf(obj, iterator, [callback])\n\nLike `each`, except that it iterates over objects, and passes the key as the second argument to the iterator.\n\n__Arguments__\n\n* `obj` - An object or array to iterate over.\n* `iterator(item, key, callback)` - A function to apply to each item in `obj`.\nThe `key` is the item's key, or index in the case of an array. The iterator is\npassed a `callback(err)` which must be called once it has completed. If no\nerror has occurred, the callback should be run without arguments or with an\nexplicit `null` argument.\n* `callback(err)` - *Optional* A callback which is called when all `iterator` functions have finished, or an error occurs.\n\n__Example__\n\n```js\nvar obj = {dev: \"/dev.json\", test: \"/test.json\", prod: \"/prod.json\"};\nvar configs = {};\n\nasync.forEachOf(obj, function (value, key, callback) {\n  fs.readFile(__dirname + value, \"utf8\", function (err, data) {\n    if (err) return callback(err);\n    try {\n      configs[key] = JSON.parse(data);\n    } catch (e) {\n      return callback(e);\n    }\n    callback();\n  })\n}, function (err) {\n  if (err) console.error(err.message);\n  // configs is now a map of JSON data\n  doSomethingWith(configs);\n})\n```\n\n---------------------------------------\n\n<a name=\"forEachOfSeries\" />\n<a name=\"eachOfSeries\" />\n\n### forEachOfSeries(obj, iterator, [callback])\n\nLike [`forEachOf`](#forEachOf), except only one `iterator` is run at a time.  The order of execution is not guaranteed for objects, but it will be guaranteed for arrays.\n\n---------------------------------------\n\n<a name=\"forEachOfLimit\" />\n<a name=\"eachOfLimit\" />\n\n### forEachOfLimit(obj, limit, iterator, [callback])\n\nLike [`forEachOf`](#forEachOf), except the number of `iterator`s running at a given time is controlled by `limit`.\n\n\n---------------------------------------\n\n<a name=\"map\" />\n### map(arr, iterator, [callback])\n\nProduces a new array of values by mapping each value in `arr` through\nthe `iterator` function. The `iterator` is called with an item from `arr` and a\ncallback for when it has finished processing. Each of these callback takes 2 arguments:\nan `error`, and the transformed item from `arr`. If `iterator` passes an error to its\ncallback, the main `callback` (for the `map` function) is immediately called with the error.\n\nNote, that since this function applies the `iterator` to each item in parallel,\nthere is no guarantee that the `iterator` functions will complete in order.\nHowever, the results array will be in the same order as the original `arr`.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n  The iterator is passed a `callback(err, transformed)` which must be called once\n  it has completed with an error (which can be `null`) and a transformed item.\n* `callback(err, results)` - *Optional* A callback which is called when all `iterator`\n  functions have finished, or an error occurs. Results is an array of the\n  transformed items from the `arr`.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"mapSeries\" />\n### mapSeries(arr, iterator, [callback])\n\nThe same as [`map`](#map), only the `iterator` is applied to each item in `arr` in\nseries. The next `iterator` is only called once the current one has completed.\nThe results array will be in the same order as the original.\n\n\n---------------------------------------\n\n<a name=\"mapLimit\" />\n### mapLimit(arr, limit, iterator, [callback])\n\nThe same as [`map`](#map), only no more than `limit` `iterator`s will be simultaneously\nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\nthe first `limit` `iterator` functions will complete before any others are started.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `limit` - The maximum number of `iterator`s to run at any time.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n  The iterator is passed a `callback(err, transformed)` which must be called once\n  it has completed with an error (which can be `null`) and a transformed item.\n* `callback(err, results)` - A callback which is called when all `iterator`\n  calls have finished, or an error occurs. The result is an array of the\n  transformed items from the original `arr`.\n\n__Example__\n\n```js\nasync.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"select\" />\n<a name=\"filter\" />\n### filter(arr, iterator, [callback])\n\n__Alias:__ `select`\n\nReturns a new array of all the values in `arr` which pass an async truth test.\n_The callback for each `iterator` call only accepts a single argument of `true` or\n`false`; it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like `fs.exists`. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in `arr`.\n  The `iterator` is passed a `callback(truthValue)`, which must be called with a\n  boolean argument once it has completed.\n* `callback(results)` - *Optional* A callback which is called after all the `iterator`\n  functions have finished.\n\n__Example__\n\n```js\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n    // results now equals an array of the existing files\n});\n```\n\n---------------------------------------\n\n<a name=\"selectSeries\" />\n<a name=\"filterSeries\" />\n### filterSeries(arr, iterator, [callback])\n\n__Alias:__ `selectSeries`\n\nThe same as [`filter`](#filter) only the `iterator` is applied to each item in `arr` in\nseries. The next `iterator` is only called once the current one has completed.\nThe results array will be in the same order as the original.\n\n---------------------------------------\n\n<a name=\"reject\" />\n### reject(arr, iterator, [callback])\n\nThe opposite of [`filter`](#filter). Removes values that pass an `async` truth test.\n\n---------------------------------------\n\n<a name=\"rejectSeries\" />\n### rejectSeries(arr, iterator, [callback])\n\nThe same as [`reject`](#reject), only the `iterator` is applied to each item in `arr`\nin series.\n\n\n---------------------------------------\n\n<a name=\"reduce\" />\n### reduce(arr, memo, iterator, [callback])\n\n__Aliases:__ `inject`, `foldl`\n\nReduces `arr` into a single value using an async `iterator` to return\neach successive step. `memo` is the initial state of the reduction.\nThis function only operates in series.\n\nFor performance reasons, it may make sense to split a call to this function into\na parallel map, and then use the normal `Array.prototype.reduce` on the results.\nThis function is for situations where each step in the reduction needs to be async;\nif you can get the data before reducing it, then it's probably a good idea to do so.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `memo` - The initial state of the reduction.\n* `iterator(memo, item, callback)` - A function applied to each item in the\n  array to produce the next step in the reduction. The `iterator` is passed a\n  `callback(err, reduction)` which accepts an optional error as its first\n  argument, and the state of the reduction as the second. If an error is\n  passed to the callback, the reduction is stopped and the main `callback` is\n  immediately called with the error.\n* `callback(err, result)` - *Optional* A callback which is called after all the `iterator`\n  functions have finished. Result is the reduced value.\n\n__Example__\n\n```js\nasync.reduce([1,2,3], 0, function(memo, item, callback){\n    // pointless async:\n    process.nextTick(function(){\n        callback(null, memo + item)\n    });\n}, function(err, result){\n    // result is now equal to the last value of memo, which is 6\n});\n```\n\n---------------------------------------\n\n<a name=\"reduceRight\" />\n### reduceRight(arr, memo, iterator, [callback])\n\n__Alias:__ `foldr`\n\nSame as [`reduce`](#reduce), only operates on `arr` in reverse order.\n\n\n---------------------------------------\n\n<a name=\"detect\" />\n### detect(arr, iterator, [callback])\n\nReturns the first value in `arr` that passes an async truth test. The\n`iterator` is applied in parallel, meaning the first iterator to return `true` will\nfire the detect `callback` with that result. That means the result might not be\nthe first item in the original `arr` (in terms of order) that passes the test.\n\nIf order within the original `arr` is important, then look at [`detectSeries`](#detectSeries).\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in `arr`.\n  The iterator is passed a `callback(truthValue)` which must be called with a\n  boolean argument once it has completed. **Note: this callback does not take an error as its first argument.**\n* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns\n  `true`, or after all the `iterator` functions have finished. Result will be\n  the first item in the array that passes the truth test (iterator) or the\n  value `undefined` if none passed.  **Note: this callback does not take an error as its first argument.**\n\n__Example__\n\n```js\nasync.detect(['file1','file2','file3'], fs.exists, function(result){\n    // result now equals the first file in the list that exists\n});\n```\n\n---------------------------------------\n\n<a name=\"detectSeries\" />\n### detectSeries(arr, iterator, [callback])\n\nThe same as [`detect`](#detect), only the `iterator` is applied to each item in `arr`\nin series. This means the result is always the first in the original `arr` (in\nterms of array order) that passes the truth test.\n\n\n---------------------------------------\n\n<a name=\"sortBy\" />\n### sortBy(arr, iterator, [callback])\n\nSorts a list by the results of running each `arr` value through an async `iterator`.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n  The iterator is passed a `callback(err, sortValue)` which must be called once it\n  has completed with an error (which can be `null`) and a value to use as the sort\n  criteria.\n* `callback(err, results)` - *Optional* A callback which is called after all the `iterator`\n  functions have finished, or an error occurs. Results is the items from\n  the original `arr` sorted by the values returned by the `iterator` calls.\n\n__Example__\n\n```js\nasync.sortBy(['file1','file2','file3'], function(file, callback){\n    fs.stat(file, function(err, stats){\n        callback(err, stats.mtime);\n    });\n}, function(err, results){\n    // results is now the original array of files sorted by\n    // modified date\n});\n```\n\n__Sort Order__\n\nBy modifying the callback parameter the sorting order can be influenced:\n\n```js\n//ascending order\nasync.sortBy([1,9,3,5], function(x, callback){\n    callback(null, x);\n}, function(err,result){\n    //result callback\n} );\n\n//descending order\nasync.sortBy([1,9,3,5], function(x, callback){\n    callback(null, x*-1);    //<- x*-1 instead of x, turns the order around\n}, function(err,result){\n    //result callback\n} );\n```\n\n---------------------------------------\n\n<a name=\"some\" />\n### some(arr, iterator, [callback])\n\n__Alias:__ `any`\n\nReturns `true` if at least one element in the `arr` satisfies an async test.\n_The callback for each iterator call only accepts a single argument of `true` or\n`false`; it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like `fs.exists`. Once any iterator\ncall returns `true`, the main `callback` is immediately called.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in the array\n  in parallel. The iterator is passed a `callback(truthValue)`` which must be\n  called with a boolean argument once it has completed.\n* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns\n  `true`, or after all the iterator functions have finished. Result will be\n  either `true` or `false` depending on the values of the async tests.\n\n **Note: the callbacks do not take an error as their first argument.**\n__Example__\n\n```js\nasync.some(['file1','file2','file3'], fs.exists, function(result){\n    // if result is true then at least one of the files exists\n});\n```\n\n---------------------------------------\n\n<a name=\"every\" />\n### every(arr, iterator, [callback])\n\n__Alias:__ `all`\n\nReturns `true` if every element in `arr` satisfies an async test.\n_The callback for each `iterator` call only accepts a single argument of `true` or\n`false`; it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like `fs.exists`.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A truth test to apply to each item in the array\n  in parallel. The iterator is passed a `callback(truthValue)` which must be\n  called with a  boolean argument once it has completed.\n* `callback(result)` - *Optional* A callback which is called after all the `iterator`\n  functions have finished. Result will be either `true` or `false` depending on\n  the values of the async tests.\n\n **Note: the callbacks do not take an error as their first argument.**\n\n__Example__\n\n```js\nasync.every(['file1','file2','file3'], fs.exists, function(result){\n    // if result is true then every file exists\n});\n```\n\n---------------------------------------\n\n<a name=\"concat\" />\n### concat(arr, iterator, [callback])\n\nApplies `iterator` to each item in `arr`, concatenating the results. Returns the\nconcatenated list. The `iterator`s are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of `arr` passed to the `iterator` function.\n\n__Arguments__\n\n* `arr` - An array to iterate over.\n* `iterator(item, callback)` - A function to apply to each item in `arr`.\n  The iterator is passed a `callback(err, results)` which must be called once it\n  has completed with an error (which can be `null`) and an array of results.\n* `callback(err, results)` - *Optional* A callback which is called after all the `iterator`\n  functions have finished, or an error occurs. Results is an array containing\n  the concatenated results of the `iterator` function.\n\n__Example__\n\n```js\nasync.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n    // files is now a list of filenames that exist in the 3 directories\n});\n```\n\n---------------------------------------\n\n<a name=\"concatSeries\" />\n### concatSeries(arr, iterator, [callback])\n\nSame as [`concat`](#concat), but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name=\"series\" />\n### series(tasks, [callback])\n\nRun the functions in the `tasks` array in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run, and `callback` is immediately called with the value of the error.\nOtherwise, `callback` receives an array of results when `tasks` have completed.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function, and the results will be passed to the final `callback` as an object\ninstead of an array. This can be a more readable way of handling results from\n[`series`](#series).\n\n**Note** that while many implementations preserve the order of object properties, the\n[ECMAScript Language Specifcation](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)\nexplicitly states that\n\n> The mechanics and order of enumerating the properties is not specified.\n\nSo if you rely on the order in which your series of functions are executed, and want\nthis to work on all platforms, consider using an array.\n\n__Arguments__\n\n* `tasks` - An array or object containing functions to run, each function is passed\n  a `callback(err, result)` it must call on completion with an error `err` (which can\n  be `null`) and an optional `result` value.\n* `callback(err, results)` - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all\n  the result arguments passed to the `task` callbacks.\n\n__Example__\n\n```js\nasync.series([\n    function(callback){\n        // do some stuff ...\n        callback(null, 'one');\n    },\n    function(callback){\n        // do some more stuff ...\n        callback(null, 'two');\n    }\n],\n// optional callback\nfunction(err, results){\n    // results is now equal to ['one', 'two']\n});\n\n\n// an example using an object instead of an array\nasync.series({\n    one: function(callback){\n        setTimeout(function(){\n            callback(null, 1);\n        }, 200);\n    },\n    two: function(callback){\n        setTimeout(function(){\n            callback(null, 2);\n        }, 100);\n    }\n},\nfunction(err, results) {\n    // results is now equal to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallel(tasks, [callback])\n\nRun the `tasks` array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main `callback` is immediately called with the value of the error.\nOnce the `tasks` have completed, the results are passed to the final `callback` as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final `callback` as an object\ninstead of an array. This can be a more readable way of handling results from\n[`parallel`](#parallel).\n\n\n__Arguments__\n\n* `tasks` - An array or object containing functions to run. Each function is passed\n  a `callback(err, result)` which it must call on completion with an error `err`\n  (which can be `null`) and an optional `result` value.\n* `callback(err, results)` - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all\n  the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.parallel([\n    function(callback){\n        setTimeout(function(){\n            callback(null, 'one');\n        }, 200);\n    },\n    function(callback){\n        setTimeout(function(){\n            callback(null, 'two');\n        }, 100);\n    }\n],\n// optional callback\nfunction(err, results){\n    // the results array will equal ['one','two'] even though\n    // the second function had a shorter timeout.\n});\n\n\n// an example using an object instead of an array\nasync.parallel({\n    one: function(callback){\n        setTimeout(function(){\n            callback(null, 1);\n        }, 200);\n    },\n    two: function(callback){\n        setTimeout(function(){\n            callback(null, 2);\n        }, 100);\n    }\n},\nfunction(err, results) {\n    // results is now equals to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallelLimit\" />\n### parallelLimit(tasks, limit, [callback])\n\nThe same as [`parallel`](#parallel), only `tasks` are executed in parallel\nwith a maximum of `limit` tasks executing at any time.\n\nNote that the `tasks` are not executed in batches, so there is no guarantee that\nthe first `limit` tasks will complete before any others are started.\n\n__Arguments__\n\n* `tasks` - An array or object containing functions to run, each function is passed\n  a `callback(err, result)` it must call on completion with an error `err` (which can\n  be `null`) and an optional `result` value.\n* `limit` - The maximum number of `tasks` to run at any time.\n* `callback(err, results)` - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all\n  the result arguments passed to the `task` callbacks.\n\n---------------------------------------\n\n<a name=\"whilst\" />\n### whilst(test, fn, callback)\n\nRepeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped,\nor an error occurs.\n\n__Arguments__\n\n* `test()` - synchronous truth test to perform before each execution of `fn`.\n* `fn(callback)` - A function which is called each time `test` passes. The function is\n  passed a `callback(err)`, which must be called once it has completed with an\n  optional `err` argument.\n* `callback(err)` - A callback which is called after the test fails and repeated\n  execution of `fn` has stopped.\n\n__Example__\n\n```js\nvar count = 0;\n\nasync.whilst(\n    function () { return count < 5; },\n    function (callback) {\n        count++;\n        setTimeout(callback, 1000);\n    },\n    function (err) {\n        // 5 seconds have passed\n    }\n);\n```\n\n---------------------------------------\n\n<a name=\"doWhilst\" />\n### doWhilst(fn, test, callback)\n\nThe post-check version of [`whilst`](#whilst). To reflect the difference in\nthe order of operations, the arguments `test` and `fn` are switched.\n\n`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n\n---------------------------------------\n\n<a name=\"until\" />\n### until(test, fn, callback)\n\nRepeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped,\nor an error occurs.\n\nThe inverse of [`whilst`](#whilst).\n\n---------------------------------------\n\n<a name=\"doUntil\" />\n### doUntil(fn, test, callback)\n\nLike [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`.\n\n---------------------------------------\n\n<a name=\"during\" />\n### during(test, fn, callback)\n\nLike [`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.\n\n__Example__\n\n```js\nvar count = 0;\n\nasync.during(\n    function (callback) { \n      return callback(null, count < 5); \n    },\n    function (callback) {\n        count++;\n        setTimeout(callback, 1000);\n    },\n    function (err) {\n        // 5 seconds have passed\n    }\n);\n```\n\n---------------------------------------\n\n<a name=\"doDuring\" />\n### doDuring(fn, test, callback)\n\nThe post-check version of [`during`](#during). To reflect the difference in\nthe order of operations, the arguments `test` and `fn` are switched.\n\nAlso a version of [`doWhilst`](#doWhilst) with asynchronous `test` function.\n\n---------------------------------------\n\n<a name=\"forever\" />\n### forever(fn, [errback])\n\nCalls the asynchronous function `fn` with a callback parameter that allows it to\ncall itself again, in series, indefinitely.\n\nIf an error is passed to the callback then `errback` is called with the\nerror, and execution stops, otherwise it will never be called.\n\n```js\nasync.forever(\n    function(next) {\n        // next is suitable for passing to things that need a callback(err [, whatever]);\n        // it will result in this function being called again.\n    },\n    function(err) {\n        // if next is called with a value in its first parameter, it will appear\n        // in here as 'err', and execution will stop.\n    }\n);\n```\n\n---------------------------------------\n\n<a name=\"waterfall\" />\n### waterfall(tasks, [callback])\n\nRuns the `tasks` array of functions in series, each passing their results to the next in\nthe array. However, if any of the `tasks` pass an error to their own callback, the\nnext function is not executed, and the main `callback` is immediately called with\nthe error.\n\n__Arguments__\n\n* `tasks` - An array of functions to run, each function is passed a\n  `callback(err, result1, result2, ...)` it must call on completion. The first\n  argument is an error (which can be `null`) and any further arguments will be\n  passed as arguments in order to the next task.\n* `callback(err, [results])` - An optional callback to run once all the functions\n  have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n```js\nasync.waterfall([\n    function(callback) {\n        callback(null, 'one', 'two');\n    },\n    function(arg1, arg2, callback) {\n      // arg1 now equals 'one' and arg2 now equals 'two'\n        callback(null, 'three');\n    },\n    function(arg1, callback) {\n        // arg1 now equals 'three'\n        callback(null, 'done');\n    }\n], function (err, result) {\n    // result now equals 'done'\n});\n```\n\n---------------------------------------\n<a name=\"compose\" />\n### compose(fn1, fn2...)\n\nCreates a function which is a composition of the passed asynchronous\nfunctions. Each function consumes the return value of the function that\nfollows. Composing functions `f()`, `g()`, and `h()` would produce the result of\n`f(g(h()))`, only this version uses callbacks to obtain the return values.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* `functions...` - the asynchronous functions to compose\n\n\n__Example__\n\n```js\nfunction add1(n, callback) {\n    setTimeout(function () {\n        callback(null, n + 1);\n    }, 10);\n}\n\nfunction mul3(n, callback) {\n    setTimeout(function () {\n        callback(null, n * 3);\n    }, 10);\n}\n\nvar add1mul3 = async.compose(mul3, add1);\n\nadd1mul3(4, function (err, result) {\n   // result now equals 15\n});\n```\n\n---------------------------------------\n<a name=\"seq\" />\n### seq(fn1, fn2...)\n\nVersion of the compose function that is more natural to read.\nEach function consumes the return value of the previous function.\nIt is the equivalent of [`compose`](#compose) with the arguments reversed.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* `functions...` - the asynchronous functions to compose\n\n\n__Example__\n\n```js\n// Requires lodash (or underscore), express3 and dresende's orm2.\n// Part of an app, that fetches cats of the logged user.\n// This example uses `seq` function to avoid overnesting and error\n// handling clutter.\napp.get('/cats', function(request, response) {\n  var User = request.models.User;\n  async.seq(\n    _.bind(User.get, User),  // 'User.get' has signature (id, callback(err, data))\n    function(user, fn) {\n      user.getCats(fn);      // 'getCats' has signature (callback(err, data))\n    }\n  )(req.session.user_id, function (err, cats) {\n    if (err) {\n      console.error(err);\n      response.json({ status: 'error', message: err.message });\n    } else {\n      response.json({ status: 'ok', message: 'Cats found', data: cats });\n    }\n  });\n});\n```\n\n---------------------------------------\n<a name=\"applyEach\" />\n### applyEach(fns, args..., callback)\n\nApplies the provided arguments to each function in the array, calling\n`callback` after all functions have completed. If you only provide the first\nargument, then it will return a function which lets you pass in the\narguments as if it were a single function call.\n\n__Arguments__\n\n* `fns` - the asynchronous functions to all call with the same arguments\n* `args...` - any number of separate arguments to pass to the function\n* `callback` - the final argument should be the callback, called when all\n  functions have completed processing\n\n\n__Example__\n\n```js\nasync.applyEach([enableSearch, updateSchema], 'bucket', callback);\n\n// partial application example:\nasync.each(\n    buckets,\n    async.applyEach([enableSearch, updateSchema]),\n    callback\n);\n```\n\n---------------------------------------\n\n<a name=\"applyEachSeries\" />\n### applyEachSeries(arr, args..., callback)\n\nThe same as [`applyEach`](#applyEach) only the functions are applied in series.\n\n---------------------------------------\n\n<a name=\"queue\" />\n### queue(worker, [concurrency])\n\nCreates a `queue` object with the specified `concurrency`. Tasks added to the\n`queue` are processed in parallel (up to the `concurrency` limit). If all\n`worker`s are in progress, the task is queued until one becomes available.\nOnce a `worker` completes a `task`, that `task`'s callback is called.\n\n__Arguments__\n\n* `worker(task, callback)` - An asynchronous function for processing a queued\n  task, which must call its `callback(err)` argument when finished, with an\n  optional `error` as an argument.  If you want to handle errors from an individual task, pass a callback to `q.push()`.\n* `concurrency` - An `integer` for determining how many `worker` functions should be\n  run in parallel.  If omitted, the concurrency defaults to `1`.  If the concurrency is `0`, an error is thrown.\n\n__Queue objects__\n\nThe `queue` object returned by this function has the following properties and\nmethods:\n\n* `length()` - a function returning the number of items waiting to be processed.\n* `started` - a function returning whether or not any items have been pushed and processed by the queue\n* `running()` - a function returning the number of items currently being processed.\n* `idle()` - a function returning false if there are items waiting or being processed, or true if not.\n* `concurrency` - an integer for determining how many `worker` functions should be\n  run in parallel. This property can be changed after a `queue` is created to\n  alter the concurrency on-the-fly.\n* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once\n  the `worker` has finished processing the task. Instead of a single task, a `tasks` array\n  can be submitted. The respective callback is used for every task in the list.\n* `unshift(task, [callback])` - add a new task to the front of the `queue`.\n* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit,\n   and further tasks will be queued.\n* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`.\n* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`.\n* `paused` - a boolean for determining whether the queue is in a paused state\n* `pause()` - a function that pauses the processing of tasks until `resume()` is called.\n* `resume()` - a function that resumes the processing of queued tasks when the queue is paused.\n* `kill()` - a function that removes the `drain` callback and empties remaining tasks from the queue forcing it to go idle.\n\n__Example__\n\n```js\n// create a queue object with concurrency 2\n\nvar q = async.queue(function (task, callback) {\n    console.log('hello ' + task.name);\n    callback();\n}, 2);\n\n\n// assign a callback\nq.drain = function() {\n    console.log('all items have been processed');\n}\n\n// add some items to the queue\n\nq.push({name: 'foo'}, function (err) {\n    console.log('finished processing foo');\n});\nq.push({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\n\n// add some items to the queue (batch-wise)\n\nq.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n    console.log('finished processing item');\n});\n\n// add some items to the front of the queue\n\nq.unshift({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\n```\n\n\n---------------------------------------\n\n<a name=\"priorityQueue\" />\n### priorityQueue(worker, concurrency)\n\nThe 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:\n\n* `push(task, priority, [callback])` - `priority` should be a number. If an array of\n  `tasks` is given, all tasks will be assigned the same priority.\n* The `unshift` method was removed.\n\n---------------------------------------\n\n<a name=\"cargo\" />\n### cargo(worker, [payload])\n\nCreates a `cargo` object with the specified payload. Tasks added to the\ncargo will be processed altogether (up to the `payload` limit). If the\n`worker` is in progress, the task is queued until it becomes available. Once\nthe `worker` has completed some tasks, each callback of those tasks is called.\nCheck out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) for how `cargo` and `queue` work.\n\nWhile [queue](#queue) passes only one task to one of a group of workers\nat a time, cargo passes an array of tasks to a single worker, repeating\nwhen the worker is finished.\n\n__Arguments__\n\n* `worker(tasks, callback)` - An asynchronous function for processing an array of\n  queued tasks, which must call its `callback(err)` argument when finished, with\n  an optional `err` argument.\n* `payload` - An optional `integer` for determining how many tasks should be\n  processed per round; if omitted, the default is unlimited.\n\n__Cargo objects__\n\nThe `cargo` object returned by this function has the following properties and\nmethods:\n\n* `length()` - A function returning the number of items waiting to be processed.\n* `payload` - An `integer` for determining how many tasks should be\n  process per round. This property can be changed after a `cargo` is created to\n  alter the payload on-the-fly.\n* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called\n  once the `worker` has finished processing the task. Instead of a single task, an array of `tasks`\n  can be submitted. The respective callback is used for every task in the list.\n* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued.\n* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`.\n* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`.\n* `idle()`, `pause()`, `resume()`, `kill()` - cargo inherits all of the same methods and event calbacks as [`queue`](#queue)\n\n__Example__\n\n```js\n// create a cargo object with payload 2\n\nvar cargo = async.cargo(function (tasks, callback) {\n    for(var i=0; i<tasks.length; i++){\n      console.log('hello ' + tasks[i].name);\n    }\n    callback();\n}, 2);\n\n\n// add some items\n\ncargo.push({name: 'foo'}, function (err) {\n    console.log('finished processing foo');\n});\ncargo.push({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\ncargo.push({name: 'baz'}, function (err) {\n    console.log('finished processing baz');\n});\n```\n\n---------------------------------------\n\n<a name=\"auto\" />\n### auto(tasks, [callback])\n\nDetermines the best order for running the functions in `tasks`, based on their\nrequirements. Each function can optionally depend on other functions being completed\nfirst, and each function is run as soon as its requirements are satisfied.\n\nIf any of the functions pass an error to their callback, it will not\ncomplete (so any other functions depending on it will not run), and the main\n`callback` is immediately called with the error. Functions also receive an\nobject containing the results of functions which have completed so far.\n\nNote, all functions are called with a `results` object as a second argument,\nso it is unsafe to pass functions in the `tasks` object which cannot handle the\nextra argument.\n\nFor example, this snippet of code:\n\n```js\nasync.auto({\n  readData: async.apply(fs.readFile, 'data.txt', 'utf-8')\n}, callback);\n```\n\nwill have the effect of calling `readFile` with the results object as the last\nargument, which will fail:\n\n```js\nfs.readFile('data.txt', 'utf-8', cb, {});\n```\n\nInstead, wrap the call to `readFile` in a function which does not forward the\n`results` object:\n\n```js\nasync.auto({\n  readData: function(cb, results){\n    fs.readFile('data.txt', 'utf-8', cb);\n  }\n}, callback);\n```\n\n__Arguments__\n\n* `tasks` - An object. Each of its properties is either a function or an array of\n  requirements, with the function itself the last item in the array. The object's key\n  of a property serves as the name of the task defined by that property,\n  i.e. can be used when specifying requirements for other tasks.\n  The function receives two arguments: (1) a `callback(err, result)` which must be\n  called when finished, passing an `error` (which can be `null`) and the result of\n  the function's execution, and (2) a `results` object, containing the results of\n  the previously executed functions.\n* `callback(err, results)` - An optional callback which is called when all the\n  tasks have been completed. It receives the `err` argument if any `tasks`\n  pass an error to their callback. Results are always returned; however, if\n  an error occurs, no further `tasks` will be performed, and the results\n  object will only contain partial results.\n\n\n__Example__\n\n```js\nasync.auto({\n    get_data: function(callback){\n        console.log('in get_data');\n        // async code to get some data\n        callback(null, 'data', 'converted to array');\n    },\n    make_folder: function(callback){\n        console.log('in make_folder');\n        // async code to create a directory to store a file in\n        // this is run at the same time as getting the data\n        callback(null, 'folder');\n    },\n    write_file: ['get_data', 'make_folder', function(callback, results){\n        console.log('in write_file', JSON.stringify(results));\n        // once there is some data and the directory exists,\n        // write the data to a file in the directory\n        callback(null, 'filename');\n    }],\n    email_link: ['write_file', function(callback, results){\n        console.log('in email_link', JSON.stringify(results));\n        // once the file is written let's email a link to it...\n        // results.write_file contains the filename returned by write_file.\n        callback(null, {'file':results.write_file, 'email':'user@example.com'});\n    }]\n}, function(err, results) {\n    console.log('err = ', err);\n    console.log('results = ', results);\n});\n```\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n```js\nasync.parallel([\n    function(callback){\n        console.log('in get_data');\n        // async code to get some data\n        callback(null, 'data', 'converted to array');\n    },\n    function(callback){\n        console.log('in make_folder');\n        // async code to create a directory to store a file in\n        // this is run at the same time as getting the data\n        callback(null, 'folder');\n    }\n],\nfunction(err, results){\n    async.series([\n        function(callback){\n            console.log('in write_file', JSON.stringify(results));\n            // once there is some data and the directory exists,\n            // write the data to a file in the directory\n            results.push('filename');\n            callback(null);\n        },\n        function(callback){\n            console.log('in email_link', JSON.stringify(results));\n            // once the file is written let's email a link to it...\n            callback(null, {'file':results.pop(), 'email':'user@example.com'});\n        }\n    ]);\n});\n```\n\nFor a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding\nnew tasks much easier (and the code more readable).\n\n\n---------------------------------------\n\n<a name=\"retry\" />\n### retry([opts = {times: 5, interval: 0}| 5], task, [callback])\n\nAttempts to get a successful response from `task` no more than `times` times before\nreturning an error. If the task is successful, the `callback` will be passed the result\nof the successful task. If all attempts fail, the callback will be passed the error and\nresult (if any) of the final attempt.\n\n__Arguments__\n\n* `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}\n  * if a number is passed in it sets `times` only (with `interval` defaulting to 0).\n* `task(callback, results)` - A function which receives two arguments: (1) a `callback(err, result)`\n  which must be called when finished, passing `err` (which can be `null`) and the `result` of\n  the function's execution, and (2) a `results` object, containing the results of\n  the previously executed functions (if nested inside another control flow).\n* `callback(err, results)` - An optional callback which is called when the\n  task has succeeded, or after the final failed attempt. It receives the `err` and `result` arguments of the last attempt at completing the `task`.\n\nThe [`retry`](#retry) function can be used as a stand-alone control flow by passing a\ncallback, as shown below:\n\n```js\nasync.retry(3, apiMethod, function(err, result) {\n    // do something with the result\n});\n```\n\n```js\nasync.retry({times: 3, interval: 200}, apiMethod, function(err, result) {\n    // do something with the result\n});\n```\n\nIt can also be embeded within other control flow functions to retry individual methods\nthat are not as reliable, like this:\n\n```js\nasync.auto({\n    users: api.getUsers.bind(api),\n    payments: async.retry(3, api.getPayments.bind(api))\n}, function(err, results) {\n  // do something with the results\n});\n```\n\n\n---------------------------------------\n\n<a name=\"iterator\" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the `tasks` array,\nreturning a continuation to call the next one after that. It's also possible to\n“peek” at the next iterator with `iterator.next()`.\n\nThis function is used internally by the `async` module, but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* `tasks` - An array of functions to run.\n\n__Example__\n\n```js\nvar iterator = async.iterator([\n    function(){ sys.p('one'); },\n    function(){ sys.p('two'); },\n    function(){ sys.p('three'); }\n]);\n\nnode> var iterator2 = iterator();\n'one'\nnode> var iterator3 = iterator2();\n'two'\nnode> iterator3();\n'three'\nnode> var nextfn = iterator2.next();\nnode> nextfn();\n'three'\n```\n\n---------------------------------------\n\n<a name=\"apply\" />\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied.\n\nUseful as a shorthand when combined with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* `function` - The function you want to eventually apply all arguments to.\n* `arguments...` - Any number of arguments to automatically apply when the\n  continuation is called.\n\n__Example__\n\n```js\n// using apply\n\nasync.parallel([\n    async.apply(fs.writeFile, 'testfile1', 'test1'),\n    async.apply(fs.writeFile, 'testfile2', 'test2'),\n]);\n\n\n// the same process without using apply\n\nasync.parallel([\n    function(callback){\n        fs.writeFile('testfile1', 'test1', callback);\n    },\n    function(callback){\n        fs.writeFile('testfile2', 'test2', callback);\n    }\n]);\n```\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n```js\nnode> var fn = async.apply(sys.puts, 'one');\nnode> fn('two', 'three');\none\ntwo\nthree\n```\n\n---------------------------------------\n\n<a name=\"nextTick\" />\n### nextTick(callback), setImmediate(callback)\n\nCalls `callback` on a later loop around the event loop. In Node.js this just\ncalls `process.nextTick`; in the browser it falls back to `setImmediate(callback)`\nif available, otherwise `setTimeout(callback, 0)`, which means other higher priority\nevents may precede the execution of `callback`.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* `callback` - The function to call on a later loop around the event loop.\n\n__Example__\n\n```js\nvar call_order = [];\nasync.nextTick(function(){\n    call_order.push('two');\n    // call_order now equals ['one','two']\n});\ncall_order.push('one')\n```\n\n<a name=\"times\" />\n### times(n, iterator, [callback])\n\nCalls the `iterator` function `n` times, and accumulates results in the same manner\nyou would use with [`map`](#map).\n\n__Arguments__\n\n* `n` - The number of times to run the function.\n* `iterator` - The function to call `n` times.\n* `callback` - see [`map`](#map)\n\n__Example__\n\n```js\n// Pretend this is some complicated async factory\nvar createUser = function(id, callback) {\n  callback(null, {\n    id: 'user' + id\n  })\n}\n// generate 5 users\nasync.times(5, function(n, next){\n    createUser(n, function(err, user) {\n      next(err, user)\n    })\n}, function(err, users) {\n  // we should now have 5 users\n});\n```\n\n<a name=\"timesSeries\" />\n### timesSeries(n, iterator, [callback])\n\nThe same as [`times`](#times), only the iterator is applied in series.\nThe next `iterator` is only called once the current one has completed.\nThe results array will be in the same order as the original.\n\n<a name=\"timesLimit\" />\n### timesLimit(n, limit, iterator, [callback])\n\nThe same as [`times`](#times), except a maximum of `limit` iterators are run at a given time, similar to [`mapLimit`](#mapLimit).\n\n\n## Utils\n\n<a name=\"memoize\" />\n### memoize(fn, [hasher])\n\nCaches the results of an `async` function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\nIf 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.\n\nThe cache of results is exposed as the `memo` property of the function returned\nby `memoize`.\n\n__Arguments__\n\n* `fn` - The function to proxy and cache results from.\n* `hasher` - An optional function for generating a custom hash for storing\n  results. It has all the arguments applied to it apart from the callback, and\n  must be synchronous.\n\n__Example__\n\n```js\nvar slow_fn = function (name, callback) {\n    // do something\n    callback(null, result);\n};\nvar fn = async.memoize(slow_fn);\n\n// fn can now be used as if it were slow_fn\nfn('some name', function () {\n    // callback\n});\n```\n\n<a name=\"unmemoize\" />\n### unmemoize(fn)\n\nUndoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized\nform. Handy for testing.\n\n__Arguments__\n\n* `fn` - the memoized function\n\n---------------------------------------\n\n<a name=\"ensureAsync\" />\n### ensureAsync(fn)\n\nWrap 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.\n\n__Arguments__\n\n* `fn` - an async function, one that expects a node-style callback as its last argument\n\nReturns a wrapped function with the exact same call signature as the function passed in.\n\n__Example__\n\n```js\nfunction sometimesAsync(arg, callback) {\n  if (cache[arg]) {\n    return callback(null, cache[arg]); // this would be synchronous!!\n  } else {\n    doSomeIO(arg, callback); // this IO would be asynchronous\n  }\n}\n\n// this has a risk of stack overflows if many results are cached in a row\nasync.mapSeries(args, sometimesAsync, done);\n\n// this will defer sometimesAsync's callback if necessary,\n// preventing stack overflows\nasync.mapSeries(args, async.ensureAsync(sometimesAsync), done);\n\n```\n\n---------------------------------------\n\n<a name=\"constant\">\n### constant(values...)\n\nReturns 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`.\n\n__Example__\n\n```js\nasync.waterfall([\n  async.constant(42),\n  function (value, next) {\n    // value === 42\n  },\n  //...\n], callback);\n\nasync.waterfall([\n  async.constant(filename, \"utf8\"),\n  fs.readFile,\n  function (fileData, next) {\n    //...\n  }\n  //...\n], callback);\n\nasync.auto({\n  hostname: async.constant(\"https://server.net/\"),\n  port: findFreePort,\n  launchServer: [\"hostname\", \"port\", function (cb, options) {\n    startServer(options, cb);\n  }],\n  //...\n}, callback);\n\n```\n\n---------------------------------------\n\n<a name=\"asyncify\">\n<a name=\"wrapSync\">\n### asyncify(func)\n\n*Alias: wrapSync*\n\nTake 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.\n\n__Example__\n\n```js\nasync.waterfall([\n  async.apply(fs.readFile, filename, \"utf8\"),\n  async.asyncify(JSON.parse),\n  function (data, next) {\n    // data is the result of parsing the text.\n    // If there was a parsing error, it would have been caught.\n  }\n], callback)\n```\n\n---------------------------------------\n\n<a name=\"log\" />\n### log(function, arguments)\n\nLogs the result of an `async` function to the `console`. Only works in Node.js or\nin browsers that support `console.log` and `console.error` (such as FF and Chrome).\nIf multiple arguments are returned from the async function, `console.log` is\ncalled on each argument in order.\n\n__Arguments__\n\n* `function` - The function you want to eventually apply all arguments to.\n* `arguments...` - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n    setTimeout(function(){\n        callback(null, 'hello ' + name);\n    }, 1000);\n};\n```\n```js\nnode> async.log(hello, 'world');\n'hello world'\n```\n\n---------------------------------------\n\n<a name=\"dir\" />\n### dir(function, arguments)\n\nLogs the result of an `async` function to the `console` using `console.dir` to\ndisplay the properties of the resulting object. Only works in Node.js or\nin browsers that support `console.dir` and `console.error` (such as FF and Chrome).\nIf multiple arguments are returned from the async function, `console.dir` is\ncalled on each argument in order.\n\n__Arguments__\n\n* `function` - The function you want to eventually apply all arguments to.\n* `arguments...` - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n    setTimeout(function(){\n        callback(null, {hello: name});\n    }, 1000);\n};\n```\n```js\nnode> async.dir(hello, 'world');\n{hello: 'world'}\n```\n\n---------------------------------------\n\n<a name=\"noConflict\" />\n### noConflict()\n\nChanges the value of `async` back to its original value, returning a reference to the\n`async` object.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/caolan/async/issues"},"homepage":"https://github.com/caolan/async#readme","keywords":["async","callback","utility","module"],"license":"MIT","_attachments":{},"_etag":"\"4L77IB3G4SJ394L9NKAE5R51R\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/atom-space-pen-views/.cache.json b/atom/.apm/registry.npmjs.org/atom-space-pen-views/.cache.json
new file mode 100644 (file)
index 0000000..9ce4b39
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"atom-space-pen-views","_rev":"58-a2a86ef86272134f513b8fdbc16ef677","name":"atom-space-pen-views","description":"Atom SpacePen views that used to live in core.","dist-tags":{"latest":"2.0.5"},"versions":{"0.1.0":{"name":"atom-space-pen-views","version":"0.1.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"29922807a4258c6d557e467f34058c096bb2eb60","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.1.0","_shasum":"6a8541ac5611342fe3bd01470d0cabc939393681","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"6a8541ac5611342fe3bd01470d0cabc939393681","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.1.0.tgz"},"directories":{}},"0.2.0":{"name":"atom-space-pen-views","version":"0.2.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"035792c8593c2f706b310b6d955e18768417ae44","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.2.0","_shasum":"773624b339095a9c863456fbcf4cae178c4d4c2d","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"773624b339095a9c863456fbcf4cae178c4d4c2d","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.2.0.tgz"},"directories":{}},"0.3.0":{"name":"atom-space-pen-views","version":"0.3.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"5e3aba1b73fd45dc3e6f6c1acb0fad06b9331e6e","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.3.0","_shasum":"2263070c26f7915aa52fd874a2283e328597e624","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"2263070c26f7915aa52fd874a2283e328597e624","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.3.0.tgz"},"directories":{}},"0.4.0":{"name":"atom-space-pen-views","version":"0.4.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"d0aa5125bfa38cce2c2d8fad86a48c80ad2bdd07","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.4.0","_shasum":"9693e927fe2e0ab7ff07322d0ee78b9b57d6fc03","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"9693e927fe2e0ab7ff07322d0ee78b9b57d6fc03","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.4.0.tgz"},"directories":{}},"0.5.0":{"name":"atom-space-pen-views","version":"0.5.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"4ce324415be18d81c2f06958abd98a659e018ac9","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.5.0","_shasum":"dda2aca056bf103fda54627788a63142ccffed62","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"dda2aca056bf103fda54627788a63142ccffed62","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.5.0.tgz"},"directories":{}},"0.6.0":{"name":"atom-space-pen-views","version":"0.6.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"4d61d5ce459a7ba072f02974d1d148080363969d","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.6.0","_shasum":"d931e3c683a9b0e157a693df3dde537d8f8c1b06","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"d931e3c683a9b0e157a693df3dde537d8f8c1b06","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.6.0.tgz"},"directories":{}},"0.7.0":{"name":"atom-space-pen-views","version":"0.7.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"331cf48490a698e265686ac10031ee9f34f29742","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.7.0","_shasum":"1f2a948d7e942bd0a53d9d60cf59a10d2f7a9b32","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"1f2a948d7e942bd0a53d9d60cf59a10d2f7a9b32","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.7.0.tgz"},"directories":{}},"0.8.0":{"name":"atom-space-pen-views","version":"0.8.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.0.2"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"776c0eb0f9b960e1bba4b2ba66f0a4dcfab401b9","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.8.0","_shasum":"7cfa29e38bef0390c70d9fb6e87939fa2b43d9e7","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"7cfa29e38bef0390c70d9fb6e87939fa2b43d9e7","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.8.0.tgz"},"directories":{}},"0.9.0":{"name":"atom-space-pen-views","version":"0.9.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"9aa6450e515b1c2aeffc459156e9a08073cbd288","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.9.0","_shasum":"5a99ee4ac1608db8d92787e591199b2d5a4fa39d","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"5a99ee4ac1608db8d92787e591199b2d5a4fa39d","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.9.0.tgz"},"directories":{}},"0.10.0":{"name":"atom-space-pen-views","version":"0.10.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"bf496a8fa1ba7e88a7c590f4790c148bd861db29","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.10.0","_shasum":"3efed9951f8e27ecd9da4b7c6a53d3f1e47f654e","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"3efed9951f8e27ecd9da4b7c6a53d3f1e47f654e","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.10.0.tgz"},"directories":{}},"0.11.0":{"name":"atom-space-pen-views","version":"0.11.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"d3244a2a9f39031a73e70372ecd2fd64a200f11f","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.11.0","_shasum":"4963b92de3a13fc8172bb5ac5437e31e24346b6f","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"4963b92de3a13fc8172bb5ac5437e31e24346b6f","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.11.0.tgz"},"directories":{}},"0.13.0":{"name":"atom-space-pen-views","version":"0.13.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"742768be175def710419462b7b7d1785bb99055f","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.13.0","_shasum":"264c63d3667fa39bbeff5b354dae8da4a6f1fa17","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"264c63d3667fa39bbeff5b354dae8da4a6f1fa17","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.13.0.tgz"},"directories":{}},"0.14.0":{"name":"atom-space-pen-views","version":"0.14.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"be449b1435bafa5ed458d6517de5c5f28c97fbcb","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.14.0","_shasum":"55251cfee4611949a976f0bcae75b2fc89064d11","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"55251cfee4611949a976f0bcae75b2fc89064d11","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.14.0.tgz"},"directories":{}},"0.15.0":{"name":"atom-space-pen-views","version":"0.15.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"38d1b933d8c287f429e25494e2f82d790443a2a3","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.15.0","_shasum":"594a656d4593c1af2062a97f1219005d8d311021","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"594a656d4593c1af2062a97f1219005d8d311021","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.15.0.tgz"},"directories":{}},"0.16.0":{"name":"atom-space-pen-views","version":"0.16.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"65ba384aa1094c0ac07a89f524ae0daa40dc1a87","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.16.0","_shasum":"73ce03fb582e9af608c47499ba84e63a9ce844e3","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"73ce03fb582e9af608c47499ba84e63a9ce844e3","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.16.0.tgz"},"directories":{}},"0.17.0":{"name":"atom-space-pen-views","version":"0.17.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.1.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"50a16d5424f6564146957e84e4a66d8465ff345c","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.17.0","_shasum":"575acc87821cf55b0584f4cec0e44f1323f49cf2","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"575acc87821cf55b0584f4cec0e44f1323f49cf2","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.17.0.tgz"},"directories":{}},"0.18.0":{"name":"atom-space-pen-views","version":"0.18.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.2.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c4dcae1e5c0591665a99a453ced1a215acf0d878","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.18.0","_shasum":"d7e372e1c327bb35ef5496c8adddfa8a242d71eb","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"d7e372e1c327bb35ef5496c8adddfa8a242d71eb","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.18.0.tgz"},"directories":{}},"0.19.0":{"name":"atom-space-pen-views","version":"0.19.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.2.2"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"8da5806990d2c6fce6e1d02b4842ec38c2767c0c","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.19.0","_shasum":"31ddba42745fa63ddc6f23cefc3bd1aae281bc8f","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"31ddba42745fa63ddc6f23cefc3bd1aae281bc8f","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.19.0.tgz"},"directories":{}},"0.20.0":{"name":"atom-space-pen-views","version":"0.20.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.2.2"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"cbb2f0d2e1b3295f5a56388fdd61850ccf1b531f","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.20.0","_shasum":"552401bc4324a85772b20e96aac0a4650be937de","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"552401bc4324a85772b20e96aac0a4650be937de","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.20.0.tgz"},"directories":{}},"0.21.0":{"name":"atom-space-pen-views","version":"0.21.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^0.12.0","space-pen":"^4.3.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c9d2dff2aa5d3acc89b5ab16ad2b69721c6d0034","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@0.21.0","_shasum":"4a281b0c795e4e06c9728fb7470d2e5314a50424","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"4a281b0c795e4e06c9728fb7470d2e5314a50424","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-0.21.0.tgz"},"directories":{}},"1.0.0":{"name":"atom-space-pen-views","version":"1.0.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^4.3.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"728ed56a53c322336e8f9ca0953863057d3c46e6","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@1.0.0","_shasum":"3bc6d101155c155cf5699b08a792c0521cee03cb","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"3bc6d101155c155cf5699b08a792c0521cee03cb","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-1.0.0.tgz"},"directories":{}},"2.0.0":{"name":"atom-space-pen-views","version":"2.0.0","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^5.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"f2cebf47e493a22cc1f7041f13ec305978e35719","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.0","_shasum":"d77f43d9e136a207a7c4f19e1fe5a3e80c671826","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"d77f43d9e136a207a7c4f19e1fe5a3e80c671826","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.0.tgz"},"directories":{}},"2.0.1":{"name":"atom-space-pen-views","version":"2.0.1","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^5.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"dd6e395ec8352ecd21aca8e36ac19f3dfff15ada","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.1","_shasum":"0a86e99d434c38ceaf7c35bb9036e8119b926f9a","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"0a86e99d434c38ceaf7c35bb9036e8119b926f9a","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.1.tgz"},"directories":{}},"2.0.2":{"name":"atom-space-pen-views","version":"2.0.2","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^5.0.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c02b4aa42e8ebb0146ec6bb9c2808d21ea5afa93","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.2","_shasum":"b1fc5ec4e73964fad126df153980c15223a4b6ea","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"b1fc5ec4e73964fad126df153980c15223a4b6ea","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.2.tgz"},"directories":{}},"2.0.3":{"name":"atom-space-pen-views","version":"2.0.3","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{"prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^5.0.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"dc797a4547ca94429bdec8fd1ad3f573ae179f80","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.3","_shasum":"1310bd62459d7694a5939ff5ec3c62b060bae587","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"1310bd62459d7694a5939ff5ec3c62b060bae587","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.3.tgz"},"directories":{}},"2.0.4":{"name":"atom-space-pen-views","version":"2.0.4","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{"prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","grim":"^1.0.0","space-pen":"^5.0.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c05388fe0988421c3400180a1df7b73ddc055ffa","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.4","_shasum":"9ce135c57fd762d39c1afcd1540a59f6947a25c7","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"9ce135c57fd762d39c1afcd1540a59f6947a25c7","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.4.tgz"},"directories":{}},"2.0.5":{"name":"atom-space-pen-views","version":"2.0.5","description":"Atom SpacePen views that used to live in core.","main":"./lib/main","scripts":{"prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"}],"dependencies":{"fuzzaldrin":"^2.1.0","space-pen":"^5.0.1"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"0e5fc262cc62d453bbd6dce9ecaec5caddc553f9","homepage":"https://github.com/atom/atom-space-pen-views","_id":"atom-space-pen-views@2.0.5","_shasum":"4ef545a6ef396c8342717b0d9d2569577a2651f4","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"4ef545a6ef396c8342717b0d9d2569577a2651f4","tarball":"http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.5.tgz"},"directories":{}}},"readme":"# Atom SpacePen Views [![Build Status](https://travis-ci.org/atom/atom-space-pen-views.svg?branch=master)](https://travis-ci.org/atom/atom-space-pen-views)\n\nThis library contains SpacePen views that used to be provided as part of Atom\nCore. `TextEditorView`, `SelectListView`, and `ScrollView` exports from the\n`atom` module are now deprecated will soon be removed, but can still be used in\npackages by depending on this library in your `package.json`.\n\n## TextEditorView\n\nA text editor can now be created in Atom by inserting an `<atom-text-editor>`\ntag in any location you want an editor. However, if you still want to use the\nSpacePen view in order to conveniently convert packages off the deprecated\nexport, you can use this class.\n\n### Example\n\n```coffee\n{View} = require 'space-pen'\n{TextEditorView} = require 'atom-space-pen-views'\n\nclass MyView extends View\n  @content: ->\n    @div =>\n      @div \"Type your answer:\"\n      @subview 'answer', new TextEditorView(mini: true)\n```\n\n### Constructor Params\n\nPass an optional params object to the constructor with the following keys:\n\n* `mini` If `true`, will construct a single-line editor for use as an input\n    field.\n* `placeholderText` A string of placeholder text to appear in the editor when\n    empty\n\n### Methods\n\n#### `::getModel`\n\nReturns the underlying `TextEditor` model instance.\n\n## ScrollView\n\n Handles several core events to update scroll position:\n\n * `core:move-up` Scrolls the view up\n * `core:move-down` Scrolls the view down\n * `core:page-up` Scrolls the view up by the height of the page\n * `core:page-down` Scrolls the view down by the height of the page\n * `core:move-to-top` Scrolls the editor to the top\n * `core:move-to-bottom` Scroll the editor to the bottom\n\n Subclasses must call `super` if overriding the `initialize` method.\n\n### Example\n\n ```coffee\n {ScrollView} = require 'atom-space-pen-views'\n\n class MyView extends ScrollView\n   @content: ->\n     @div()\n\n   initialize: ->\n     super\n     @text('super long content that will scroll')\n ```\n\n## SelectListView\n\nEssential: Provides a view that renders a list of items with an editor that\nfilters the items. Used by many packages such as the fuzzy-finder,\ncommand-palette, symbols-view and autocomplete.\n\n\n### Example\n\n```coffee\n{SelectListView} = require 'atom-space-pen-views'\n\nclass MySelectListView extends SelectListView\n initialize: ->\n   super\n   @addClass('overlay from-top')\n   @setItems(['Hello', 'World'])\n   atom.workspaceView.append(this)\n   @focusFilterEditor()\n\n viewForItem: (item) ->\n   \"<li>#{item}</li>\"\n\n confirmed: (item) ->\n   console.log(\"#{item} was selected\")\n```\n\n## Methods\n\n### Subclasses Must Implement\n\n#### `::viewForItem`\n\nCreate a view for the given model item. This method must be overridden by\nsubclasses. Called when the item is about to appended to the list view.\n\n* `item` The model item being rendered. This will always be one of the items\n  previously passed to `::setItems`.\n\nReturns a String of HTML, DOM element, jQuery object, or View.\n\n#### `::confirmed`\n\nCallback function for when an item is selected. This method must\nbe overridden by subclasses.\n\n* `item` The selected model item. This will always be one of the items\n  previously passed to `::setItems`.\n\nReturns a DOM element, jQuery object, or {View}.\n\n### Managing the list of items\n\n#### `::setItems`\n\nSet the array of items to display in the list. This should be\nmodel items, not actual views. `::viewForItem` will be called to render the\nitem when it is being appended to the list view.\n\n* `items` The array of model items to display in the list (default: []).\n\n#### `::getSelectedItem`\n\nGet the model item that is currently selected in the list view.\n\n#### `::getFilterKey`\n\nGet the property name to use when filtering items.\n\nThis method may be overridden by classes to allow fuzzy filtering based\non a specific property of the item objects.\n\nFor example if the objects you pass to {::setItems} are of the type\n`{\"id\": 3, \"name\": \"Atom\"}` then you would return `\"name\"` from this method\nto fuzzy filter by that property when text is entered into this view's\neditor.\n\n\n#### `::getFilterQuery`\n\nGet the filter query to use when fuzzy filtering the visible elements.\n\nBy default this method returns the text in the mini editor but it can be\noverridden by subclasses if needed.\n\nReturns a {String} to use when fuzzy filtering the elements to display.\n\n\n#### `::setMaxItems`\n\nSet the maximum numbers of items to display in the list.\n\nThis should be called before `setItems` is called or else the first time the\nlist displays it will include all the items.\n\n* `maxItems` The maximum {Number} of items to display.\n\n#### `::populateList`\n\nExtended: Populate the list view with the model items previously set by calling\n{::setItems}.\n\nSubclasses may override this method but should always call `super`.\n\n### Messages\n\n#### `::setError`\n\nSet the error message to display.\n\n* `message` A string with an error message (default: '').\n\n#### `::setLoading`\n\nSet the loading message to display.\n\n* `message` A string with a loading message (default: '').\n\n#### `::getEmptyMessage`\n\nGet the message to display when there are no items.\n\nSubclasses may override this method to customize the message.\n\n* `itemCount` The {Number} of items in the array specified to {::setItems}\n* `filteredItemCount` The {Number} of items that pass the fuzzy filter test.\n\nReturns a {String} message (default: 'No matches found').\n\n### View Actions\n\n#### `::cancel`\n\nCancel and close this select list view.\n\nThis restores focus to the previously focused element if `::storeFocusedElement`\nwas called prior to this view being attached.\n\n#### `::focusFilterEditor`\n\nFocus the fuzzy filter editor view.\n\n#### `::storeFocusedElement`\n\nStore the currently focused element. This element will be given back focus when\n`::cancel` is called.\n","maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"time":{"modified":"2015-03-31T00:04:41.621Z","created":"2014-10-30T23:24:27.236Z","0.1.0":"2014-10-30T23:24:27.236Z","0.2.0":"2014-10-30T23:29:35.034Z","0.3.0":"2014-10-30T23:39:12.785Z","0.4.0":"2014-10-30T23:56:59.961Z","0.5.0":"2014-11-03T18:31:14.337Z","0.6.0":"2014-11-03T18:41:23.043Z","0.7.0":"2014-11-03T20:42:13.644Z","0.8.0":"2014-11-04T00:24:02.201Z","0.9.0":"2014-11-04T00:37:49.282Z","0.10.0":"2014-11-04T00:47:57.304Z","0.11.0":"2014-11-04T01:03:56.279Z","0.13.0":"2014-11-06T21:13:16.872Z","0.14.0":"2014-11-10T15:31:09.171Z","0.15.0":"2014-11-10T16:41:57.875Z","0.16.0":"2014-11-25T15:32:18.949Z","0.17.0":"2014-11-25T15:39:19.263Z","0.18.0":"2014-11-25T16:10:56.727Z","0.19.0":"2014-11-25T16:55:01.824Z","0.20.0":"2014-11-25T17:23:07.572Z","0.21.0":"2014-12-10T02:57:37.281Z","1.0.0":"2015-01-02T19:36:56.106Z","2.0.0":"2015-01-05T18:09:18.374Z","2.0.1":"2015-01-06T19:16:25.450Z","2.0.2":"2015-01-06T19:28:01.724Z","2.0.3":"2015-01-07T19:09:21.297Z","2.0.4":"2015-02-13T00:43:59.838Z","2.0.5":"2015-03-31T00:04:41.621Z"},"homepage":"https://github.com/atom/atom-space-pen-views","repository":{"type":"git","url":"https://github.com/atom/atom-space-pen-views.git"},"bugs":{"url":"https://github.com/atom/atom-space-pen-views/issues"},"readmeFilename":"README.md","users":{},"_attachments":{},"_etag":"\"XF3LP3NYB5YFNCOS8DOQ6RF9\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/coffee-script/.cache.json b/atom/.apm/registry.npmjs.org/coffee-script/.cache.json
new file mode 100644 (file)
index 0000000..0378eb1
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"coffee-script","_rev":"341-6ec827b454a5c4f4b4d7f915aefbaaca","name":"coffee-script","description":"Unfancy JavaScript","dist-tags":{"latest":"1.9.3","stable":"1.9.3"},"versions":{"0.7.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language"],"author":{"name":"Jeremy Ashkenas"},"version":"0.7.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"scripts":{"install":"sudo bin/cake install"},"_id":"coffee-script@0.7.0","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.7.0.tgz","shasum":"4a13189bb859740956d758ea3ed23c159bfa0a40"},"directories":{}},"0.7.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language"],"author":{"name":"Jeremy Ashkenas"},"version":"0.7.1","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"scripts":{"install":"sudo bin/cake install"},"_id":"coffee-script@0.7.1","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.7.1.tgz","shasum":"dd488ec141a03048a20bc23bd03b2e865650e34d"},"directories":{}},"0.7.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language"],"author":{"name":"Jeremy Ashkenas"},"version":"0.7.2","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"scripts":{"install":"bin/cake install"},"_id":"coffee-script@0.7.2","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.7.2.tgz","shasum":"3fb2401120a3d90198102cfd540b243c5302bf85"},"directories":{}},"0.9.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.0","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.0.tgz","shasum":"ff24152d6083e4cf8c2b6887e63a78fb02efd5f3"},"directories":{}},"0.9.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.1","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.1","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.1.tgz","shasum":"fc01d881e2e82dd0813afdc9124aea117dafca03"},"directories":{}},"0.9.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.2","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.2","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.2.tgz","shasum":"16b99eac4f137b7550b4e50438d00b84b545c3d4"}},"0.9.3":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.3","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.3","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.3.tgz","shasum":"09c4b206647adc5230fba2985208567aaeff8ba0"}},"0.9.4":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.4","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.4","_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.4.tgz","shasum":"98241e7caad360886920ec3bccc98b7799dfee06"}},"0.9.5":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.5","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.5","_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.5.tgz","shasum":"936ad50eca576c30edde477d9ce5c1f8138eac2f"}},"0.9.6":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"0.9.6","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.1.99"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@0.9.6","_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-0.9.6.tgz","shasum":"76a5a34e958bfaf8e25e83c48cbe0a96fdbc9804"}},"1.0.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.0.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.2.5"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@1.0.0","_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.0.0.tgz","shasum":"dc6b102c80f045e4dc02931fcee6dc4ab92c9dc1"}},"1.0.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.0.1","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.2.5"},"directories":{"lib":"./lib","bin":"./bin"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"_id":"coffee-script@1.0.1","_engineSupported":true,"_npmVersion":"0.2.16","_nodeVersion":"v0.3.7","modules":{"browser.js":"lib/browser.js","cake.js":"lib/cake.js","coffee-script.js":"lib/coffee-script.js","command.js":"lib/command.js","grammar.js":"lib/grammar.js","helpers.js":"lib/helpers.js","index.js":"lib/index.js","lexer.js":"lib/lexer.js","nodes.js":"lib/nodes.js","optparse.js":"lib/optparse.js","parser.js":"lib/parser.js","repl.js":"lib/repl.js","rewriter.js":"lib/rewriter.js","scope.js":"lib/scope.js"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"4fa0049d48208951bc9122b362f8107a560c975c","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.0.1.tgz"}},"1.1.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.1.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.2.5"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"_id":"coffee-script@1.1.0","_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.4.7","dist":{"shasum":"6b4e18b4f9e254723d379d860dfdbea663f460c7","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.1.0.tgz"}},"1.1.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.1.1","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.2.5"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"dependencies":{},"devDependencies":{},"_id":"coffee-script@1.1.1","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"b3961915e4f547354dd6178378b3073999526224","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.1.1.tgz"},"scripts":{}},"1.1.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.1.2","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.2.5"},"directories":{"lib":"./lib"},"main":"./lib/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"_npmJsonOpts":{"file":"/Users/jashkenas/.npm/coffee-script/1.1.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"coffee-script@1.1.2","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"a530a19d050c37054d83ae6c8041fba0fcd61ed3","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.1.2.tgz"},"scripts":{},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.3":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.1.3","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":"1.0.6","jison":"0.2.11"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.1.3","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"04cb82e59653fcad6ae6050900c81adf3af6d798","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.1.3.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.2.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.2.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":">=1.0.0","jison":">=0.2.0"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.2.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"b5e61e55f1ca8c4a9eb87d53aa0657ea43125b91","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.2.0.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.3.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.3.0","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":">=1.0.0","jison":">=0.2.0"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.3.0","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"08fc0bc4f6f1e24c076e7f332ffa5d445a3f8b64","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.3.0.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.3.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.3.1","licenses":[{"type":"MIT","url":"http://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":">=1.0.0","jison":">=0.2.0"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.3.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"4da0f14eb44e809e8c1d598f5513d7302a91afd7","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.3.1.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.3.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.3.2","licenses":[{"type":"MIT","url":"https://github.com/jashkenas/coffee-script/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","bugs":{"name":"https://github.com/jashkenas/coffee-script/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":">=1.0.0","jison":">=0.2.0"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.3.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"2e0d2b823422077b0f5cb0ca5c9b924d4cad0758","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.3.2.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.3.3":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.3.3","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.4.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"homepage":"http://coffeescript.org","bugs":{"name":"https://github.com/jashkenas/coffee-script/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffee-script.git"},"devDependencies":{"uglify-js":">=1.0.0","jison":">=0.2.0"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"coffee-script@1.3.3","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.18","_nodeVersion":"v0.6.16","_defaultsLoaded":true,"dist":{"shasum":"150d6b4cb522894369efed6a2101c20bc7f4a4f4","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.4.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.4.0","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.4.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":">=1.0.0","jison":">=0.2.0"},"_id":"coffee-script@1.4.0","dist":{"shasum":"5e3bc8aac26c01a8e27bf107722c5655f5ad7d36","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.5.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.5.0","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.4.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"},"_id":"coffee-script@1.5.0","dist":{"shasum":"18a66a0b68679eb1be000e50dfd0398d793f9e15","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.5.0.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.6.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.6.0","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.4.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"},"_id":"coffee-script@1.6.0","dist":{"shasum":"808b396e110f53d021a19a4ef1f65be0e8e35fa3","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.6.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.6.1","licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/coffee-script/master/LICENSE"}],"engines":{"node":">=0.4.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"},"_id":"coffee-script@1.6.1","dist":{"shasum":"34b55dedb09cef36d1b1e2908302e057f1e26068","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.6.1.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.6.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"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"},"_id":"coffee-script@1.6.2","dist":{"shasum":"fd9c88369c1e41e3307a0a160d713f22513c93b3","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.6.2.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.6.3":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.6.3","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":{"url":"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"},"_id":"coffee-script@1.6.3","dist":{"shasum":"6355d32cf1b04cdff6b484e5e711782b2f0c39be","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.6.3.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}]},"1.7.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.7.0","license":"MIT","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":{"url":"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","highlight.js":"~8.0.0","underscore":"~1.5.2"},"dependencies":{"mkdirp":"~0.3.5"},"_id":"coffee-script@1.7.0","dist":{"shasum":"dcc5fc92e45e9f5546bdb3259f9fa85b38618b1d","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.7.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.7.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.7.1","license":"MIT","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":{"url":"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","highlight.js":"~8.0.0","underscore":"~1.5.2"},"dependencies":{"mkdirp":"~0.3.5"},"_id":"coffee-script@1.7.1","dist":{"shasum":"62996a861780c75e6d5069d13822723b73404bfc","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz"},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"michaelficarra","email":"npm@michael.ficarra.me"},"maintainers":[{"name":"michaelficarra","email":"npm@michael.ficarra.me"}]},"1.8.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.8.0","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.6.2"},"dependencies":{"mkdirp":"~0.3.5"},"_id":"coffee-script@1.8.0","dist":{"shasum":"9c9f1d2b4a52a000ded15b659791703648263c1d","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}]},"1.9.0":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.9.0","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.6.2"},"gitHead":"f7692c92ce61c277a3f9a38c6bdbe712730d040a","_id":"coffee-script@1.9.0","_shasum":"7492cbbc3f0361cc5d8865aff7237552ff33e1f7","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"dist":{"shasum":"7492cbbc3f0361cc5d8865aff7237552ff33e1f7","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.9.0.tgz"}},"1.9.1":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.9.1","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.7.0"},"gitHead":"533ad8afe920b2dbf64ffb00efda45648242cc24","_id":"coffee-script@1.9.1","_shasum":"c458d02200f460d064a79cb6ab1ee6e2c9ca1c31","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"dist":{"shasum":"c458d02200f460d064a79cb6ab1ee6e2c9ca1c31","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.9.1.tgz"}},"1.9.2":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.9.2","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.7.0"},"gitHead":"46d16b5c4970c6e4d8a8d08caaed16d488a5577d","_id":"coffee-script@1.9.2","_shasum":"2da4b663c61c6d1d851788aa31f941fc7b63edf3","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"dist":{"shasum":"2da4b663c61c6d1d851788aa31f941fc7b63edf3","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.9.2.tgz"}},"1.9.3":{"name":"coffee-script","description":"Unfancy JavaScript","keywords":["javascript","language","coffeescript","compiler"],"author":{"name":"Jeremy Ashkenas"},"version":"1.9.3","license":"MIT","engines":{"node":">=0.8.0"},"directories":{"lib":"./lib/coffee-script"},"main":"./lib/coffee-script/coffee-script","bin":{"coffee":"./bin/coffee","cake":"./bin/cake"},"preferGlobal":true,"scripts":{"test":"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},"homepage":"http://coffeescript.org","bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"devDependencies":{"uglify-js":"~2.2","jison":">=0.2.0","highlight.js":"~8.0.0","underscore":"~1.5.2","docco":"~0.7.0"},"gitHead":"c37f284771e10b36239c714dcc40827510a6df5f","_id":"coffee-script@1.9.3","_shasum":"596e6e83fcfcb67c5964ab70d444beff0ac04ac7","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"dist":{"shasum":"596e6e83fcfcb67c5964ab70d444beff0ac04ac7","tarball":"http://registry.npmjs.org/coffee-script/-/coffee-script-1.9.3.tgz"}}},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"},{"name":"michaelficarra","email":"npm@michael.ficarra.me"}],"author":{"name":"Jeremy Ashkenas"},"time":{"modified":"2015-05-27T15:58:07.551Z","created":"2010-12-24T19:03:36.215Z","0.7.0":"2010-12-24T19:03:36.215Z","0.7.1":"2010-12-24T19:03:36.215Z","0.7.2":"2010-12-24T19:03:36.215Z","0.9.0":"2010-12-24T19:03:36.215Z","0.9.1":"2010-12-24T19:03:36.215Z","0.9.2":"2010-12-24T19:03:36.215Z","0.9.3":"2010-12-24T19:03:36.215Z","0.9.4":"2010-12-24T19:03:36.215Z","0.9.5":"2010-12-24T19:03:36.215Z","0.9.6":"2010-12-24T19:03:36.215Z","1.0.0":"2010-12-24T19:03:36.215Z","1.1.0-pre":"2011-02-01T03:40:06.654Z","1.0.1":"2011-02-01T03:42:04.611Z","1.1.0":"2011-05-01T16:09:17.054Z","1.1.1":"2011-05-10T13:28:00.633Z","1.1.2":"2011-08-05T03:18:50.703Z","1.1.3":"2011-11-08T23:05:16.149Z","1.2.0":"2011-12-18T20:29:34.507Z","1.3.0":"2012-04-10T18:59:43.592Z","1.3.1":"2012-04-10T21:26:52.615Z","1.3.2":"2012-05-14T18:46:02.541Z","1.3.3":"2012-05-15T16:36:07.179Z","1.4.0":"2012-10-23T20:46:30.811Z","1.5.0":"2013-02-25T08:14:10.760Z","1.6.0":"2013-03-04T20:25:15.726Z","1.6.1":"2013-03-04T22:08:53.302Z","1.6.2":"2013-03-18T05:11:22.175Z","1.6.3":"2013-06-02T05:39:20.652Z","1.7.0":"2014-01-28T19:08:17.607Z","1.7.1":"2014-01-30T05:20:53.053Z","1.8.0":"2014-08-26T16:24:25.075Z","1.9.0":"2015-01-29T17:29:06.940Z","1.9.1":"2015-02-18T20:47:50.237Z","1.9.2":"2015-04-15T15:49:36.001Z","1.9.3":"2015-05-27T15:58:07.551Z"},"repository":{"type":"git","url":"git://github.com/jashkenas/coffeescript.git"},"users":{"thejh":true,"pekim":true,"linus":true,"ilikefm":true,"dodo":true,"dmalam":true,"moonpyk":true,"yazgazan":true,"kislitsyn":true,"poulejapon":true,"vrtak-cz":true,"pwnall":true,"coiscir":true,"fgribreau":true,"xenomuta":true,"sergeych":true,"m42am":true,"strathausen":true,"bencevans":true,"Scryptonite":true,"ivanvotti":true,"freethenation":true,"meryn":true,"stid":true,"zonetti":true,"cparker15":true,"nicohman":true,"bigluck":true,"shanewholloway":true,"fibo":true,"ajumell":true,"denisix":true,"chrisoei":true,"aniketpant":true,"mhaidarh":true,"mpinteractiv":true,"t3chnoboy":true,"piroma":true,"karudo":true,"takethefire":true,"jacques":true,"ourai":true,"green_goo":true,"mabotech":true,"tcarlsen":true,"thom_nic":true,"slang800":true,"gabeio":true,"loguncov":true,"saschamayr":true,"ericlondon":true,"s4g6":true,"kossnocorp":true,"lubelski":true,"funroll":true,"cocopas":true,"davidwbradford":true,"jasonw":true,"jkcpr":true,"dmitriiabramov":true,"chaowi":true,"oliboy50":true,"edalorzo":true,"josephdavisco":true,"davidrlee":true,"janez89":true,"onuma1004":true,"frk1705":true,"shatting":true,"sposmen":true,"maschs":true,"leighakin":true,"ryanthejuggler":true,"mswanson1524":true,"knight-of-design":true,"yourhoneysky":true,"bmpvieira":true,"jits":true,"nornalbion":true,"frdarryl":true,"henryfour":true,"louxiaojian":true,"adagio":true,"xueweijie":true,"andreaspizsa":true,"kgust":true,"smiledawgg":true,"faraday":true,"windhamdavid":true,"kewin":true,"torkristensen":true,"jhabdas":true,"nfd":true,"ivangaravito":true,"swak":true,"kuzhelov":true,"thorsson":true,"devonoel":true,"akarzim":true,"tophsic":true,"themiddleman":true,"aloesch":true,"octod":true,"pcac":true,"elliotchong":true,"nmrony":true,"mahoutsuk.ai":true,"dudley":true,"wzlikai":true,"liujiajia":true,"willhoag":true,"xavierharrell":true,"goblindegook":true,"haeck":true,"pnevares":true,"lenage":true,"pughpugh":true,"eins78":true,"jerzerak":true,"dmnsgn":true,"anmol1771":true,"rebugger":true,"msmiley":true,"jirka8":true,"goodseller":true,"walkah":true,"jimkropa":true,"jimrobs":true,"jaa":true,"pedrofelipe":true,"safinalexey":true,"cannobbio":true,"marianboda":true,"adambyrne":true,"phoenix-xsy":true,"keeyanajones":true,"austinkeeley":true,"monsterkodi":true,"arahnoid":true,"leonardorb":true,"gsholtz":true,"itonyyo":true,"crowbar":true,"kilpiban":true,"avil13":true,"moonavw":true,"makediff":true,"giovannif23":true,"leyyinad":true,"joemdavis":true,"yeltsin":true,"dolymood":true,"pomutemu":true,"xieranmaya":true,"uniquerockrz":true,"deiga":true,"flayks":true,"nwinant":true,"buzuli":true,"aliemre":true,"thepanuto":true,"enhou518":true,"mauperruolo":true,"jyounce":true,"gableroux":true,"nournia":true,"jmelanson-balihoo":true,"donkanee":true,"markthethomas":true,"mattms":true,"tamer1an":true,"slang":true,"gabriel.engel":true,"wkaifang":true,"theuves":true,"fvcproductions":true,"isyara":true,"eneepo":true,"brentlintner":true},"readme":"            {\n         }   }   {\n        {   {  }  }\n         }   }{  {\n        {  }{  }  }                    _____       __  __\n       { }{ }{  { }                   / ____|     / _|/ _|\n     .- { { }  { }} -.               | |     ___ | |_| |_ ___  ___\n    (  { } { } { } }  )              | |    / _ \\|  _|  _/ _ \\/ _ \\\n    |`-..________ ..-'|              | |___| (_) | | | ||  __/  __/\n    |                 |               \\_____\\___/|_| |_| \\___|\\___|\n    |                 ;--.\n    |                (__  \\            _____           _       _\n    |                 | )  )          / ____|         (_)     | |\n    |                 |/  /          | (___   ___ _ __ _ _ __ | |_\n    |                 (  /            \\___ \\ / __| '__| | '_ \\| __|\n    |                 |/              ____) | (__| |  | | |_) | |_\n    |                 |              |_____/ \\___|_|  |_| .__/ \\__|\n     `-.._________..-'                                  | |\n                                                        |_|\n\nCoffeeScript is a little language that compiles into JavaScript.\n\n## Installation\n\nIf you have the node package manager, npm, installed:\n\n```shell\nnpm install -g coffee-script\n```\n\nLeave off the `-g` if you don't wish to install globally. If you don't wish to use npm:\n\n```shell\ngit clone https://github.com/jashkenas/coffeescript.git\nsudo coffeescript/bin/cake install\n```\n\n## Getting Started\n\nExecute a script:\n\n```shell\ncoffee /path/to/script.coffee\n```\n\nCompile a script:\n\n```shell\ncoffee -c /path/to/script.coffee\n```\n\nFor documentation, usage, and examples, see: http://coffeescript.org/\n\nTo suggest a feature or report a bug: http://github.com/jashkenas/coffeescript/issues\n\nIf you'd like to chat, drop by #coffeescript on Freenode IRC.\n\nThe source repository: https://github.com/jashkenas/coffeescript.git\n\nChangelog: http://coffeescript.org/#changelog\n\nOur lovely and talented contributors are listed here: http://github.com/jashkenas/coffeescript/contributors\n","readmeFilename":"README.md","homepage":"http://coffeescript.org","keywords":["javascript","language","coffeescript","compiler"],"bugs":{"url":"https://github.com/jashkenas/coffeescript/issues"},"license":"MIT","_attachments":{},"_etag":"\"6RERMWTHQM2Z9MEZAX1T7HIRU\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/coffeestack/.cache.json b/atom/.apm/registry.npmjs.org/coffeestack/.cache.json
new file mode 100644 (file)
index 0000000..740d2eb
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"coffeestack","_rev":"24-094ffb1432f49fb0f6c3b05bee06352c","name":"coffeestack","description":"CoffeeScript stack trace converter","dist-tags":{"latest":"1.1.2"},"versions":{"0.1.0":{"name":"coffeestack","version":"0.1.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.7.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.1.0","dist":{"shasum":"5556244fc0889315330b733147d55d6a7136bbad","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.1.0.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.2.0":{"name":"coffeestack","version":"0.2.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.7.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.2.0","dist":{"shasum":"c1ad2239050fa3e5de60f2dfcccb99d141ff271e","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.2.0.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.3.0":{"name":"coffeestack","version":"0.3.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.7.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.3.0","dist":{"shasum":"0fc827326c060a57c6458c7454874e23552df256","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.3.0.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.4.0":{"name":"coffeestack","version":"0.4.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.7.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.4.0","dist":{"shasum":"e21bff7632c51d910389939806ac5e7d11bcfc47","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.4.0.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.5.0":{"name":"coffeestack","version":"0.5.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.7.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.5.0","dist":{"shasum":"95c40719ffc29d0a4c9a1ac9e87bc2f9e8bab23b","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.5.0.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.6.0":{"name":"coffeestack","version":"0.6.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.6.3","source-map":"~0.1.25"},"devDependencies":{"jasmine-focused":"~0.12.0","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.6.0","dist":{"shasum":"25ede538b5d5f7df97be21074dbb0a9c9902713d","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.6.0.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.7.0":{"name":"coffeestack","version":"0.7.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.7.0","source-map":"~0.1.31"},"devDependencies":{"jasmine-focused":"1.x","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"_id":"coffeestack@0.7.0","dist":{"shasum":"7ea4b801c43a04237db22cee7bc2bd7670f12171","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.7.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.8.0":{"name":"coffeestack","version":"0.8.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","source-map":"~0.1.43"},"devDependencies":{"jasmine-focused":"1.x","rimraf":"~2.2.0","grunt-cli":"~0.1.9","grunt":"~0.4.1","grunt-contrib-coffee":"~0.7.0","grunt-coffeelint":"0.0.7","grunt-shell":"~0.3.0"},"gitHead":"1d36b101e28823218c63b98c9efbccad5b4ca4c2","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@0.8.0","_shasum":"1249f83a93b14e917efe09945c39ae574bf7bf16","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"1249f83a93b14e917efe09945c39ae574bf7bf16","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-0.8.0.tgz"},"directories":{}},"1.0.0":{"name":"coffeestack","version":"1.0.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","fs-plus":"^2.5.0","source-map":"~0.1.43"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-coffeelint":"0.0.7","grunt-contrib-coffee":"~0.7.0","grunt-shell":"~0.3.0","jasmine-focused":"1.x","rimraf":"~2.2.0","temp":"^0.8.1"},"gitHead":"4970f49bcc204b2e746310013d6fdfbe7535e214","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@1.0.0","_shasum":"63849bee94d4cda8d45326ac8b089883a0976fbe","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"63849bee94d4cda8d45326ac8b089883a0976fbe","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-1.0.0.tgz"},"directories":{}},"1.1.0":{"name":"coffeestack","version":"1.1.0","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","fs-plus":"^2.5.0","source-map":"~0.1.43"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-coffeelint":"0.0.7","grunt-contrib-coffee":"~0.7.0","grunt-shell":"~0.3.0","jasmine-focused":"1.x","rimraf":"~2.2.0","temp":"^0.8.1"},"gitHead":"d5289da6eef83111b942b27712cc56c148cb8aad","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@1.1.0","_shasum":"0455f808ae3e436dd9d560f440c28a1a667bb7ea","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"0455f808ae3e436dd9d560f440c28a1a667bb7ea","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-1.1.0.tgz"},"directories":{}},"1.1.1":{"name":"coffeestack","version":"1.1.1","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","fs-plus":"^2.5.0","source-map":"~0.1.43"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-coffeelint":"0.0.7","grunt-contrib-coffee":"~0.7.0","grunt-shell":"~0.3.0","jasmine-focused":"1.x","rimraf":"~2.2.0","temp":"^0.8.1"},"gitHead":"c8994ed485d825b422bb654dccad21655f049f7c","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@1.1.1","_shasum":"3db97e23fffb81c4ec067ee61ce35f28f59c2a16","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"3db97e23fffb81c4ec067ee61ce35f28f59c2a16","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-1.1.1.tgz"},"directories":{}},"1.1.2":{"name":"coffeestack","version":"1.1.2","description":"CoffeeScript stack trace converter","main":"./index.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"license":"BSD","bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"dependencies":{"coffee-script":"~1.8.0","fs-plus":"^2.5.0","source-map":"~0.1.43"},"devDependencies":{"grunt":"~0.4.1","grunt-cli":"~0.1.9","grunt-coffeelint":"0.0.7","grunt-contrib-coffee":"~0.7.0","grunt-shell":"~0.3.0","jasmine-focused":"1.x","rimraf":"~2.2.0","temp":"^0.8.1"},"gitHead":"8484218a00e59526d9f064b64441df788526fa04","homepage":"https://github.com/kevinsawicki/coffeestack","_id":"coffeestack@1.1.2","_shasum":"35278f3beb9ce6f5d0ada1fb6e087852b657ce98","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"dist":{"shasum":"35278f3beb9ce6f5d0ada1fb6e087852b657ce98","tarball":"http://registry.npmjs.org/coffeestack/-/coffeestack-1.1.2.tgz"},"directories":{}}},"readme":"# CoffeeStack [![Build Status](https://travis-ci.org/kevinsawicki/coffeestack.png)](https://travis-ci.org/kevinsawicki/coffeestack)\n\nModule to convert JavaScript stack traces to CoffeeScript stack traces.\n\n## Installing\n\n```sh\nnpm install coffeestack\n```\n\n## Using\n\n```coffeescript\n{convertStackTrace} = require 'coffeestack'\n\ntry\n  throw new Error('this is an error')\ncatch error\n  console.error(convertStackTrace(error.stack))\n```\n","maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"time":{"modified":"2015-04-30T00:28:46.868Z","created":"2013-07-06T03:39:03.986Z","0.1.0":"2013-07-06T03:39:05.266Z","0.2.0":"2013-07-06T04:15:51.167Z","0.3.0":"2013-07-06T04:31:44.700Z","0.4.0":"2013-07-06T17:01:35.738Z","0.5.0":"2013-07-15T16:15:54.233Z","0.6.0":"2013-08-17T03:44:54.298Z","0.7.0":"2014-01-31T21:27:57.768Z","0.8.0":"2015-01-12T17:31:04.865Z","1.0.0":"2015-02-12T18:43:18.593Z","1.1.0":"2015-02-12T19:35:14.683Z","1.1.1":"2015-02-13T00:06:12.665Z","1.1.2":"2015-04-30T00:28:46.868Z"},"author":{"name":"Kevin Sawicki","email":"kevinsawicki@gmail.com"},"repository":{"type":"git","url":"https://github.com/kevinsawicki/coffeestack.git"},"readmeFilename":"README.md","homepage":"https://github.com/kevinsawicki/coffeestack","keywords":["CoffeeScript","JavaScript","stack","stacktrace","trace","source maps"],"bugs":{"url":"https://github.com/kevinsawicki/coffeestack/issues"},"license":"BSD","_attachments":{},"_etag":"\"CGXR22S3G35GNE15PEC9JA0YF\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/d/.cache.json b/atom/.apm/registry.npmjs.org/d/.cache.json
new file mode 100644 (file)
index 0000000..5ed5efc
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"d","_rev":"8-309ca157fbef23ba35bf2e290da3adf2","name":"d","description":"Property descriptor factory","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"d","version":"0.1.0","description":"Property descriptor factory","main":"index.js","scripts":{"test":"node node_modules/tad/bin/tad"},"repository":{"type":"git","url":"git://github.com/medikoo/d.git"},"keywords":["descriptor","es","ecmascript","ecma","property","descriptors","meta","properties"],"dependencies":{"es5-ext":"~0.9.2"},"devDependencies":{"tad":"~0.1.16"},"author":{"name":"Mariusz Nowak","email":"medikoo+d@medikoo.com","url":"http://www.medikoo.com/"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/d/issues"},"_id":"d@0.1.0","dist":{"shasum":"2dfac58b2a6c152361e933ed4c7f59115ff353e6","tarball":"http://registry.npmjs.org/d/-/d-0.1.0.tgz"},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.1":{"name":"d","version":"0.1.1","description":"Property descriptor factory","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"scripts":{"test":"node node_modules/tad/bin/tad"},"repository":{"type":"git","url":"git://github.com/medikoo/d.git"},"keywords":["descriptor","es","ecmascript","ecma","property","descriptors","meta","properties"],"dependencies":{"es5-ext":"~0.10.2"},"devDependencies":{"tad":"~0.1.21"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/d/issues"},"homepage":"https://github.com/medikoo/d","_id":"d@0.1.1","dist":{"shasum":"da184c535d18d8ee7ba2aa229b914009fae11309","tarball":"http://registry.npmjs.org/d/-/d-0.1.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}}},"readme":"# D - Property descriptor factory\n\n_Originally derived from [es5-ext](https://github.com/medikoo/es5-ext) package._\n\nDefining properties with descriptors is very verbose:\n\n```javascript\nvar Account = function () {};\nObject.defineProperties(Account.prototype, {\n  deposit: { value: function () {\n      /* ... */\n    }, configurable: true, enumerable: false, writable: true },\n  whithdraw: { value: function () {\n      /* ... */\n    }, configurable: true, enumerable: false, writable: true },\n  balance: { get: function () {\n      /* ... */\n    }, configurable: true, enumerable: false }\n});\n```\n\nD cuts that to:\n\n```javascript\nvar d = require('d');\n\nvar Account = function () {};\nObject.defineProperties(Account.prototype, {\n  deposit: d(function () {\n    /* ... */\n  }),\n  whithdraw: d(function () {\n    /* ... */\n  }),\n  balance: d.gs(function () {\n    /* ... */\n  })\n});\n```\n\nBy default, created descriptor follow characteristics of native ES5 properties, and defines values as:\n\n```javascript\n{ configurable: true, enumerable: false, writable: true }\n```\n\nYou can overwrite it by preceding _value_ argument with instruction:\n```javascript\nd('c', value); // { configurable: true, enumerable: false, writable: false }\nd('ce', value); // { configurable: true, enumerable: true, writable: false }\nd('e', value); // { configurable: false, enumerable: true, writable: false }\n\n// Same way for get/set:\nd.gs('e', value); // { configurable: false, enumerable: true }\n```\n\n### Other utilities\n\n#### autoBind(obj, props) _(d/auto-bind)_\n\nDefine methods which will be automatically bound to its instances\n\n```javascript\nvar d = require('d');\nvar autoBind = require('d/auto-bind');\n\nvar Foo = function () { this._count = 0; };\nautoBind(Foo.prototype, {\n  increment: d(function () { ++this._count; });\n});\n\nvar foo = new Foo();\n\n// Increment foo counter on each domEl click\ndomEl.addEventListener('click', foo.increment, false);\n```\n\n#### lazy(obj, props) _(d/lazy)_\n\nDefine lazy properties, which will be resolved on first access\n\n```javascript\nvar d = require('d');\nvar lazy = require('d/lazy');\n\nvar Foo = function () {};\nlazy(Foo.prototype, {\n  items: d(function () { return []; })\n});\n\nvar foo = new Foo();\nfoo.items.push(1, 2); // foo.items array created\n```\n\n## Installation\n### NPM\n\nIn your project path:\n\n\t$ npm install d\n\n### Browser\n\nYou can easily bundle _D_ for browser with [modules-webmake](https://github.com/medikoo/modules-webmake)\n\n## Tests [![Build Status](https://travis-ci.org/medikoo/d.png)](https://travis-ci.org/medikoo/d)\n\n\t$ npm test\n","maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"time":{"modified":"2014-07-18T08:32:08.676Z","created":"2013-06-20T11:13:43.686Z","0.1.0":"2013-06-20T11:13:46.851Z","0.1.1":"2014-04-24T15:41:11.066Z"},"author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"repository":{"type":"git","url":"git://github.com/medikoo/d.git"},"homepage":"https://github.com/medikoo/d","keywords":["descriptor","es","ecmascript","ecma","property","descriptors","meta","properties"],"bugs":{"url":"https://github.com/medikoo/d/issues"},"license":"MIT","readmeFilename":"README.md","users":{"julien-f":true,"goldenboy":true,"program247365":true},"_attachments":{},"_etag":"\"5WN889VUHFNNR4OEANKORJNV7\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/emissary/.cache.json b/atom/.apm/registry.npmjs.org/emissary/.cache.json
new file mode 100644 (file)
index 0000000..dbc8f05
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"emissary","_rev":"101-4e5c2dbfd44d61f76e115d685fa9d42a","name":"emissary","description":"Utility mixins for subscribing to and emitting events.","dist-tags":{"latest":"1.3.3"},"versions":{"0.1.0":{"name":"emissary","version":"0.1.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.1.0","dist":{"shasum":"0da09cf5aaad66ba997e2e6a4d1f48f4c6872535","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.1.1":{"name":"emissary","version":"0.1.1","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.1.1","dist":{"shasum":"bbeda1a1af0ad318721e8286578a672d1934010a","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.1.1.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.2.0":{"name":"emissary","version":"0.2.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0"},"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.2.0","dist":{"shasum":"50885178d524f99b440d45cd23e4f7019c3bb89c","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.3.0":{"name":"emissary","version":"0.3.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0"},"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.3.0","dist":{"shasum":"aaa59ea713cf798c7a75f623bf9a999232ac45d8","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.4.0":{"name":"emissary","version":"0.4.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0"},"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.4.0","dist":{"shasum":"97844847d826a0074b2cedf96eee9dc74dc1b0e3","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.5.0":{"name":"emissary","version":"0.5.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.5.0","dist":{"shasum":"340f9d7da9d1fdb7e51ec3fede41bc4bfadd52f1","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.5.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.6.0":{"name":"emissary","version":"0.6.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.6.0","dist":{"shasum":"d491540368e854030f6ce1561f56f85ad4cc8e02","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.7.0":{"name":"emissary","version":"0.7.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.7.0","dist":{"shasum":"83610c424b9afc16f588e51a6a2dece9e4829875","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.7.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.8.0":{"name":"emissary","version":"0.8.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.8.0","dist":{"shasum":"fea62f2f0fa9b073e8035562fce483dd28fa7dd9","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.8.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.9.0":{"name":"emissary","version":"0.9.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.9.0","dist":{"shasum":"60ecc4da3aad4f2228aff030112e834758f66564","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.9.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.10.0":{"name":"emissary","version":"0.10.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.10.0","dist":{"shasum":"3c3815e5f39b61e0d63f9ab137234d668120b8da","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.10.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.11.0":{"name":"emissary","version":"0.11.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.11.0","dist":{"shasum":"d817651f9d75832fafe28cda83c041c54545cf87","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.11.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.12.0":{"name":"emissary","version":"0.12.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.12.0","dist":{"shasum":"ac231b2b452f303e2822d71e258eaf2bed6e1429","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.12.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.13.0":{"name":"emissary","version":"0.13.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.13.0","dist":{"shasum":"9f4f726fc5f3cccc86c9c36a9147f8121e3d2795","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.13.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.14.0":{"name":"emissary","version":"0.14.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.14.0","dist":{"shasum":"7311417f9bdf135effbb82dae69d5d5a2080155c","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.14.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.15.0":{"name":"emissary","version":"0.15.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.15.0","dist":{"shasum":"5a8978cc85cb2aab20d477c60416972fdc8901ba","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.15.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.16.0":{"name":"emissary","version":"0.16.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.16.0","dist":{"shasum":"9d7964abde5e68e9fc6954bc3c6c8a980dcb68a5","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.16.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.17.0":{"name":"emissary","version":"0.17.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.5.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.17.0","dist":{"shasum":"bb078fd4f44500f4b8750f4a329988f11a3d8657","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.17.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.18.0":{"name":"emissary","version":"0.18.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.18.0","dist":{"shasum":"892afa74f730e45868b1a7799e65ea02edceb325","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.18.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.19.0":{"name":"emissary","version":"0.19.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.19.0","dist":{"shasum":"ba07227ebb3433846036f7e4b0e0634e35b27f56","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.19.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.20.0":{"name":"emissary","version":"0.20.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.20.0","dist":{"shasum":"e07c56bee84f969d903f70e95900860854991ec3","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.20.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.21.0":{"name":"emissary","version":"0.21.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.21.0","dist":{"shasum":"e8c73c7b81a5f681bcf036e0ce53ce66217b76fd","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.21.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.22.0":{"name":"emissary","version":"0.22.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.22.0","dist":{"shasum":"79d470b1396f4db2d37727fe05344840501a31bf","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.22.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.24.0":{"name":"emissary","version":"0.24.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.24.0","dist":{"shasum":"d656bbe96915418596874cc2d0dafb6ea59ccb08","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.24.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.25.0":{"name":"emissary","version":"0.25.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.25.0","dist":{"shasum":"f5da0d67be0e1242b3302aa0afa46b9006e075f4","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.25.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.26.0":{"name":"emissary","version":"0.26.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.26.0","dist":{"shasum":"d6cf86c7d54ae5a606182bb6d7ef1cf24cc44952","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.26.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.27.0":{"name":"emissary","version":"0.27.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.27.0","dist":{"shasum":"1f1d2eeaa309a4e5bfc33781eec27e4506927c89","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.27.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.28.0":{"name":"emissary","version":"0.28.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0","property-accessors":"~0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.28.0","dist":{"shasum":"af48e2cc3d233c449ce3b5f587320e20482540aa","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.28.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.29.0":{"name":"emissary","version":"0.29.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0","property-accessors":"~0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.29.0","dist":{"shasum":"30314f0eff58efa43927c30f0c6d5b4c2db1df92","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.29.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.30.0":{"name":"emissary","version":"0.30.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0","property-accessors":"~0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.30.0","dist":{"shasum":"94dca2d2cab107eb256ed0eb1c650d0736302ac7","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.30.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.31.0":{"name":"emissary","version":"0.31.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"tantamount":"~0.6.0","mixto":"0.3.0","property-accessors":"~0.1.0"},"devDependencies":{"jasmine-focused":"~0.14.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@0.31.0","dist":{"shasum":"bf9b6f4af2f3ac59a1e6222b1fea29a4a9536a63","tarball":"http://registry.npmjs.org/emissary/-/emissary-0.31.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.0.0":{"name":"emissary","version":"1.0.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"1.x"},"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@1.0.0","dist":{"shasum":"47bb514d222dc3c578ef6a72e47b87999fae50ec","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.0.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.1.0":{"name":"emissary","version":"1.1.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"1.x"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@1.1.0","dist":{"shasum":"31b40f201242a2ac0243f0f66d2c782155f0d20f","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.1.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.2.0":{"name":"emissary","version":"1.2.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","harmony-collections":"git+https://github.com/Benvie/harmony-collections.git#e81b4b808359e2def9eeeabfdee69c2989e1fe96"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@1.2.0","dist":{"shasum":"26b973f901c183a94cd12d0dbce211dbfeb55bcd","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.2.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.2.1":{"name":"emissary","version":"1.2.1","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","harmony-collections":"git+https://github.com/Benvie/harmony-collections.git#e81b4b808359e2def9eeeabfdee69c2989e1fe96"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@1.2.1","dist":{"shasum":"a00fc2bbe75c93b27832ec01b85f8f886e707227","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.2.1.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.2.2":{"name":"emissary","version":"1.2.2","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","harmony-collections":"git+https://github.com/Benvie/harmony-collections.git#e81b4b808359e2def9eeeabfdee69c2989e1fe96"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"emissary@1.2.2","dist":{"shasum":"3c4c057ca7fd09d6434ed6decd0328bae2d7b7db","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.2.2.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.3.0":{"name":"emissary","version":"1.3.0","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","harmony-collections":"git+https://github.com/Benvie/harmony-collections.git#e81b4b808359e2def9eeeabfdee69c2989e1fe96"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"81d5c308e100a7d9356b723da72b9a8719f1590e","_id":"emissary@1.3.0","_shasum":"db80ee7ffad2cc4d26326759be0ec6a473debe4f","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"db80ee7ffad2cc4d26326759be0ec6a473debe4f","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.3.0.tgz"},"directories":{}},"1.3.1":{"name":"emissary","version":"1.3.1","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","harmony-collections":"git+https://github.com/Benvie/harmony-collections.git#e81b4b808359e2def9eeeabfdee69c2989e1fe96"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"708a91a85bdec2f21757e6c06ef2fbb9d15477cc","_id":"emissary@1.3.1","_shasum":"8de1cf811462a5974ec5dce39e6e4cbc7412f06f","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"8de1cf811462a5974ec5dce39e6e4cbc7412f06f","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.3.1.tgz"},"directories":{}},"1.3.2":{"name":"emissary","version":"1.3.2","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","es6-weak-map":"^0.1.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"83df4e56a3b35a5d2108fe8274fd9ab440f6131d","_id":"emissary@1.3.2","_shasum":"96c362f064f340f318110b3cfa9bf6885c95fa24","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"96c362f064f340f318110b3cfa9bf6885c95fa24","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.3.2.tgz"},"directories":{}},"1.3.3":{"name":"emissary","version":"1.3.3","description":"Utility mixins for subscribing to and emitting events.","main":"lib/emissary.js","scripts":{"test":"grunt test","prepublish":"grunt clean lint coffee"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"bugs":{"url":"https://github.com/atom/emissary/issues"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/emissary/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"1.x","mixto":"1.x","property-accessors":"^1.1","es6-weak-map":"^0.1.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"13170d3e1f8b1cd4396d6dceb3c3bccf0887dae2","_id":"emissary@1.3.3","_shasum":"a618d92d682b232d31111dc3625a5df661799606","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"a618d92d682b232d31111dc3625a5df661799606","tarball":"http://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz"},"directories":{}}},"readme":"# Emissary – Mixins for Events [![Build Status](https://travis-ci.org/atom/emissary.svg?branch=master)](https://travis-ci.org/atom/emissary)\n\n**Achtung!** This library is currently used in Atom and various Atom dependencies, but our long-term plan is to transition away from it in favor of the simpler [event-kit](https://github.com/atom/event-kit) library. Don't depend on supporting this library forever.\n\n**Achtung Again!** The Subscriber mixin requires ES6 Harmony WeakMaps. To enable them, run your program with the  `node --harmony_collections` flag. If you're using it in a node framework such as jasmine, run its script with the flag enabled as follows: `node --harmony-collections .bin/jasmine-node specs`.\n\n## Emitter\n\nEmitter is backward-compatible with Node's event emitter, but offers more functionality. You can construct standalone `Emitter` instances or use it as a mixin.\n\n* `Emitter.extend(object)`\n  Turns the given object into an emitter by adding the appropriate methods.\n\n* `Emitter.includeInto(class)`\n  Turns the class into an emitter by extending its prototype.\n\n* `::on(eventNames, handler)`\n  Subscribe to one or more events. Events names are separated by spaces, and can optionally be namespaced with a dot-suffix. E.g. `event1 event2.namespace`.\n\n* `::once(eventName, handler)`\n  Like `::on`, but only fires the handler once before unsubscribing automatically.\n\n* `::off(eventNames[, handler])`\n  Unsubscribe to one or more events. Event names are separated by spaces. Passing a non-namespaced event name unsubscribes from every namespace for that event. Passing only a namespace unsubscribes from that entire namespace. Passing a handler removes only a subscription corresponding to the given event name(s) and that handler.\n\n* `::emit(eventName[, data...])`\n  Emit an event with the given name. If the event name is namespaced, only calls handlers for the event associated with the namespace, otherwise it fires all handlers. Handlers are called with zero or more data arguments provided after the event name.\n\n* `::pauseEvents()`\n  Buffers events instead of emitting them until `::resumeEvents` is called.\n\n* `::resumeEvents()`\n  Emits all events buffered since pausing and resumes normal emitting behavior.\n\n* `::getSubscriptionCount()`\n  Get the total number of handlers registered on the emitter.\n\n## Subscriber\n\nSubscriber works in partnership with an emitter or any object supporting subscription cancellation with `.off`. This includes standard Node event emitters and jQuery objects.\n\n* `::subscribe(object, eventNames, handler)`\n  Subscribe to the given event name(s) on the given object.\n\n* `::subscribeWith(object, methodName, eventNames, handler)`\n  Subscribe to the given object with a method other than `.on`.\n\n* `::unsubscribe([object])`\n  Cancel subscriptions previously registered with `::subscribe`. If an object is given, only unsubscribe from that object. If called without an object, unsubscribe from everything.\n","maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"time":{"modified":"2015-02-13T17:26:02.834Z","created":"2013-09-18T13:17:37.326Z","0.1.0":"2013-09-18T13:17:38.073Z","0.1.1":"2013-09-18T13:38:58.533Z","0.2.0":"2013-09-28T02:24:03.732Z","0.3.0":"2013-09-29T02:29:51.927Z","0.4.0":"2013-09-29T02:49:58.413Z","0.5.0":"2013-10-09T16:05:55.027Z","0.6.0":"2013-10-14T22:22:17.852Z","0.7.0":"2013-10-29T20:21:44.805Z","0.8.0":"2013-10-29T21:49:26.764Z","0.9.0":"2013-10-30T00:56:10.356Z","0.10.0":"2013-11-08T01:21:33.597Z","0.11.0":"2013-11-08T01:46:05.428Z","0.12.0":"2013-11-08T03:20:42.614Z","0.13.0":"2013-11-12T01:12:30.693Z","0.14.0":"2013-11-12T04:58:54.724Z","0.15.0":"2013-11-12T18:47:39.403Z","0.16.0":"2013-11-12T22:16:45.924Z","0.17.0":"2013-11-14T20:04:53.963Z","0.18.0":"2013-11-18T18:18:39.064Z","0.19.0":"2013-11-19T20:52:24.520Z","0.20.0":"2013-11-20T18:53:39.729Z","0.21.0":"2013-11-25T21:04:20.702Z","0.22.0":"2013-11-26T19:04:10.254Z","0.24.0":"2013-11-28T18:09:29.960Z","0.25.0":"2013-12-02T04:56:13.486Z","0.26.0":"2013-12-02T20:19:54.072Z","0.27.0":"2013-12-03T21:20:08.694Z","0.28.0":"2013-12-07T05:19:50.073Z","0.29.0":"2014-01-09T19:17:15.432Z","0.30.0":"2014-01-10T01:52:27.102Z","0.31.0":"2014-01-11T18:14:16.574Z","1.0.0":"2014-01-16T23:57:13.801Z","1.1.0":"2014-03-14T02:03:03.440Z","1.2.0":"2014-03-18T16:57:43.108Z","1.2.1":"2014-04-03T15:17:55.751Z","1.2.2":"2014-07-31T04:43:09.347Z","1.3.0":"2014-08-27T21:34:29.163Z","1.3.1":"2014-09-03T20:10:37.769Z","1.3.2":"2015-02-11T16:34:05.806Z","1.3.3":"2015-02-13T17:26:02.834Z"},"author":{"name":"Nathan Sobo"},"repository":{"type":"git","url":"http://github.com/atom/emissary.git"},"homepage":"http://atom.github.io/emissary","keywords":["event-emitter","events","subscribe","subscriber"],"bugs":{"url":"https://github.com/atom/emissary/issues"},"readmeFilename":"README.md","_attachments":{},"_etag":"\"69VZDMIYNOBRCJYG1B7R3WCAB\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/es5-ext/.cache.json b/atom/.apm/registry.npmjs.org/es5-ext/.cache.json
new file mode 100644 (file)
index 0000000..5102d0c
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"es5-ext","_rev":"66-7cace43d11221b496de0d689b9a76c11","name":"es5-ext","description":"ECMAScript 5 extensions and ES6 shims","dist-tags":{"latest":"0.10.7"},"versions":{"0.1.0":{"name":"es5-ext","version":"0.1.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extension","extensions"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"scripts":{"test":"node test/run"},"dependencies":{},"devDependencies":{},"_id":"es5-ext@0.1.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.5","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"16b216b0699c3249c3c62382b350d46611eea0eb","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.1.0.tgz"},"directories":{}},"0.2.0":{"name":"es5-ext","version":"0.2.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"scripts":{"test":"node test/run"},"devDependencies":{"test":"0.1.x","expresso":"0.7.x","jslint":"0.1.x"},"dependencies":{},"_id":"es5-ext@0.2.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"18a7e403db4127b77f0a724ef196ff4edd860856","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.2.0.tgz"},"directories":{}},"0.2.1":{"name":"es5-ext","version":"0.2.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"scripts":{"test":"node test/run"},"devDependencies":{"test":"0.1.x","expresso":"0.7.x","jslint":"0.1.x"},"dependencies":{},"_id":"es5-ext@0.2.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"8ba548d826fc81c858e4f71997f6164b4f7eb8fb","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.2.1.tgz"},"directories":{}},"0.3.0":{"name":"es5-ext","version":"0.3.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"dependencies":{},"devDependencies":{},"_id":"es5-ext@0.3.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"4920dd1cec7b4e98cf67d28077cdf3d56adc0581","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.3.0.tgz"},"scripts":{},"directories":{}},"0.4.0":{"name":"es5-ext","version":"0.4.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.4.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.4.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"69dc1d57e2c97485fe58ab662828f7a45a86476f","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.4.0.tgz"},"scripts":{},"directories":{}},"0.5.0":{"name":"es5-ext","version":"0.5.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.5.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.5.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"7ef8c2135c1bfc992882d7a6e28b73c58442c225","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.5.0.tgz"},"scripts":{},"directories":{}},"0.5.1":{"name":"es5-ext","version":"0.5.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.5.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.5.1","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"5331943d7aee72dd69b90a8c363119945d54e98f","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.5.1.tgz"},"scripts":{},"directories":{}},"0.6.0":{"name":"es5-ext","version":"0.6.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.6.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.6.0","dependencies":{},"devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"25aefc7c7261f6f38a62d2364bdd1ac9f677faa4","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.6.0.tgz"},"scripts":{},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.6.1":{"name":"es5-ext","version":"0.6.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"scripts":{"test":"./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.6.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.6.1","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.23","_nodeVersion":"v0.5.4-pre","_defaultsLoaded":true,"dist":{"shasum":"80c91f3e9dc08e17e155b8de452e5dab8d45b566","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.6.1.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.6.2":{"name":"es5-ext","version":"0.6.2","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"scripts":{"test":"./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"_npmJsonOpts":{"file":"/Users/medikoo/.npm/es5-ext/0.6.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"es5-ext@0.6.2","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.23","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"65dfed8b36214e177c83316cc0e6742af2c8c589","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.6.2.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.6.3":{"name":"es5-ext","version":"0.6.3","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib/index","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"scripts":{"test":"./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.6.3","dependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"53c14283b92a81474088bd856c021fe186380ba0","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.6.3.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.7.0":{"name":"es5-ext","version":"0.7.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.7.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"1c91f569b16d6667edbb405f6076c2c970635817","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.7.0.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.7.1":{"name":"es5-ext","version":"0.7.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.1.103"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.7.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"a66028700ac031842ad55300bcc792abe6c240fe","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.7.1.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.8.0":{"name":"es5-ext","version":"0.8.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.8.0","_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"954d7794f6e2f6fb9ec9b4a62e4c8bfd567c93ac","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.8.0.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.8.1":{"name":"es5-ext","version":"0.8.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.8.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"5083533c4926afee59f5b71e561d2db5954272a9","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.8.1.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.8.2":{"name":"es5-ext","version":"0.8.2","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"_id":"es5-ext@0.8.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"aba8d9e1943a895ac96837a62a39b3f55ecd94ab","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.8.2.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.9.0":{"name":"es5-ext","version":"0.9.0","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_id":"es5-ext@0.9.0","dist":{"shasum":"b0abf436fb7c87b7e7806d787cf46ed59a7baff3","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.9.0.tgz"},"_npmVersion":"1.1.61","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.9.1":{"name":"es5-ext","version":"0.9.1","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_id":"es5-ext@0.9.1","dist":{"shasum":"02d7f637c07347a12414645c876e98ba1b1904b9","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.9.1.tgz"},"_npmVersion":"1.1.61","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.9.2":{"name":"es5-ext","version":"0.9.2","description":"ECMAScript5 extensions","keywords":["ecmascript","ecmascript5","es5","extensions","ext","addons","extras","javascript","util","utils","utilities"],"author":{"name":"Mariusz Nowak","email":"medikoo+es5-ext@medikoo.com","url":"http://www.medikoo.com/"},"main":"lib","repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"bugs":{"email":"medikoo+es5-ext@medikoo.com","url":"https://github.com/medikoo/es5-ext/issues"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad lib"},"devDependencies":{"tad":"0.1.x"},"licence":"MIT","dependencies":{},"optionalDependencies":{},"_id":"es5-ext@0.9.2","dist":{"shasum":"d2e309d1f223b0718648835acf5b8823a8061f8a","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.9.2.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.10.1":{"name":"es5-ext","version":"0.10.1","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"devDependencies":{"tad":"~0.1.21"},"licence":"MIT","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.1","dist":{"shasum":"8eb6d0eb516b3d652d44c431bb1927e2dd5ee77b","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.10.2":{"name":"es5-ext","version":"0.10.2","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"engines":{"node":">=0.4"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"devDependencies":{"tad":"~0.1.21"},"licence":"MIT","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.2","dist":{"shasum":"1cb2b0aefe700151c17d08db49e480a85c565568","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.2.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.10.3":{"name":"es5-ext","version":"0.10.3","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.1","es6-symbol":"0.1.x"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"licence":"MIT","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.3","dist":{"shasum":"a1c9484880ea9023e110b429f803acb491898b83","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.3.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.10.4":{"name":"es5-ext","version":"0.10.4","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.1","es6-symbol":"0.1.x"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"licence":"MIT","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.4","dist":{"shasum":"f4d7d85d45acfbe93379d4c0948fbae6466ec876","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.4.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.10.5":{"name":"es5-ext","version":"0.10.5","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.2","es6-symbol":"~0.1.1"},"devDependencies":{"tad":"0.2","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"7cb71f45a4499e2426393a762f952158c3f0d50e","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.5","_shasum":"8393db0e26248dd4fbb16777cae6c51b012564fd","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"8393db0e26248dd4fbb16777cae6c51b012564fd","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.5.tgz"},"directories":{}},"0.10.6":{"name":"es5-ext","version":"0.10.6","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"fd4ef2f9f4a4bb23e4479a1fb56701f49623d469","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.6","_shasum":"e27d5750401a11c08259e3b9b5d3bdd3281df00a","_from":".","_npmVersion":"2.3.0","_nodeVersion":"0.11.16","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"e27d5750401a11c08259e3b9b5d3bdd3281df00a","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.6.tgz"},"directories":{}},"0.10.7":{"name":"es5-ext","version":"0.10.7","description":"ECMAScript 5 extensions and ES6 shims","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"dependencies":{"es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.2","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"5b63ee02f50dfbc70dc1f62bc66b8718af443f83","bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","_id":"es5-ext@0.10.7","_shasum":"dfaea50721301042e2d89c1719d43493fa821656","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"dfaea50721301042e2d89c1719d43493fa821656","tarball":"http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz"},"directories":{}}},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"time":{"modified":"2015-04-22T09:29:59.033Z","created":"2011-05-24T12:08:10.946Z","0.1.0":"2011-05-24T12:08:13.301Z","0.2.0":"2011-05-28T19:45:11.317Z","0.2.1":"2011-05-28T19:52:12.161Z","0.3.0":"2011-06-24T16:26:12.203Z","0.4.0":"2011-07-05T19:40:10.112Z","0.5.0":"2011-07-07T19:46:31.289Z","0.5.1":"2011-07-11T19:15:11.351Z","0.6.0":"2011-08-07T13:47:11.437Z","0.6.1":"2011-08-08T14:46:02.854Z","0.6.2":"2011-08-12T11:31:10.048Z","0.6.3":"2011-12-12T13:54:08.164Z","0.7.0":"2011-12-27T12:18:08.711Z","0.7.1":"2012-05-02T20:23:44.289Z","0.8.0":"2012-05-28T14:50:28.942Z","0.8.1":"2012-06-13T13:19:03.016Z","0.8.2":"2012-06-22T11:05:51.478Z","0.9.0":"2012-09-13T12:46:16.805Z","0.9.1":"2012-09-17T11:06:05.818Z","0.9.2":"2013-03-11T15:07:30.376Z","0.10.0":"2014-02-21T17:00:15.761Z","0.10.1":"2014-04-13T13:11:02.845Z","0.10.2":"2014-04-24T15:02:40.426Z","0.10.3":"2014-04-29T18:18:10.716Z","0.10.4":"2014-04-30T20:34:00.095Z","0.10.5":"2015-01-20T09:51:46.358Z","0.10.6":"2015-02-02T12:03:48.011Z","0.10.7":"2015-04-22T09:29:59.033Z"},"author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"repository":{"type":"git","url":"git://github.com/medikoo/es5-ext.git"},"readme":"# es5-ext\n## ECMAScript 5 extensions\n### (with respect to ECMAScript 6 standard)\n\nShims for upcoming ES6 standard and other goodies implemented strictly with ECMAScript conventions in mind.\n\nIt's designed to be used in compliant ECMAScript 5 or ECMAScript 6 environments. Older environments are not supported, although most of the features should work with correct ECMAScript 5 shim on board.\n\nWhen used in ECMAScript 6 environment, native implementation (if valid) takes precedence over shims.\n\n### Installation\n\n\t$ npm install es5-ext\n\t\nTo port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)\n\n### Usage\n\n#### ECMAScript 6 features\n\nYou can force ES6 features to be implemented in your environment, e.g. following will assign `from` function to `Array` (only if it's not implemented already).\n\n```javascript\nrequire('es5-ext/array/from/implement');\nArray.from('foo'); // ['f', 'o', 'o']\n```\n\nYou can also access shims directly, without fixing native objects. Following will return native `Array.from` if it's available and fallback to shim if it's not.\n\n```javascript\nvar aFrom = require('es5-ext/array/from');\naFrom('foo'); // ['f', 'o', 'o']\n```\n\nIf you want to use shim unconditionally (even if native implementation exists) do:\n\n```javascript\nvar aFrom = require('es5-ext/array/from/shim');\naFrom('foo'); // ['f', 'o', 'o']\n```\n\n##### List of ES6 shims\n\nIt's about properties introduced with ES6 and those that have been updated in new spec.\n\n- `Array.from` -> `require('es5-ext/array/from')`\n- `Array.of` -> `require('es5-ext/array/of')`\n- `Array.prototype.concat` -> `require('es5-ext/array/#/concat')`\n- `Array.prototype.copyWithin` -> `require('es5-ext/array/#/copy-within')`\n- `Array.prototype.entries` -> `require('es5-ext/array/#/entries')`\n- `Array.prototype.fill` -> `require('es5-ext/array/#/fill')`\n- `Array.prototype.filter` -> `require('es5-ext/array/#/filter')`\n- `Array.prototype.find` -> `require('es5-ext/array/#/find')`\n- `Array.prototype.findIndex` -> `require('es5-ext/array/#/find-index')`\n- `Array.prototype.keys` -> `require('es5-ext/array/#/keys')`\n- `Array.prototype.map` -> `require('es5-ext/array/#/map')`\n- `Array.prototype.slice` -> `require('es5-ext/array/#/slice')`\n- `Array.prototype.splice` -> `require('es5-ext/array/#/splice')`\n- `Array.prototype.values` -> `require('es5-ext/array/#/values')`\n- `Array.prototype[@@iterator]` -> `require('es5-ext/array/#/@@iterator')`\n- `Math.acosh` -> `require('es5-ext/math/acosh')`\n- `Math.asinh` -> `require('es5-ext/math/asinh')`\n- `Math.atanh` -> `require('es5-ext/math/atanh')`\n- `Math.cbrt` -> `require('es5-ext/math/cbrt')`\n- `Math.clz32` -> `require('es5-ext/math/clz32')`\n- `Math.cosh` -> `require('es5-ext/math/cosh')`\n- `Math.exmp1` -> `require('es5-ext/math/expm1')`\n- `Math.fround` -> `require('es5-ext/math/fround')`\n- `Math.hypot` -> `require('es5-ext/math/hypot')`\n- `Math.imul` -> `require('es5-ext/math/imul')`\n- `Math.log1p` -> `require('es5-ext/math/log1p')`\n- `Math.log2` -> `require('es5-ext/math/log2')`\n- `Math.log10` -> `require('es5-ext/math/log10')`\n- `Math.sign` -> `require('es5-ext/math/sign')`\n- `Math.signh` -> `require('es5-ext/math/signh')`\n- `Math.tanh` -> `require('es5-ext/math/tanh')`\n- `Math.trunc` -> `require('es5-ext/math/trunc')`\n- `Number.EPSILON` -> `require('es5-ext/number/epsilon')`\n- `Number.MAX_SAFE_INTEGER` -> `require('es5-ext/number/max-safe-integer')`\n- `Number.MIN_SAFE_INTEGER` -> `require('es5-ext/number/min-safe-integer')`\n- `Number.isFinite` -> `require('es5-ext/number/is-finite')`\n- `Number.isInteger` -> `require('es5-ext/number/is-integer')`\n- `Number.isNaN` -> `require('es5-ext/number/is-nan')`\n- `Number.isSafeInteger` -> `require('es5-ext/number/is-safe-integer')`\n- `Object.assign` -> `require('es5-ext/object/assign')`\n- `Object.keys` -> `require('es5-ext/object/keys')`\n- `Object.setPrototypeOf` -> `require('es5-ext/object/set-prototype-of')`\n- `RegExp.prototype.match` -> `require('es5-ext/reg-exp/#/match')`\n- `RegExp.prototype.replace` -> `require('es5-ext/reg-exp/#/replace')`\n- `RegExp.prototype.search` -> `require('es5-ext/reg-exp/#/search')`\n- `RegExp.prototype.split` -> `require('es5-ext/reg-exp/#/split')`\n- `RegExp.prototype.sticky` -> Implement with `require('es5-ext/reg-exp/#/sticky/implement')`, use as function with `require('es5-ext/reg-exp/#/is-sticky')`\n- `RegExp.prototype.unicode` -> Implement with `require('es5-ext/reg-exp/#/unicode/implement')`, use as function with `require('es5-ext/reg-exp/#/is-unicode')`\n- `String.fromCodePoint` -> `require('es5-ext/string/from-code-point')`\n- `String.raw` -> `require('es5-ext/string/raw')`\n- `String.prototype.codePointAt` -> `require('es5-ext/string/#/code-point-at')`\n- `String.prototype.contains` -> `require('es5-ext/string/#/contains')`\n- `String.prototype.endsWith` -> `require('es5-ext/string/#/ends-with')`\n- `String.prototype.normalize` -> `require('es5-ext/string/#/normalize')`\n- `String.prototype.repeat` -> `require('es5-ext/string/#/repeat')`\n- `String.prototype.startsWith` -> `require('es5-ext/string/#/starts-with')`\n- `String.prototype[@@iterator]` -> `require('es5-ext/string/#/@@iterator')`\n\n#### Non ECMAScript standard features\n\n__es5-ext__ provides also other utils, and implements them as if they were proposed for a standard. It mostly offers methods (not functions) which can directly be assigned to native prototypes:\n\n```javascript\nObject.defineProperty(Function.prototype, 'partial', { value: require('es5-ext/function/#/partial'),\n  configurable: true, enumerable: false, writable: true });\nObject.defineProperty(Array.prototype, 'flatten', { value: require('es5-ext/array/#/flatten'),\n  configurable: true, enumerable: false, writable: true });\nObject.defineProperty(String.prototype, 'capitalize', { value: require('es5-ext/string/#/capitalize'),\n  configurable: true, enumerable: false, writable: true });\n```\n\nSee [es5-extend](https://github.com/wookieb/es5-extend#es5-extend), a great utility that automatically will extend natives for you. \n\n__Important:__ Remember to __not__ extend natives in scope of generic reusable packages (e.g. ones you intend to publish to npm). Extending natives is fine __only__ if you're the _owner_ of the global scope, so e.g. in final project you lead development of.\n\nWhen you're in situation when native extensions are not good idea, then you should use methods indirectly:\n\n\n```javascript\nvar flatten = require('es5-ext/array/#/flatten');\n\nflatten.call([1, [2, [3, 4]]]); // [1, 2, 3, 4]\n```\n\nfor better convenience you can turn methods into functions:\n\n\n```javascript\nvar call = Function.prototype.call\nvar flatten = call.bind(require('es5-ext/array/#/flatten'));\n\nflatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]\n```\n\nYou can configure custom toolkit (like [underscorejs](http://underscorejs.org/)), and use it throughout your application\n\n```javascript\nvar util = {};\nutil.partial = call.bind(require('es5-ext/function/#/partial'));\nutil.flatten = call.bind(require('es5-ext/array/#/flatten'));\nutil.startsWith = call.bind(require('es5-ext/string/#/starts-with'));\n\nutil.flatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]\n```\n\nAs with native ones most methods are generic and can be run on any type of object.\n\n## API\n\n### Global extensions\n\n#### global _(es5-ext/global)_\n\nObject that represents global scope\n\n### Array Constructor extensions\n\n#### from(arrayLike[, mapFn[, thisArg]]) _(es5-ext/array/from)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from).  \nReturns array representation of _iterable_ or _arrayLike_. If _arrayLike_ is an instance of array, its copy is returned.\n\n#### generate([length[, …fill]]) _(es5-ext/array/generate)_\n\nGenerate an array of pre-given _length_ built of repeated arguments.\n\n#### isPlainArray(x) _(es5-ext/array/is-plain-array)_\n\nReturns true if object is plain array (not instance of one of the Array's extensions).\n\n#### of([…items]) _(es5-ext/array/of)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.of).  \nCreate an array from given arguments.\n\n#### toArray(obj) _(es5-ext/array/to-array)_\n\nReturns array representation of `obj`. If `obj` is already an array, `obj` is returned back.\n\n#### validArray(obj) _(es5-ext/array/valid-array)_\n\nReturns `obj` if it's an array, otherwise throws `TypeError`\n\n### Array Prototype extensions\n\n#### arr.binarySearch(compareFn) _(es5-ext/array/#/binary-search)_\n\nIn __sorted__ list search for index of item for which _compareFn_ returns value closest to _0_.  \nIt's variant of binary search algorithm\n\n#### arr.clear() _(es5-ext/array/#/clear)_\n\nClears the array\n\n#### arr.compact() _(es5-ext/array/#/compact)_\n\nReturns a copy of the context with all non-values (`null` or `undefined`) removed.\n\n#### arr.concat() _(es5-ext/array/#/concat)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.concat).  \nES6's version of `concat`. Supports `isConcatSpreadable` symbol, and returns array of same type as the context.\n\n#### arr.contains(searchElement[, position]) _(es5-ext/array/#/contains)_\n\nWhether list contains the given value.\n\n#### arr.copyWithin(target, start[, end]) _(es5-ext/array/#/copy-within)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.copywithin).  \n\n#### arr.diff(other) _(es5-ext/array/#/diff)_\n\nReturns the array of elements that are present in context list but not present in other list.\n\n#### arr.eIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-index-of)_\n\n_egal_ version of `indexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision\n\n#### arr.eLastIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-last-index-of)_\n\n_egal_ version of `lastIndexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision\n\n#### arr.entries() _(es5-ext/array/#/entries)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.entries).  \nReturns iterator object, which traverses the array. Each value is represented with an array, where first value is an index and second is corresponding to index value.\n\n#### arr.exclusion([…lists]]) _(es5-ext/array/#/exclusion)_\n\nReturns the array of elements that are found only in one of the lists (either context list or list provided in arguments).\n\n#### arr.fill(value[, start, end]) _(es5-ext/array/#/fill)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.fill).  \n\n#### arr.filter(callback[, thisArg]) _(es5-ext/array/#/filter)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.filter).  \nES6's version of `filter`, returns array of same type as the context.\n\n#### arr.find(predicate[, thisArg]) _(es5-ext/array/#/find)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.find).  \nReturn first element for which given function returns true\n\n#### arr.findIndex(predicate[, thisArg]) _(es5-ext/array/#/find-index)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.findindex).  \nReturn first index for which given function returns true\n\n#### arr.first() _(es5-ext/array/#/first)_\n\nReturns value for first defined index\n\n#### arr.firstIndex() _(es5-ext/array/#/first-index)_\n\nReturns first declared index of the array\n\n#### arr.flatten() _(es5-ext/array/#/flatten)_\n\nReturns flattened version of the array\n\n#### arr.forEachRight(cb[, thisArg]) _(es5-ext/array/#/for-each-right)_\n\n`forEach` starting from last element\n\n#### arr.group(cb[, thisArg]) _(es5-ext/array/#/group)_\n\nGroup list elements by value returned by _cb_ function\n\n#### arr.indexesOf(searchElement[, fromIndex]) _(es5-ext/array/#/indexes-of)_\n\nReturns array of all indexes of given value\n\n#### arr.intersection([…lists]) _(es5-ext/array/#/intersection)_\n\nComputes the array of values that are the intersection of all lists (context list and lists given in arguments)\n\n#### arr.isCopy(other) _(es5-ext/array/#/is-copy)_\n\nReturns true if both context and _other_ lists have same content\n\n#### arr.isUniq() _(es5-ext/array/#/is-uniq)_\n\nReturns true if all values in array are unique\n\n#### arr.keys() _(es5-ext/array/#/keys)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.keys).  \nReturns iterator object, which traverses all array indexes.\n\n#### arr.last() _(es5-ext/array/#/last)_\n\nReturns value of last defined index\n\n#### arr.lastIndex() _(es5-ext/array/#/last)_\n\nReturns last defined index of the array\n\n#### arr.map(callback[, thisArg]) _(es5-ext/array/#/map)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.map).  \nES6's version of `map`, returns array of same type as the context.\n\n#### arr.remove(value[, …valuen]) _(es5-ext/array/#/remove)_\n\nRemove values from the array\n\n#### arr.separate(sep) _(es5-ext/array/#/separate)_\n\nReturns array with items separated with `sep` value\n\n#### arr.slice(callback[, thisArg]) _(es5-ext/array/#/slice)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.slice).  \nES6's version of `slice`, returns array of same type as the context.\n\n#### arr.someRight(cb[, thisArg]) _(es5-ext/array/#/someRight)_\n\n`some` starting from last element\n\n#### arr.splice(callback[, thisArg]) _(es5-ext/array/#/splice)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.splice).  \nES6's version of `splice`, returns array of same type as the context.\n\n#### arr.uniq() _(es5-ext/array/#/uniq)_\n\nReturns duplicate-free version of the array\n\n#### arr.values() _(es5-ext/array/#/values)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.values).  \nReturns iterator object which traverses all array values.\n\n#### arr[@@iterator] _(es5-ext/array/#/@@iterator)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype-@@iterator).  \nReturns iterator object which traverses all array values.\n\n### Boolean Constructor extensions\n\n#### isBoolean(x) _(es5-ext/boolean/is-boolean)_\n\nWhether value is boolean\n\n### Date Constructor extensions\n\n#### isDate(x) _(es5-ext/date/is-date)_\n\nWhether value is date instance\n\n#### validDate(x) _(es5-ext/date/valid-date)_\n\nIf given object is not date throw TypeError in other case return it.\n\n### Date Prototype extensions\n\n#### date.copy(date) _(es5-ext/date/#/copy)_\n\nReturns a copy of the date object\n\n#### date.daysInMonth() _(es5-ext/date/#/days-in-month)_\n\nReturns number of days of date's month\n\n#### date.floorDay() _(es5-ext/date/#/floor-day)_\n\nSets the date time to 00:00:00.000\n\n#### date.floorMonth() _(es5-ext/date/#/floor-month)_\n\nSets date day to 1 and date time to 00:00:00.000\n\n#### date.floorYear() _(es5-ext/date/#/floor-year)_\n\nSets date month to 0, day to 1 and date time to 00:00:00.000\n\n#### date.format(pattern) _(es5-ext/date/#/format)_\n\nFormats date up to given string. Supported patterns:\n\n* `%Y` - Year with century, 1999, 2003\n* `%y` - Year without century, 99, 03\n* `%m` - Month, 01..12\n* `%d` - Day of the month 01..31\n* `%H` - Hour (24-hour clock), 00..23\n* `%M` - Minute, 00..59\n* `%S` - Second, 00..59\n* `%L` - Milliseconds, 000..999\n\n### Error Constructor extensions\n\n#### custom(message/*, code, ext*/) _(es5-ext/error/custom)_\n\nCreates custom error object, optinally extended with `code` and other extension properties (provided with `ext` object)  \n\n#### isError(x) _(es5-ext/error/is-error)_\n\nWhether value is an error (instance of `Error`).  \n\n#### validError(x) _(es5-ext/error/valid-error)_\n\nIf given object is not error throw TypeError in other case return it.\n\n### Error Prototype extensions\n\n#### err.throw() _(es5-ext/error/#/throw)_\n\nThrows error\n\n### Function Constructor extensions\n\nSome of the functions were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele\n\n#### constant(x) _(es5-ext/function/constant)_\n\nReturns a constant function that returns pregiven argument\n\n_k(x)(y)  =def  x_\n\n#### identity(x) _(es5-ext/function/identity)_\n\nIdentity function. Returns first argument\n\n_i(x)  =def  x_\n\n#### invoke(name[, …args]) _(es5-ext/function/invoke)_\n\nReturns a function that takes an object as an argument, and applies object's\n_name_ method to arguments.  \n_name_ can be name of the method or method itself.\n\n_invoke(name, …args)(object, …args2)  =def  object\\[name\\]\\(…args, …args2\\)_\n\n#### isArguments(x) _(es5-ext/function/is-arguments)_\n\nWhether value is arguments object\n\n#### isFunction(arg) _(es5-ext/function/is-function)_\n\nWether value is instance of function\n\n#### noop() _(es5-ext/function/noop)_\n\nNo operation function\n\n#### pluck(name) _(es5-ext/function/pluck)_\n\nReturns a function that takes an object, and returns the value of its _name_\nproperty\n\n_pluck(name)(obj)  =def  obj[name]_\n\n#### validFunction(arg) _(es5-ext/function/valid-function)_\n\nIf given object is not function throw TypeError in other case return it.\n\n### Function Prototype extensions\n\nSome of the methods were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele\n\n#### fn.compose([…fns]) _(es5-ext/function/#/compose)_\n\nApplies the functions in reverse argument-list order.\n\n_f1.compose(f2, f3, f4)(…args)  =def  f1(f2(f3(f4(…arg))))_\n\n#### fn.copy() _(es5-ext/function/#/copy)_\n\nProduces copy of given function\n\n#### fn.curry([n]) _(es5-ext/function/#/curry)_\n\nInvoking the function returned by this function only _n_ arguments are passed to the underlying function. If the underlying function is not saturated, the result is a function that passes all its arguments to the underlying function.  \nIf _n_ is not provided then it defaults to context function length\n\n_f.curry(4)(arg1, arg2)(arg3)(arg4)  =def  f(arg1, args2, arg3, arg4)_\n\n#### fn.lock([…args]) _(es5-ext/function/#/lock)_\n\nReturns a function that applies the underlying function to _args_, and ignores its own arguments.\n\n_f.lock(…args)(…args2)  =def  f(…args)_\n\n_Named after it's counterpart in Google Closure_\n\n#### fn.not() _(es5-ext/function/#/not)_\n\nReturns a function that returns boolean negation of value returned by underlying function.\n\n_f.not()(…args)  =def !f(…args)_\n\n#### fn.partial([…args]) _(es5-ext/function/#/partial)_\n\nReturns a function that when called will behave like context function called with initially passed arguments. If more arguments are suplilied, they are appended to initial args.\n\n_f.partial(…args1)(…args2)  =def  f(…args1, …args2)_\n\n#### fn.spread() _(es5-ext/function/#/spread)_\n\nReturns a function that applies underlying function with first list argument\n\n_f.match()(args)  =def  f.apply(null, args)_\n\n#### fn.toStringTokens() _(es5-ext/function/#/to-string-tokens)_\n\nSerializes function into two (arguments and body) string tokens. Result is plain object with `args` and `body` properties.\n\n### Math extensions\n\n#### acosh(x) _(es5-ext/math/acosh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.acosh).  \n\n#### asinh(x) _(es5-ext/math/asinh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.asinh).  \n\n#### atanh(x) _(es5-ext/math/atanh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.atanh).  \n\n#### cbrt(x) _(es5-ext/math/cbrt)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cbrt).  \n\n#### clz32(x) _(es5-ext/math/clz32)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.clz32).  \n\n#### cosh(x) _(es5-ext/math/cosh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cosh).  \n\n#### expm1(x) _(es5-ext/math/expm1)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.expm1).  \n\n#### fround(x) _(es5-ext/math/fround)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.fround).  \n\n#### hypot([…values]) _(es5-ext/math/hypot)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.hypot).  \n\n#### imul(x, y) _(es5-ext/math/imul)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.imul).  \n\n#### log1p(x) _(es5-ext/math/log1p)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log1p).  \n\n#### log2(x) _(es5-ext/math/log2)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log2).  \n\n#### log10(x) _(es5-ext/math/log10)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log10).  \n\n#### sign(x) _(es5-ext/math/sign)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sign).  \n\n#### sinh(x) _(es5-ext/math/sinh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sinh).  \n\n#### tanh(x) _(es5-ext/math/tanh)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.tanh).  \n\n#### trunc(x) _(es5-ext/math/trunc)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.trunc).  \n\n### Number Constructor extensions\n\n#### EPSILON _(es5-ext/number/epsilon)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.epsilon).  \n\nThe difference between 1 and the smallest value greater than 1 that is representable as a Number value, which is approximately 2.2204460492503130808472633361816 x 10-16.\n\n#### isFinite(x) _(es5-ext/number/is-finite)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite).  \nWhether value is finite. Differs from global isNaN that it doesn't do type coercion.\n\n#### isInteger(x) _(es5-ext/number/is-integer)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isinteger).  \nWhether value is integer.\n\n#### isNaN(x) _(es5-ext/number/is-nan)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isnan).  \nWhether value is NaN. Differs from global isNaN that it doesn't do type coercion.\n\n#### isNumber(x) _(es5-ext/number/is-number)_\n\nWhether given value is number\n\n#### isSafeInteger(x) _(es5-ext/number/is-safe-integer)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.issafeinteger).  \n\n#### MAX_SAFE_INTEGER _(es5-ext/number/max-safe-integer)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.maxsafeinteger).  \nThe value of Number.MAX_SAFE_INTEGER is 9007199254740991.\n\n#### MIN_SAFE_INTEGER _(es5-ext/number/min-safe-integer)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.minsafeinteger).  \nThe value of Number.MIN_SAFE_INTEGER is -9007199254740991 (253-1).\n\n#### toInteger(x) _(es5-ext/number/to-integer)_\n\nConverts value to integer\n\n#### toPosInteger(x) _(es5-ext/number/to-pos-integer)_\n\nConverts value to positive integer. If provided value is less than 0, then 0 is returned\n\n#### toUint32(x) _(es5-ext/number/to-uint32)_\n\nConverts value to unsigned 32 bit integer. This type is used for array lengths.\nSee: http://www.2ality.com/2012/02/js-integers.html\n\n### Number Prototype extensions\n\n#### num.pad(length[, precision]) _(es5-ext/number/#/pad)_\n\nPad given number with zeros. Returns string\n\n### Object Constructor extensions\n\n#### assign(target, source[, …sourcen]) _(es5-ext/object/assign)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).  \nExtend _target_ by enumerable own properties of other objects. If properties are already set on target object, they will be overwritten.\n\n#### clear(obj) _(es5-ext/object/clear)_\n\nRemove all enumerable own properties of the object\n\n#### compact(obj) _(es5-ext/object/compact)_\n\nReturns copy of the object with all enumerable properties that have no falsy values\n\n#### compare(obj1, obj2) _(es5-ext/object/compare)_\n\nUniversal cross-type compare function. To be used for e.g. array sort.\n\n#### copy(obj) _(es5-ext/object/copy)_\n\nReturns copy of the object with all enumerable properties.\n\n#### copyDeep(obj) _(es5-ext/object/copy-deep)_\n\nReturns deep copy of the object with all enumerable properties.\n\n#### count(obj) _(es5-ext/object/count)_\n\nCounts number of enumerable own properties on object\n\n#### create(obj[, properties]) _(es5-ext/object/create)_\n\n`Object.create` alternative that provides workaround for [V8 issue](http://code.google.com/p/v8/issues/detail?id=2804).\n\nWhen `null` is provided as a prototype, it's substituted with specially prepared object that derives from Object.prototype but has all Object.prototype properties shadowed with undefined.\n\nIt's quirky solution that allows us to have plain objects with no truthy properties but with turnable prototype.\n\nUse only for objects that you plan to switch prototypes of and be aware of limitations of this workaround.\n\n#### eq(x, y) _(es5-ext/object/eq)_\n\nWhether two values are equal, using [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.\n\n#### every(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/every)_\n\nAnalogous to Array.prototype.every. Returns true if every key-value pair in this object satisfies the provided testing function.  \nOptionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).\n\n#### filter(obj, cb[, thisArg]) _(es5-ext/object/filter)_\n\nAnalogous to Array.prototype.filter. Returns new object with properites for which _cb_ function returned truthy value.\n\n#### firstKey(obj) _(es5-ext/object/first-key)_\n\nReturns first enumerable key of the object, as keys are unordered by specification, it can be any key of an object.\n\n#### flatten(obj) _(es5-ext/object/flatten)_\n\nReturns new object, with flatten properties of input object\n\n_flatten({ a: { b: 1 }, c: { d: 1 } })  =def  { b: 1, d: 1 }_\n\n#### forEach(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/for-each)_\n\nAnalogous to Array.prototype.forEach. Calls a function for each key-value pair found in object\nOptionally _compareFn_ can be provided which assures that properties are iterated in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).\n\n#### getPropertyNames() _(es5-ext/object/get-property-names)_\n\nGet all (not just own) property names of the object\n\n#### is(x, y) _(es5-ext/object/is)_\n\nWhether two values are equal, using [_SameValue_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.\n\n#### isArrayLike(x) _(es5-ext/object/is-array-like)_\n\nWhether object is array-like object\n\n#### isCopy(x, y) _(es5-ext/object/is-copy)_\n\nTwo values are considered a copy of same value when all of their own enumerable properties have same values.\n\n#### isCopyDeep(x, y) _(es5-ext/object/is-copy-deep)_\n\nDeep comparision of objects\n\n#### isEmpty(obj) _(es5-ext/object/is-empty)_\n\nTrue if object doesn't have any own enumerable property\n\n#### isObject(arg) _(es5-ext/object/is-object)_\n\nWhether value is not primitive\n\n#### isPlainObject(arg) _(es5-ext/object/is-plain-object)_\n\nWhether object is plain object, its protototype should be Object.prototype and it cannot be host object.\n\n#### keyOf(obj, searchValue) _(es5-ext/object/key-of)_\n\nSearch object for value\n\n#### keys(obj) _(es5-ext/object/keys)_\n\n[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys).  \nES6's version of `keys`, doesn't throw on primitive input\n\n#### map(obj, cb[, thisArg]) _(es5-ext/object/map)_\n\nAnalogous to Array.prototype.map. Creates a new object with properties which values are results of calling a provided function on every key-value pair in this object.\n\n#### mapKeys(obj, cb[, thisArg]) _(es5-ext/object/map-keys)_\n\nCreate new object with same values, but remapped keys\n\n#### mixin(target, source) _(es5-ext/object/mixin)_\n\nExtend _target_ by all own properties of other objects. Properties found in both objects will be overwritten (unless they're not configurable and cannot be overwritten).\n_It was for a moment part of ECMAScript 6 draft._\n\n#### mixinPrototypes(target, …source]) _(es5-ext/object/mixin-prototypes)_\n\nExtends _target_, with all source and source's prototype properties.\nUseful as an alternative for `setPrototypeOf` in environments in which it cannot be shimmed (no `__proto__` support).\n\n#### normalizeOptions(options) _(es5-ext/object/normalize-options)_\n\nNormalizes options object into flat plain object.  \n\nUseful for functions in which we either need to keep options object for future reference or need to modify it for internal use.\n\n- It never returns input `options` object back (always a copy is created)\n- `options` can be undefined in such case empty plain object is returned.\n- Copies all enumerable properties found down prototype chain.\n\n#### primitiveSet([…names]) _(es5-ext/object/primitive-set)_\n\nCreates `null` prototype based plain object, and sets on it all property names provided in arguments to true.\n\n#### safeTraverse(obj[, …names]) _(es5-ext/object/safe-traverse)_\n\nSafe navigation of object properties. See http://wiki.ecmascript.org/doku.php?id=strawman:existential_operator\n\n#### serialize(value) _(es5-ext/object/serialize)_\n\nSerialize value into string. Differs from [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) that it serializes also dates, functions and regular expresssions.\n\n#### setPrototypeOf(object, proto) _(es5-ext/object/set-prototype-of)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.setprototypeof).  \nIf native version is not provided, it depends on existence of `__proto__` functionality, if it's missing, `null` instead of function is exposed.\n\n#### some(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/some)_\n\nAnalogous to Array.prototype.some Returns true if any key-value pair satisfies the provided\ntesting function.  \nOptionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).\n\n#### toArray(obj[, cb[, thisArg[, compareFn]]]) _(es5-ext/object/to-array)_\n\nCreates an array of results of calling a provided function on every key-value pair in this object.  \nOptionally _compareFn_ can be provided which assures that results are added in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).\n\n#### unserialize(str) _(es5-ext/object/unserialize)_\n\nUserializes value previously serialized with [serialize](#serializevalue-es5-extobjectserialize)\n\n#### validCallable(x) _(es5-ext/object/valid-callable)_\n\nIf given object is not callable throw TypeError in other case return it.\n\n#### validObject(x) _(es5-ext/object/valid-object)_\n\nThrows error if given value is not an object, otherwise it is returned.\n\n#### validValue(x) _(es5-ext/object/valid-value)_\n\nThrows error if given value is `null` or `undefined`, otherwise returns value.\n\n### RegExp Constructor extensions\n\n#### escape(str) _(es5-ext/reg-exp/escape)_\n\nEscapes string to be used in regular expression\n\n#### isRegExp(x) _(es5-ext/reg-exp/is-reg-exp)_\n\nWhether object is regular expression\n\n#### validRegExp(x) _(es5-ext/reg-exp/valid-reg-exp)_\n\nIf object is regular expression it is returned, otherwise TypeError is thrown.\n\n### RegExp Prototype extensions\n\n#### re.isSticky(x) _(es5-ext/reg-exp/#/is-sticky)_\n\nWhether regular expression has `sticky` flag.\n\nIt's to be used as counterpart to [regExp.sticky](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.sticky) if it's not implemented.\n\n#### re.isUnicode(x) _(es5-ext/reg-exp/#/is-unicode)_\n\nWhether regular expression has `unicode` flag.\n\nIt's to be used as counterpart to [regExp.unicode](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.unicode) if it's not implemented.\n\n#### re.match(string) _(es5-ext/reg-exp/#/match)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.match).  \n\n#### re.replace(string, replaceValue) _(es5-ext/reg-exp/#/replace)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.replace).  \n\n#### re.search(string) _(es5-ext/reg-exp/#/search)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.search).  \n\n#### re.split(string) _(es5-ext/reg-exp/#/search)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.split).  \n\n#### re.sticky _(es5-ext/reg-exp/#/sticky/implement)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.sticky).  \nIt's a getter, so only `implement` and `is-implemented` modules are provided.\n\n#### re.unicode _(es5-ext/reg-exp/#/unicode/implement)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.unicode).  \nIt's a getter, so only `implement` and `is-implemented` modules are provided.\n\n### String Constructor extensions\n\n#### formatMethod(fMap) _(es5-ext/string/format-method)_\n\nCreates format method. It's used e.g. to create `Date.prototype.format` method\n\n#### fromCodePoint([…codePoints]) _(es5-ext/string/from-code-point)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.fromcodepoint)\n\n#### isString(x) _(es5-ext/string/is-string)_\n\nWhether object is string\n\n#### randomUniq() _(es5-ext/string/random-uniq)_\n\nReturns randomly generated id, with guarantee of local uniqueness (no same id will be returned twice)\n\n#### raw(callSite[, …substitutions]) _(es5-ext/string/raw)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.raw)\n\n### String Prototype extensions\n\n#### str.at(pos) _(es5-ext/string/#/at)_\n\n_Proposed for ECMAScript 6/7 standard, but not (yet) in a draft_\n\nReturns a string at given position in Unicode-safe manner.\nBased on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.at).\n\n#### str.camelToHyphen() _(es5-ext/string/#/camel-to-hyphen)_\n\nConvert camelCase string to hyphen separated, e.g. one-two-three -> oneTwoThree.\nUseful when converting names from js property convention into filename convention.\n\n#### str.capitalize() _(es5-ext/string/#/capitalize)_\n\nCapitalize first character of a string\n\n#### str.caseInsensitiveCompare(str) _(es5-ext/string/#/case-insensitive-compare)_\n\nCase insensitive compare\n\n#### str.codePointAt(pos) _(es5-ext/string/#/code-point-at)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.codepointat)\n\nBased on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.codePointAt).\n\n#### str.contains(searchString[, position]) _(es5-ext/string/#/contains)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.contains)\n\nWhether string contains given string.\n\n#### str.endsWith(searchString[, endPosition]) _(es5-ext/string/#/ends-with)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.endswith).  \nWhether strings ends with given string\n\n#### str.hyphenToCamel() _(es5-ext/string/#/hyphen-to-camel)_\n\nConvert hyphen separated string to camelCase, e.g. one-two-three -> oneTwoThree.\nUseful when converting names from filename convention to js property name convention.\n\n#### str.indent(str[, count]) _(es5-ext/string/#/indent)_\n\nIndents each line with provided _str_ (if _count_ given then _str_ is repeated _count_ times).\n\n#### str.last() _(es5-ext/string/#/last)_\n\nReturn last character\n\n#### str.normalize([form]) _(es5-ext/string/#/normalize)_\n\n[_Introduced with ECMAScript 6_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize).  \nReturns the Unicode Normalization Form of a given string.  \nBased on Matsuza's version. Code used for integrated shim can be found at [github.com/walling/unorm](https://github.com/walling/unorm/blob/master/lib/unorm.js)\n\n#### str.pad(fill[, length]) _(es5-ext/string/#/pad)_\n\nPad string with _fill_.\nIf _length_ si given than _fill_ is reapated _length_ times.\nIf _length_ is negative then pad is applied from right.\n\n#### str.repeat(n) _(es5-ext/string/#/repeat)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.repeat).  \nRepeat given string _n_ times\n\n#### str.plainReplace(search, replace) _(es5-ext/string/#/plain-replace)_\n\nSimple `replace` version. Doesn't support regular expressions. Replaces just first occurrence of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).\n\n#### str.plainReplaceAll(search, replace) _(es5-ext/string/#/plain-replace-all)_\n\nSimple `replace` version. Doesn't support regular expressions. Replaces all occurrences of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).\n\n#### str.startsWith(searchString[, position]) _(es5-ext/string/#/starts-with)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.startswith).  \nWhether strings starts with given string\n\n#### str[@@iterator] _(es5-ext/string/#/@@iterator)_\n\n[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype-@@iterator).  \nReturns iterator object which traverses all string characters (with respect to unicode symbols)\n\n### Tests [![Build Status](https://travis-ci.org/medikoo/es5-ext.png)](https://travis-ci.org/medikoo/es5-ext)\n\n\t$ npm test\n","readmeFilename":"README.md","keywords":["ecmascript","ecmascript5","ecmascript6","es5","es6","extensions","ext","addons","extras","harmony","javascript","polyfill","shim","util","utils","utilities"],"bugs":{"url":"https://github.com/medikoo/es5-ext/issues"},"homepage":"https://github.com/medikoo/es5-ext","users":{"mcharytoniuk":true,"goldenboy":true,"fgvutn":true,"ruchirgodura":true,"jonatasnona":true},"license":"MIT","_attachments":{},"_etag":"\"CXF8M5X8HKQ0AHC7EZ2R94WVX\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/es6-iterator/.cache.json b/atom/.apm/registry.npmjs.org/es6-iterator/.cache.json
new file mode 100644 (file)
index 0000000..3639514
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"es6-iterator","_rev":"13-31ea75fe958c00c6c8c7c5483f4b0e7d","name":"es6-iterator","description":"Iterator abstraction based on ES6 specification","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.0":{"name":"es6-iterator","version":"0.0.0","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"dependencies":{"d":"git://github.com/medikoo/d.git","es5-ext":"git://github.com/medikoo/es5-ext.git"},"devDependencies":{"event-emitter":"git://github.com/medikoo/event-emitter.git","tad":"~0.1.19"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"_id":"es6-iterator@0.0.0","dist":{"shasum":"b3180d6bddd322f6f3f3b1ed3bc60b6b8947c8c9","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.0":{"name":"es6-iterator","version":"0.1.0","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.2","es6-symbol":"~0.1.1"},"devDependencies":{"event-emitter":"~0.3.1","tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator","_id":"es6-iterator@0.1.0","dist":{"shasum":"67df1a08d2bf1b921a09f18cf5a6ba3cd4041a39","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.1":{"name":"es6-iterator","version":"0.1.1","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.2","es6-symbol":"0.1.x"},"devDependencies":{"event-emitter":"~0.3.1","tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator","_id":"es6-iterator@0.1.1","dist":{"shasum":"5e136c899aa1c26296414f90859b73934812d275","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.2":{"name":"es6-iterator","version":"0.1.2","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.4","es6-symbol":"~0.1.1"},"devDependencies":{"event-emitter":"~0.3.1","tad":"0.2","xlint":"~0.2.1","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"3a7a93d1e20af6d3acba8e4b68fc95107c9c6613","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator","_id":"es6-iterator@0.1.2","_shasum":"a37429ead74e5c9ed95068b0dc904c568d9a9b6a","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"a37429ead74e5c9ed95068b0dc904c568d9a9b6a","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.2.tgz"},"directories":{}},"0.1.3":{"name":"es6-iterator","version":"0.1.3","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5","es6-symbol":"~2.0.1"},"devDependencies":{"event-emitter":"~0.3.3","tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"2addc362c6f139e4941cf4726eeb59e5960c5cef","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator","_id":"es6-iterator@0.1.3","_shasum":"d6f58b8c4fc413c249b4baa19768f8e4d7c8944e","_from":".","_npmVersion":"2.3.0","_nodeVersion":"0.11.16","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"d6f58b8c4fc413c249b4baa19768f8e4d7c8944e","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz"},"directories":{}},"1.0.0":{"name":"es6-iterator","version":"1.0.0","description":"Iterator abstraction based on ES6 specification","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["iterator","array","list","set","map","generator"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"dependencies":{"d":"^0.1.1","es5-ext":"^0.10.7","es6-symbol":"^2.0.1"},"devDependencies":{"event-emitter":"^0.3.3","tad":"^0.2.3","xlint":"^0.2.2","xlint-jslint-medikoo":"^0.1.3"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"bab50dcd623d51d9e5568fe3aa2ac01f6053c066","bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"homepage":"https://github.com/medikoo/es6-iterator#readme","_id":"es6-iterator@1.0.0","_shasum":"dc3fb5d4c4aa14e4d36daa79fe4e95c27d4b32d1","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.5","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"dist":{"shasum":"dc3fb5d4c4aa14e4d36daa79fe4e95c27d4b32d1","tarball":"http://registry.npmjs.org/es6-iterator/-/es6-iterator-1.0.0.tgz"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}}},"readme":"# es6-iterator\n## ECMAScript 6 Iterator interface\n\n### Installation\n\n\t$ npm install es6-iterator\n\t\nTo port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)\n\n## API\n\n### Constructors\n\n#### Iterator(list) _(es6-iterator)_\n\nAbstract Iterator interface. Meant for extensions and not to be used on its own.\n\nAccepts any _list_ object (technically object with numeric _length_ property).\n\n_Mind it doesn't iterate strings properly, for that use dedicated [StringIterator](#string-iterator)_\n\n```javascript\nvar Iterator = require('es6-iterator')\nvar iterator = new Iterator([1, 2, 3]);\n\niterator.next(); // { value: 1, done: false }\niterator.next(); // { value: 2, done: false }\niterator.next(); // { value: 3, done: false }\niterator.next(); // { value: undefined, done: true }\n```\n\n\n#### ArrayIterator(arrayLike[, kind]) _(es6-iterator/array)_\n\nDedicated for arrays and array-likes. Supports three iteration kinds:\n* __value__ _(default)_ - Iterates values\n* __key__ - Iterates indexes\n* __key+value__ - Iterates keys and indexes, each iteration value is in _[key, value]_ form.\n\n\n```javascript\nvar ArrayIterator = require('es6-iterator/array')\nvar iterator = new ArrayIterator([1, 2, 3], 'key+value');\n\niterator.next(); // { value: [0, 1], done: false }\niterator.next(); // { value: [1, 2], done: false }\niterator.next(); // { value: [2, 3], done: false }\niterator.next(); // { value: undefined, done: true }\n```\n\nMay also be used for _arguments_ objects:\n\n```javascript\n(function () {\n  var iterator = new ArrayIterator(arguments);\n\n  iterator.next(); // { value: 1, done: false }\n  iterator.next(); // { value: 2, done: false }\n  iterator.next(); // { value: 3, done: false }\n  iterator.next(); // { value: undefined, done: true }\n}(1, 2, 3));\n```\n\n#### StringIterator(str) _(es6-iterator/string)_\n\nAssures proper iteration over unicode symbols.  \nSee: http://mathiasbynens.be/notes/javascript-unicode\n\n```javascript\nvar StringIterator = require('es6-iterator/string');\nvar iterator = new StringIterator('f🙈o🙉o🙊');\n\niterator.next(); // { value: 'f', done: false }\niterator.next(); // { value: '🙈', done: false }\niterator.next(); // { value: 'o', done: false }\niterator.next(); // { value: '🙉', done: false }\niterator.next(); // { value: 'o', done: false }\niterator.next(); // { value: '🙊', done: false }\niterator.next(); // { value: undefined, done: true }\n```\n\n### Function utilities\n\n#### forOf(iterable, callback[, thisArg]) _(es6-iterator/for-of)_\n\nPolyfill for ECMAScript 6 [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) statement.\n\n```\nvar forOf = require('es6-iterator/for-of');\nvar result = [];\n\nforOf('🙈🙉🙊', function (monkey) { result.push(monkey); });\nconsole.log(result); // ['🙈', '🙉', '🙊'];\n```\n\nOptionally you can break iteration at any point:\n\n```javascript\nvar result = [];\n\nforOf([1,2,3,4]', function (val, doBreak) {\n  result.push(monkey);\n  if (val >= 3) doBreak();\n});\nconsole.log(result); // [1, 2, 3];\n```\n\n#### get(obj) _(es6-iterator/get)_\n\nReturn iterator for any iterable object.\n\n```javascript\nvar getIterator = require('es6-iterator/get');\nvar iterator = get([1,2,3]);\n\niterator.next(); // { value: 1, done: false }\niterator.next(); // { value: 2, done: false }\niterator.next(); // { value: 3, done: false }\niterator.next(); // { value: undefined, done: true }\n```\n\n#### isIterable(obj) _(es6-iterator/is-iterable)_\n\nWhether _obj_ is iterable\n\n```javascript\nvar isIterable = require('es6-iterator/is-iterable');\n\nisIterable(null); // false\nisIterable(true); // false\nisIterable('str'); // true\nisIterable(['a', 'r', 'r']); // true\nisIterable(new ArrayIterator([])); // true\n```\n\n#### validIterable(obj) _(es6-iterator/valid-iterable)_\n\nIf _obj_ is an iterable it is returned. Otherwise _TypeError_ is thrown.\n\n### Method extensions\n\n#### iterator.chain(iterator1[, …iteratorn]) _(es6-iterator/#/chain)_\n\nChain multiple iterators into one.\n\n### Tests [![Build Status](https://travis-ci.org/medikoo/es6-iterator.png)](https://travis-ci.org/medikoo/es6-iterator)\n\n\t$ npm test\n","maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"time":{"modified":"2015-06-23T15:03:49.041Z","created":"2013-10-12T09:58:13.545Z","0.0.0":"2013-10-12T09:58:21.924Z","0.1.0":"2014-04-29T11:27:36.995Z","0.1.1":"2014-04-29T11:32:11.236Z","0.1.2":"2014-11-19T14:11:17.077Z","0.1.3":"2015-02-02T12:02:06.350Z","1.0.0":"2015-06-23T15:03:49.041Z"},"author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"repository":{"type":"git","url":"git://github.com/medikoo/es6-iterator.git"},"homepage":"https://github.com/medikoo/es6-iterator#readme","keywords":["iterator","array","list","set","map","generator"],"bugs":{"url":"https://github.com/medikoo/es6-iterator/issues"},"license":"MIT","readmeFilename":"README.md","users":{"mcharytoniuk":true},"_attachments":{},"_etag":"\"24IGKV4VVOG1371ZS8BVIN3HV\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/es6-symbol/.cache.json b/atom/.apm/registry.npmjs.org/es6-symbol/.cache.json
new file mode 100644 (file)
index 0000000..e9318b6
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"es6-symbol","_rev":"15-7a225a8c37241b4509e630dc3b0533a3","name":"es6-symbol","description":"ECMAScript6 Symbol polyfill","dist-tags":{"latest":"2.0.1"},"versions":{"0.0.0":{"name":"es6-symbol","version":"0.0.0","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"dependencies":{"d":"git://github.com/medikoo/d.git","es5-ext":"git://github.com/medikoo/es5-ext.git"},"devDependencies":{"tad":"~0.1.20"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@0.0.0","dist":{"shasum":"eefb0875ccab201addb68f7a75efcf1b6dac9e14","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.0":{"name":"es6-symbol","version":"0.1.0","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.2"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@0.1.0","dist":{"shasum":"ba5878f37a652f6c713244716fc7b24d61d2dc39","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-0.1.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.1":{"name":"es6-symbol","version":"0.1.1","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.4"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"2ca76a05feafaa14c838337722562625fb5072b4","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@0.1.1","_shasum":"9cf7fab2edaff1b1da8fe8e68bfe3f5aca6ca218","_from":".","_npmVersion":"2.0.0","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"9cf7fab2edaff1b1da8fe8e68bfe3f5aca6ca218","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-0.1.1.tgz"},"directories":{}},"1.0.0":{"name":"es6-symbol","version":"1.0.0","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5"},"devDependencies":{"tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"6b33e3239fbbd2d948122691f06362df46044445","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@1.0.0","_shasum":"6213213537fc260f4688ce0f2be855b96391aaf1","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"6213213537fc260f4688ce0f2be855b96391aaf1","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-1.0.0.tgz"},"directories":{}},"2.0.0":{"name":"es6-symbol","version":"2.0.0","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5"},"devDependencies":{"tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"9cd705f8a864b220721383fac6e0a9bff44803c1","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@2.0.0","_shasum":"e22d7e04596b7f0881fc274c37c20e84f7bf33a0","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"e22d7e04596b7f0881fc274c37c20e84f7bf33a0","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.0.tgz"},"directories":{}},"2.0.1":{"name":"es6-symbol","version":"2.0.1","description":"ECMAScript6 Symbol polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["symbol","private","property","es6","ecmascript","harmony"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.5"},"devDependencies":{"tad":"~0.2.1","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"51f6938d7830269fefa38f02eb912f5472b3ccd7","bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"homepage":"https://github.com/medikoo/es6-symbol","_id":"es6-symbol@2.0.1","_shasum":"761b5c67cfd4f1d18afb234f691d678682cb3bf3","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"761b5c67cfd4f1d18afb234f691d678682cb3bf3","tarball":"http://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz"},"directories":{}}},"readme":"# es6-symbol\n## ECMAScript 6 Symbol polyfill\n\nFor more information about symbols see following links\n- [Symbols in ECMAScript 6 by Axel Rauschmayer](http://www.2ality.com/2014/12/es6-symbols.html)\n- [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol)\n- [Specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-constructor)\n\n### Limitations\n\nUnderneath it uses real string property names which can easily be retrieved, however accidental collision with other property names is unlikely.\n\n### Usage\n\nIf you'd like to use native version when it exists and fallback to polyfill if it doesn't (but without implementing `Symbol` on global scope), do:\n\n```javascript\nvar Symbol = require('es6-symbol');\n```\n\nIf you want to make sure your environment implements `Symbol`, do:\n\n```javascript\nrequire('es6-symbol/implement');\n```\n\nIf you strictly want to use polyfill even if native `Symbol` exists (hard to find a good reason for that), do:\n\n```javascript\nvar Symbol = require('es6-symbol/polyfill');\n```\n\n#### API\n\nBest is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-objects). Still if you want quick look, follow examples:\n\n```javascript\nvar Symbol = require('es6-symbol');\n\nvar symbol = Symbol('My custom symbol');\nvar x = {};\n\nx[symbol] = 'foo';\nconsole.log(x[symbol]); 'foo'\n\n// Detect iterable:\nvar iterator, result;\nif (possiblyIterable[Symbol.iterator]) {\n  iterator = possiblyIterable[Symbol.iterator]();\n  result = iterator.next();\n  while(!result.done) {\n    console.log(result.value);\n    result = iterator.next();\n  }\n}\n```\n\n### Installation\n#### NPM\n\nIn your project path:\n\n\t$ npm install es6-symbol\n\n##### Browser\n\nTo port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)\n\n## Tests [![Build Status](https://travis-ci.org/medikoo/es6-symbol.png)](https://travis-ci.org/medikoo/es6-symbol)\n\n\t$ npm test\n","maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"time":{"modified":"2015-01-28T14:38:19.554Z","created":"2013-11-15T12:11:25.866Z","0.0.0":"2013-11-15T12:11:29.632Z","0.1.0":"2014-04-28T11:49:45.925Z","0.1.1":"2014-10-07T15:35:14.524Z","1.0.0":"2015-01-26T16:12:39.514Z","2.0.0":"2015-01-28T12:21:25.862Z","2.0.1":"2015-01-28T14:38:19.554Z"},"author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"repository":{"type":"git","url":"git://github.com/medikoo/es6-symbol.git"},"homepage":"https://github.com/medikoo/es6-symbol","keywords":["symbol","private","property","es6","ecmascript","harmony"],"bugs":{"url":"https://github.com/medikoo/es6-symbol/issues"},"license":"MIT","readmeFilename":"README.md","users":{"mcharytoniuk":true,"monolithed":true},"_attachments":{},"_etag":"\"C49SUP0NX7S7SKH7HYI3L4L4Z\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/es6-weak-map/.cache.json b/atom/.apm/registry.npmjs.org/es6-weak-map/.cache.json
new file mode 100644 (file)
index 0000000..fac9055
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"es6-weak-map","_rev":"15-5b44f564c5df0da0d4b7738ae0e0733c","name":"es6-weak-map","description":"ECMAScript6 WeakMap polyfill","dist-tags":{"latest":"1.0.2"},"versions":{"0.0.0":{"name":"es6-weak-map","version":"0.0.0","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"dependencies":{"d":"git://github.com/medikoo/d.git","es5-ext":"git://github.com/medikoo/es5-ext.git","es6-iterator":"git://github.com/medikoo/es6-iterator.git","time-uuid":"git://github.com/medikoo/time-uuid.git"},"devDependencies":{"tad":"~0.1.19"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"_id":"es6-weak-map@0.0.0","dist":{"shasum":"7d265054c646afc718dd8604a530fd6d1841e2ab","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.0":{"name":"es6-weak-map","version":"0.1.0","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.2","es6-iterator":"~0.1.1","es6-symbol":"0.1.x","time-uuid":"0.2.x"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.0","dist":{"shasum":"c8084318cc9aec498a9af3f62dbb74dc67b61c1f","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"directories":{}},"0.1.1":{"name":"es6-weak-map","version":"0.1.1","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.4","es6-iterator":"~0.1.1","es6-symbol":"0.1.x","time-uuid":"~0.2.1"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.1","_shasum":"e5215968ba23c59c57559058d5350453dc2f46f6","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"e5215968ba23c59c57559058d5350453dc2f46f6","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.1.tgz"},"directories":{}},"0.1.2":{"name":"es6-weak-map","version":"0.1.2","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.4","es6-iterator":"~0.1.1","es6-symbol":"0.1.x"},"devDependencies":{"tad":"0.2.x"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"f533102fc6d79889bda099fb94f1158cff2b6517","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.2","_shasum":"bc5b5fab73f68f6f77a6b39c481fce3d7856d385","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"bc5b5fab73f68f6f77a6b39c481fce3d7856d385","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.2.tgz"},"directories":{}},"0.1.3":{"name":"es6-weak-map","version":"0.1.3","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.6","es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.2","xlint":"~0.2.2","xlint-jslint-medikoo":"~0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"426b350ff12e90741cf0c42a0c09edc460d6f825","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.3","_shasum":"5d3f509d2a422a309504ea00620b01095b67b6d7","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"5d3f509d2a422a309504ea00620b01095b67b6d7","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.3.tgz"},"directories":{}},"0.1.4":{"name":"es6-weak-map","version":"0.1.4","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"~0.1.1","es5-ext":"~0.10.6","es6-iterator":"~0.1.3","es6-symbol":"~2.0.1"},"devDependencies":{"tad":"~0.2.2"},"scripts":{"test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"e68802395b82a700257374c379cfaafe84ee8552","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@0.1.4","_shasum":"706cef9e99aa236ba7766c239c8b9e286ea7d228","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"706cef9e99aa236ba7766c239c8b9e286ea7d228","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz"},"directories":{}},"1.0.0":{"name":"es6-weak-map","version":"1.0.0","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"^0.1.1","es5-ext":"^0.10.6","es6-iterator":"^0.1.3","es6-symbol":"^2.0.1"},"devDependencies":{"tad":"^0.2.2","xlint":"^0.2.2","xlint-jslint-medikoo":"^0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"45275c27e25ecff3348557962537ea88532fb021","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@1.0.0","_shasum":"e73486473278e4041fbf65e5517768cfedf300d3","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"e73486473278e4041fbf65e5517768cfedf300d3","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-1.0.0.tgz"},"directories":{}},"1.0.1":{"name":"es6-weak-map","version":"1.0.1","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"^0.1.1","es5-ext":"^0.10.6","es6-iterator":"^0.1.3","es6-symbol":"^2.0.1"},"devDependencies":{"tad":"^0.2.2","xlint":"^0.2.2","xlint-jslint-medikoo":"^0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"9cba09eac70d69c70e25af5490501e8d69bcf23d","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@1.0.1","_shasum":"c68cd1cf5ab76011d6e4210c685c064eeea37b38","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"c68cd1cf5ab76011d6e4210c685c064eeea37b38","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-1.0.1.tgz"},"directories":{}},"1.0.2":{"name":"es6-weak-map","version":"1.0.2","description":"ECMAScript6 WeakMap polyfill","author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"keywords":["map","weakmap","collection","es6","harmony","list","hash","gc","ponyfill"],"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"dependencies":{"d":"^0.1.1","es5-ext":"^0.10.6","es6-iterator":"^0.1.3","es6-symbol":"^2.0.1"},"devDependencies":{"tad":"^0.2.2","xlint":"^0.2.2","xlint-jslint-medikoo":"^0.1.2"},"scripts":{"lint":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream","lint-console":"node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch","test":"node ./node_modules/tad/bin/tad"},"license":"MIT","gitHead":"8ebc1ccea67efc57081ac66024e4e28a88e64558","bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"homepage":"https://github.com/medikoo/es6-weak-map","_id":"es6-weak-map@1.0.2","_shasum":"769cbb261cc54bc70841536d136121f1bacb00cf","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"medikoo","email":"medikoo+npm@medikoo.com"},"maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"dist":{"shasum":"769cbb261cc54bc70841536d136121f1bacb00cf","tarball":"http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-1.0.2.tgz"},"directories":{}}},"readme":"# es6-weak-map\n## WeakMap collection as specified in ECMAScript6\n\n_Roughly inspired by Mark Miller's and Kris Kowal's [WeakMap implementation](https://github.com/drses/weak-map)_.\n\nDifferences are:\n- Assumes compliant ES5 environment (no weird ES3 workarounds or hacks)\n- Well modularized CJS style\n- Based on one solution.\n\n### Limitations\n\n- Will fail on non extensible objects provided as keys\n\n### Installation\n\n\t$ npm install es6-weak-map\n\nTo port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)\n\n### Usage\n\nIf you want to make sure your environment implements `WeakMap`, do:\n\n```javascript\nrequire('es6-weak-map/implement');\n```\n\nIf you'd like to use native version when it exists and fallback to polyfill if it doesn't, but without implementing `WeakMap` on global scope, do:\n\n```javascript\nvar WeakMap = require('es6-weak-map');\n```\n\nIf you strictly want to use polyfill even if native `WeakMap` exists, do:\n\n```javascript\nvar WeakMap = require('es6-weak-map/polyfill');\n```\n\n#### API\n\nBest is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-weakmap-objects). Still if you want quick look, follow example:\n\n```javascript\nvar WeakMap = require('es6-weak-map');\n\nvar map = new WeakMap();\nvar obj = {};\n\nmap.set(obj, 'foo'); // map\nmap.get(obj);        // 'foo'\nmap.has(obj);        // true\nmap.delete(obj);     // true\nmap.get(obj);        // undefined\nmap.has(obj);        // false\nmap.set(obj, 'bar'); // map\nmap.has(obj);        // false\n```\n\n## Tests [![Build Status](https://travis-ci.org/medikoo/es6-weak-map.svg)](https://travis-ci.org/medikoo/es6-weak-map)\n\n\t$ npm test\n","maintainers":[{"name":"medikoo","email":"medikoo+npm@medikoo.com"}],"time":{"modified":"2015-05-07T13:25:24.481Z","created":"2013-10-24T15:10:27.843Z","0.0.0":"2013-10-24T15:10:31.650Z","0.1.0":"2014-04-29T13:05:23.545Z","0.1.1":"2014-05-15T16:33:38.587Z","0.1.2":"2014-09-01T10:34:10.151Z","0.1.3":"2015-04-12T09:45:43.893Z","0.1.4":"2015-04-13T07:46:32.212Z","1.0.0":"2015-04-13T07:58:36.318Z","1.0.1":"2015-04-14T06:44:19.767Z","1.0.2":"2015-05-07T13:25:24.481Z"},"author":{"name":"Mariusz Nowak","email":"medyk@medikoo.com","url":"http://www.medikoo.com/"},"repository":{"type":"git","url":"git://github.com/medikoo/es6-weak-map.git"},"homepage":"https://github.com/medikoo/es6-weak-map","keywords":["map","weakmap","collection","es6","harmony","list","hash","gc","ponyfill"],"bugs":{"url":"https://github.com/medikoo/es6-weak-map/issues"},"license":"MIT","readmeFilename":"README.md","users":{"fgribreau":true},"_attachments":{},"_etag":"\"DX7CQ4149DHD339E3GPIVH9W8\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/event-kit/.cache.json b/atom/.apm/registry.npmjs.org/event-kit/.cache.json
new file mode 100644 (file)
index 0000000..06da726
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"event-kit","_rev":"41-46d98195d1a63b49c9fa080db43f6cd4","name":"event-kit","description":"Simple library for implementing and consuming evented APIs","dist-tags":{"latest":"1.2.0"},"versions":{"0.0.0":{"name":"event-kit","version":"0.0.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"9deb3fb67c6effa82ad9d2543243fc20746e69a8","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.0.0","_shasum":"7a2facb4b703f15644b43f131230c9ef6bd8b6db","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"7a2facb4b703f15644b43f131230c9ef6bd8b6db","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.0.0.tgz"},"directories":{}},"0.1.0":{"name":"event-kit","version":"0.1.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"af7d266963eaab44186504eb09ac3a294e46848a","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.1.0","_shasum":"e39468e66ff6dc7d9c19f1e7483d419c6ca4c0ea","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"e39468e66ff6dc7d9c19f1e7483d419c6ca4c0ea","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.1.0.tgz"},"directories":{}},"0.2.0":{"name":"event-kit","version":"0.2.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"39289d78ef39f44b7b783f086de2333c1c1d6915","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.2.0","_shasum":"8a34cb3405bb47da1e67d14e6dc011a384e39eef","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"8a34cb3405bb47da1e67d14e6dc011a384e39eef","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.2.0.tgz"},"directories":{}},"0.3.0":{"name":"event-kit","version":"0.3.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"7eb7dc828564d43333cdad54733e28945da2c224","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.3.0","_shasum":"7b6f523157057a4a64ad022ecaea74abbde4eb0b","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"7b6f523157057a4a64ad022ecaea74abbde4eb0b","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.3.0.tgz"},"directories":{}},"0.4.0":{"name":"event-kit","version":"0.4.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"a20f24d3ed8397d2a63b40cb7e061dc1620d8381","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.4.0","_shasum":"4b8178e357cd54988427b6ad3b2e5a0456e9a56e","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"4b8178e357cd54988427b6ad3b2e5a0456e9a56e","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.4.0.tgz"},"directories":{}},"0.5.0":{"name":"event-kit","version":"0.5.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"eae882ea014f06d3099cc644415a51b3de960193","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.5.0","_shasum":"4f2e097a37c4300c38821ef6edaceb67ae1fb888","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"4f2e097a37c4300c38821ef6edaceb67ae1fb888","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.5.0.tgz"},"directories":{}},"0.6.0":{"name":"event-kit","version":"0.6.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"36338e69f9af7f6dfc60be17e57b03e02fac08b7","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.6.0","_shasum":"d5de873e45c760c18db519a1d2c0239e827dcaf8","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"d5de873e45c760c18db519a1d2c0239e827dcaf8","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.6.0.tgz"},"directories":{}},"0.7.0":{"name":"event-kit","version":"0.7.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"bc40f84bc446d2c6bc94d11bccaf2232c6d98fd1","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.7.0","_shasum":"fc742c70961803b3a16688e330e02727fdab9423","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"fc742c70961803b3a16688e330e02727fdab9423","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.7.0.tgz"},"directories":{}},"0.7.1":{"name":"event-kit","version":"0.7.1","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"9399f796aac571113df6e6a0d796d02850c04e66","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.7.1","_shasum":"7226f0594fa07121e7202eb711a7021cd4d79a30","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"7226f0594fa07121e7202eb711a7021cd4d79a30","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.7.1.tgz"},"directories":{}},"0.7.2":{"name":"event-kit","version":"0.7.2","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"997b618b19566d5740c77507492528c52b5edb6a","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.7.2","_shasum":"331f5c36fde2ebd6413b69b56633e2b6b5cf9e60","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"331f5c36fde2ebd6413b69b56633e2b6b5cf9e60","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.7.2.tgz"},"directories":{}},"0.8.0":{"name":"event-kit","version":"0.8.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"119be0ff697c9e2d9ce49696c7b83c7f2fa4c3a9","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.8.0","_shasum":"9af3466e3d47043a6d252631355a05c58f877c9e","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"9af3466e3d47043a6d252631355a05c58f877c9e","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.8.0.tgz"},"directories":{}},"0.8.1":{"name":"event-kit","version":"0.8.1","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^0.12.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"956e354c35a606d9611fa44432bceee1e2c7d9e9","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.8.1","_shasum":"7ce2497d7084935d5f9cdcab6c2e9032106812f8","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"7ce2497d7084935d5f9cdcab6c2e9032106812f8","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.8.1.tgz"},"directories":{}},"0.8.2":{"name":"event-kit","version":"0.8.2","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.0.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"7b15e2855d2d69b9e310aa6202378d6a7f9f785c","homepage":"https://github.com/atom/event-kit","_id":"event-kit@0.8.2","_shasum":"42f327fb7fa16fa93a6b893c753cf5b5476a5fca","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"42f327fb7fa16fa93a6b893c753cf5b5476a5fca","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-0.8.2.tgz"},"directories":{}},"1.0.0":{"name":"event-kit","version":"1.0.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.0.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"3cbfe07e3d15811971c50bc78de72b9fd727b941","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.0.0","_shasum":"627a0215dd869a5952cb45728159bb93d9554d8b","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"627a0215dd869a5952cb45728159bb93d9554d8b","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.0.0.tgz"},"directories":{}},"1.0.1":{"name":"event-kit","version":"1.0.1","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.0.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"58c64c76bd2de0fe258784d5731182d8a1cbd1ba","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.0.1","_shasum":"e0fea9c6ec56b8d49ca758aec351a62ed7a90ed7","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"e0fea9c6ec56b8d49ca758aec351a62ed7a90ed7","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.0.1.tgz"},"directories":{}},"1.0.2":{"name":"event-kit","version":"1.0.2","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.0.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"e0802b1961d659dc075e10b632f5aebf19f271e7","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.0.2","_shasum":"20ab5dd4f637830b0f4e77c38a86de2754dc37d1","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"20ab5dd4f637830b0f4e77c38a86de2754dc37d1","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.0.2.tgz"},"directories":{}},"1.0.3":{"name":"event-kit","version":"1.0.3","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.0.0"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"83ee968ad75469ad56ae96148a2d1fca4e505b56","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.0.3","_shasum":"a1fbd42a7fcc1e84eedf86604958df7afbaf0925","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"a1fbd42a7fcc1e84eedf86604958df7afbaf0925","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.0.3.tgz"},"directories":{}},"1.1.0":{"name":"event-kit","version":"1.1.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.2.1"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"e01229ed9610366330e7572c35ee0f9fd8864ff8","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.1.0","_shasum":"2d3eb6cbe5b762d531bdd5719b444028e1f1a15f","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"}],"dist":{"shasum":"2d3eb6cbe5b762d531bdd5719b444028e1f1a15f","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.1.0.tgz"},"directories":{}},"1.1.1":{"name":"event-kit","version":"1.1.1","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.2.1"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"d3c1df2d5064b9ec86a91f9afe1f1b4847e87abb","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.1.1","_shasum":"b35cf109bf5edf4ff2fa55e52a256496fb5df168","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"b35cf109bf5edf4ff2fa55e52a256496fb5df168","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.1.1.tgz"},"directories":{}},"1.2.0":{"name":"event-kit","version":"1.2.0","description":"Simple library for implementing and consuming evented APIs","main":"./lib/event-kit","scripts":{"prepublish":"grunt clean lint coffee shell:update-atomdoc atomdoc","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/event-kit/raw/master/LICENSE.md"}],"dependencies":{"grim":"^1.2.1"},"devDependencies":{"coffee-cache":"^0.2.0","coffee-script":"^1.7.0","grunt":"^0.4.1","grunt-atomdoc":"^1.0.0","grunt-cli":"^0.1.8","grunt-coffeelint":"^0.0.6","grunt-contrib-coffee":"^0.9.0","grunt-shell":"^0.2.2","jasmine-focused":"^1.0.4","rimraf":"^2.2.2","temp":"^0.6.0"},"gitHead":"9fded8baac57a5d8f76ea3cef7c154ad05228fb7","homepage":"https://github.com/atom/event-kit","_id":"event-kit@1.2.0","_shasum":"6cc0a99d46ce86aaa2b3a64ccf3462a9f1519619","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"6cc0a99d46ce86aaa2b3a64ccf3462a9f1519619","tarball":"http://registry.npmjs.org/event-kit/-/event-kit-1.2.0.tgz"},"directories":{}}},"readme":"# event-kit [![Build Status](https://travis-ci.org/atom/event-kit.svg?branch=master)](https://travis-ci.org/atom/event-kit)\n\nThis is a simple library for implementing event subscription APIs.\n\n## Implementing Event Subscription APIs\n\n```coffee\n{Emitter} = require 'event-kit'\n\nclass User\n  constructor: ->\n     @emitter = new Emitter\n\n  onDidChangeName: (callback) ->\n     @emitter.on 'did-change-name', callback\n\n  setName: (name) ->\n     if name isnt @name\n       @name = name\n       @emitter.emit 'did-change-name', name\n     @name\n\n  destroy: ->\n    @emitter.dispose()\n```\n\nIn the example above, we implement `::onDidChangeName` on the user object, which\nwill register callbacks to be invoked whenever the user's name changes. To do\nso, we make use of an internal `Emitter` instance. We use `::on` to subscribe\nthe given callback in `::onDidChangeName`, and `::emit` in `::setName` to notify\nsubscribers. Finally, when the `User` instance is destroyed we call `::dispose`\non the emitter to unsubscribe all subscribers.\n\n## Consuming Event Subscription APIs\n\n`Emitter::on` returns a `Disposable` instance, which has a `::dispose` method.\nTo unsubscribe, simply call dispose on the returned object.\n\n```coffee\nsubscription = user.onDidChangeName (name) -> console.log(\"My name is #{name}\")\n# Later, to unsubscribe...\nsubscription.dispose()\n```\n\nYou can also use `CompositeDisposable` to combine disposable instances together.\n\n```coffee\n{CompositeDisposable} = require 'event-kit'\n\nsubscriptions = new CompositeDisposable\nsubscriptions.add user1.onDidChangeName (name) -> console.log(\"User 1: #{name}\")\nsubscriptions.add user2.onDidChangeName (name) -> console.log(\"User 2: #{name}\")\n\n# Later, to unsubscribe from *both*...\nsubscriptions.dispose()\n```\n\n## Creating Your Own Disposables\n\nDisposables are convenient ways to represent a resource you will no longer\nneed at some point. You can instantiate a disposable with an action to take when\nno longer needed.\n\n```coffee\n{Disposable} = require 'event-kit'\n\ndisposable = new Disposable => @destroyResource()\n```\n","maintainers":[{"name":"nathansobo","email":"nathan@github.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"zcbenz","email":"zcbenz@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"time":{"modified":"2015-05-19T19:24:57.966Z","created":"2014-08-27T02:47:42.952Z","0.0.0":"2014-08-27T02:47:42.952Z","0.1.0":"2014-08-27T22:28:56.019Z","0.2.0":"2014-08-27T23:07:01.448Z","0.3.0":"2014-08-28T01:15:33.214Z","0.4.0":"2014-09-03T19:08:17.656Z","0.5.0":"2014-09-04T13:00:26.943Z","0.6.0":"2014-09-08T22:56:17.914Z","0.7.0":"2014-09-10T17:27:28.945Z","0.7.1":"2014-09-10T22:25:18.509Z","0.7.2":"2014-09-12T18:17:01.320Z","0.8.0":"2014-10-27T18:26:28.717Z","0.8.1":"2014-12-02T22:24:00.307Z","0.8.2":"2015-01-02T21:36:37.749Z","1.0.0":"2015-01-02T21:54:15.124Z","1.0.1":"2015-01-07T01:03:19.268Z","1.0.2":"2015-02-02T18:08:23.505Z","1.0.3":"2015-02-25T00:13:28.699Z","1.1.0":"2015-04-02T22:00:36.882Z","1.1.1":"2015-05-07T22:41:44.341Z","1.2.0":"2015-05-19T19:24:57.966Z"},"homepage":"https://github.com/atom/event-kit","repository":{"type":"git","url":"https://github.com/atom/event-kit.git"},"bugs":{"url":"https://github.com/atom/event-kit/issues"},"readmeFilename":"README.md","_attachments":{},"_etag":"\"BE900CYDT5JSKTU7MOR6EJHNV\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/fs-plus/.cache.json b/atom/.apm/registry.npmjs.org/fs-plus/.cache.json
new file mode 100644 (file)
index 0000000..5b8312c
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"fs-plus","_rev":"87-52681f370cc3e6c8c61056a98295bc1f","name":"fs-plus","description":"node's fs with more helpers","dist-tags":{"latest":"2.8.1"},"versions":{"0.1.0":{"name":"fs-plus","version":"0.1.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"~0.4.3"},"_id":"fs-plus@0.1.0","dist":{"shasum":"d8f55c71438f6173b01095bdfcddb0b0615c0d04","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.2.0":{"name":"fs-plus","version":"0.2.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git"},"_id":"fs-plus@0.2.0","dist":{"shasum":"aca00f533dc4711ce7bb7ca4b45108174b482183","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.3.0":{"name":"fs-plus","version":"0.3.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git"},"_id":"fs-plus@0.3.0","dist":{"shasum":"b4d8207b1d8a008519a6fcfc8bcf4354522d2637","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.4.0":{"name":"fs-plus","version":"0.4.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git"},"_id":"fs-plus@0.4.0","dist":{"shasum":"7d4ebd630f91d70c8f45240f5d2bcfc8f35328fe","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.5.0":{"name":"fs-plus","version":"0.5.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git"},"_id":"fs-plus@0.5.0","dist":{"shasum":"adcfe563fea70ad22da235e0dc8b199cca94b298","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.5.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.6.0":{"name":"fs-plus","version":"0.6.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git"},"_id":"fs-plus@0.6.0","dist":{"shasum":"56052304b577bb696487550952aa0737d0299c78","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.7.0":{"name":"fs-plus","version":"0.7.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.7.0","dist":{"shasum":"0906057090a94c5c4b48ca281a116ab1148b42ba","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.7.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.9.0":{"name":"fs-plus","version":"0.9.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.2.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.9.0","dist":{"shasum":"cd8ffac9290c55c782dc2a58f36f0e67e01860f6","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.9.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.10.0":{"name":"fs-plus","version":"0.10.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.3.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.10.0","dist":{"shasum":"368d59d2161e89b4223b2fdd5f643d47d9caf01e","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.10.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"0.11.0":{"name":"fs-plus","version":"0.11.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.5.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.11.0","dist":{"shasum":"df90ba6998d4f7539691829fe6c482d82dc86b03","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.11.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"0.12.0":{"name":"fs-plus","version":"0.12.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.5.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.12.0","dist":{"shasum":"bc967f9b339305172599895e9b30361004d7a5f6","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.12.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"0.13.0":{"name":"fs-plus","version":"0.13.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.6.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.13.0","dist":{"shasum":"dbba27b0bb82485514e2294c209b3eb443d36ea3","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.13.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"mcolyer","email":"matt@colyer.name"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"0.14.0":{"name":"fs-plus","version":"0.14.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"~0.6.0","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","plist":"git://github.com/nathansobo/node-plist.git","season":"~0.14.0"},"_id":"fs-plus@0.14.0","dist":{"shasum":"0f38ad6caf09d8776635d0d4c3696b2a242778c4","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-0.14.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"1.0.0":{"name":"fs-plus","version":"1.0.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","season":"~0.14.0"},"_id":"fs-plus@1.0.0","dist":{"shasum":"864ced3286e0c1c3bce2e44073847dab2ff78f68","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-1.0.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"1.0.1":{"name":"fs-plus","version":"1.0.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","season":"~0.14.0"},"_id":"fs-plus@1.0.1","dist":{"shasum":"88c9ab8e4f5334aa5936a05f16b9d55b2bfac83d","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-1.0.1.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"2.0.0":{"name":"fs-plus","version":"2.0.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9","season":"~0.14.0"},"_id":"fs-plus@2.0.0","dist":{"shasum":"8b2a094aa5eb00deb6b5cc0ef11b0f80d607f1b5","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"2.0.1":{"name":"fs-plus","version":"2.0.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.0.1","dist":{"shasum":"6cfb306c4f181e116745bc42c3389a95bd06b701","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.0.1.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"2.0.2":{"name":"fs-plus","version":"2.0.2","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.0.2","dist":{"shasum":"29b6160577fc17c7e38c72fefe80f04f300b5d73","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.0.2.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"2.0.3":{"name":"fs-plus","version":"2.0.3","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.0.3","dist":{"shasum":"594d062614ddf34f6b7a230f2da7706ca2dceefb","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.0.3.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.0.4":{"name":"fs-plus","version":"2.0.4","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.0.4","dist":{"shasum":"321f78e3b754e3f634e3221789d8aa6e94610ddf","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.0.4.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.1.0":{"name":"fs-plus","version":"2.1.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.1.0","dist":{"shasum":"5e8d62e060e723dfb1fc09cd62dc6e186457504b","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.1.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.0":{"name":"fs-plus","version":"2.2.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.0","dist":{"shasum":"0703e4eb72983b0d0cf975b533c5623c8f1a0aea","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.1":{"name":"fs-plus","version":"2.2.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.1","dist":{"shasum":"1fc0621d4b8736909f0c95e5e9b1a592caf06f68","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.1.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.2":{"name":"fs-plus","version":"2.2.2","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.2","dist":{"shasum":"501b1aa1beede2acae4c162ea8597994c7dcd194","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.2.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.3":{"name":"fs-plus","version":"2.2.3","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.3","dist":{"shasum":"7dcdb0c4ff9beba3c4dc404e2c8a3284cfbec6f0","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.3.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.4":{"name":"fs-plus","version":"2.2.4","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.4","dist":{"shasum":"4d0803af3c9822f0a48b5b699125e138202882a5","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.4.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.5":{"name":"fs-plus","version":"2.2.5","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.5","dist":{"shasum":"e390a19e56dc37cec8e5fc226209526a0adc2a1a","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.5.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.2.6":{"name":"fs-plus","version":"2.2.6","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.2.6","dist":{"shasum":"9bba59b2041f7f446567d4ae658f12e12bf6a5eb","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.2.6.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.3.0":{"name":"fs-plus","version":"2.3.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"_id":"fs-plus@2.3.0","dist":{"shasum":"5a69c58c45e8f8be89711d678ed714efa25c5934","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.3.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.3.1":{"name":"fs-plus","version":"2.3.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"fdea4e6b36ca3adcdddadac5ca4bb7e0608562e8","_id":"fs-plus@2.3.1","_shasum":"b9dff9e90af175bf5687beb1574b4836121aafbe","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"b9dff9e90af175bf5687beb1574b4836121aafbe","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.3.1.tgz"},"directories":{}},"2.3.2":{"name":"fs-plus","version":"2.3.2","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"9c0b7ec93a4fd04471d988b966179f6a8aa1f355","_id":"fs-plus@2.3.2","_shasum":"beea9a8295c2fad4322cd6af2934a07de7e6052d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"beea9a8295c2fad4322cd6af2934a07de7e6052d","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.3.2.tgz"},"directories":{}},"2.4.0":{"name":"fs-plus","version":"2.4.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"6ac4c265a11e44bdb85b6f494c9fcd31b7f9011c","_id":"fs-plus@2.4.0","_shasum":"28ea0e551f0afb70efc6fa92204e29b4eab7d902","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"28ea0e551f0afb70efc6fa92204e29b4eab7d902","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.4.0.tgz"},"directories":{}},"2.5.0":{"name":"fs-plus","version":"2.5.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.6.0"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"79f737abe6eeb126639eff7bccb92d8d40cb0b05","_id":"fs-plus@2.5.0","_shasum":"b6b1b75ce241ff730a2b7ada4225b2393053a906","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"b6b1b75ce241ff730a2b7ada4225b2393053a906","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.5.0.tgz"},"directories":{}},"2.6.0":{"name":"fs-plus","version":"2.6.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"a7ddecee34ae2e1d8d7794f3f049e2d8dbc5b962","_id":"fs-plus@2.6.0","_shasum":"f523f64fc4663bd92d3667be23674c1ad4b75c7a","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"f523f64fc4663bd92d3667be23674c1ad4b75c7a","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.6.0.tgz"},"directories":{}},"2.7.0":{"name":"fs-plus","version":"2.7.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"821662d5361c829b29503ade07308434db51629a","_id":"fs-plus@2.7.0","_shasum":"32c83d6bd0292be8e8d2afc8ea39a1aa9f6380fc","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"32c83d6bd0292be8e8d2afc8ea39a1aa9f6380fc","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.7.0.tgz"},"directories":{}},"2.7.1":{"name":"fs-plus","version":"2.7.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"b1b6f3ed46c0435464bb74b00010e9019db13ec4","_id":"fs-plus@2.7.1","_shasum":"fe68dab2403cd5f6235d200aeb84d611b5d0d03c","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"fe68dab2403cd5f6235d200aeb84d611b5d0d03c","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.7.1.tgz"},"directories":{}},"2.8.0":{"name":"fs-plus","version":"2.8.0","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"92d084b0b5a2d94b5088cb1ff257646491819ad7","_id":"fs-plus@2.8.0","_shasum":"293a12eb985eccd32796628f8c246bd769aea889","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"293a12eb985eccd32796628f8c246bd769aea889","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.8.0.tgz"},"directories":{}},"2.8.1":{"name":"fs-plus","version":"2.8.1","description":"node's fs with more helpers","main":"./lib/fs-plus.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"homepage":"http://atom.github.io/fs-plus","licenses":[{"type":"MIT","url":"http://github.com/atom/fs-plus/raw/master/LICENSE.md"}],"keywords":["fs","filesystem"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.8.1"},"dependencies":{"underscore-plus":"1.x","mkdirp":"~0.3.5","rimraf":"~2.2.2","async":"~0.2.9"},"gitHead":"eb4915c02f09427b1bb002b886a9cfc34a262e1f","_id":"fs-plus@2.8.1","_shasum":"60bcae0d2066f4bb4726f23add525dada80630f6","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"60bcae0d2066f4bb4726f23add525dada80630f6","tarball":"http://registry.npmjs.org/fs-plus/-/fs-plus-2.8.1.tgz"},"directories":{}}},"readme":"# fs plus [![Build Status](https://travis-ci.org/atom/fs-plus.svg?branch=master)](https://travis-ci.org/atom/fs-plus)\n\nYet another filesystem helper based on node's [fs](http://nodejs.org/api/fs.html)\nmodule.  This library exports everything from node's fs module but with some\nextra helpers.\n\n## Using\n\n```sh\nnpm install fs-plus\n```\n\n```coffee\nfs = require 'fs-plus'\n```\n\n## Documentation\n\n### `getHomeDirectory()`\nReturns the absolute path to the home directory.\n\n### `absolute(relativePath)`\nMake the given path absolute by resolving it against the current\nworking directory.\n\n### Params\n\n - **String** `relativePath`: The string representing the relative path. If the\n   path is prefixed with '~', it will be expanded to the current user's home\n   directory.\n\n### Return\n\n - **String**: The absolute path or the relative path if it's unable to\n   determine its real path.\n\n### `normalize(pathToNormalize)`\nNormalize the given path treating a leading `~` segment as referring to the\nhome directory. This method does not query the filesystem.\n\n#### Params\n\n - **String** `pathToNormalize`: The string containing the abnormal path. If the\n   path is prefixed with '~', it will be expanded to the current user's home\n   directory.\n\n#### Return\n - **String** Returns a normalized path.\n\n### `getAppDataDirectory()`\nGet path to store application specific data.\n\n#### Return\n - **String** Returns the absolute path or null if platform isn't supported\n\n    - Mac: `~/Library/Application Support/`\n    - Win: `%AppData%`\n    - Linux: `/var/lib`\n\n### `isAbsolute(pathToCheck)`\nIs the given path absolute?\n\n#### Params\n - **String** `pathToCheck`: The relative or absolute path to check.\n\n#### Return\n - **Bolean** Returns `true` if the path is absolute, `false` otherwise.\n\n### `existsSync(pathToCheck)`\nReturns `true` if a file or folder at the specified path exists.\n\n### `isDirectorySync(directoryPath)`\nReturns `true` if the given path exists and is a directory.\n\n### `isDirectory(directoryPath)`\nAsynchronously checks that the given path exists and is a directory.\n\n### `isFileSync(filePath)`\nReturns true if the specified path exists and is a file.\n\n### `isSymbolicLinkSync(symlinkPath)`\nReturns `true` if the specified path is a symbolic link.\n\n### `isSymbolicLink(symlinkPath, callback)`\nCalls back with `true` if the specified path is a symbolic link.\n\n### `isExecutableSync(pathToCheck)`\nReturns `true` if the specified path is executable.\n\n### `getSizeSync(pathToCheck)`\nReturns the size of the specified path.\n\n### `listSync(rootPath, extensions)`\nReturns an Array with the paths of the files and directories\ncontained within the directory path. It is not recursive.\n\n## Params\n - **String** `rootPath`: The absolute path to the directory to list.\n - **Array** `extensions`: An array of extensions to filter the results by. If none are\n   given, none are filtered (optional).\n\n### `list(rootPath, extensions)`\nAsynchronously lists the files and directories in the given path. The listing is not recursive.\n\n### `listTreeSync(rootPath)`\nGet all paths under the given path.\n\n#### Params\n - **String** `rootPath` The {String} path to start at.\n\n#### Return\n - **Array** Returns an array of strings under the given path.\n\n### `moveSync(source, target)`\nMoves the file or directory to the target synchronously.\n\n### `removeSync(pathToRemove)`\nRemoves the file or directory at the given path synchronously.\n\n### `writeFileSync(filePath, content, options)`\nOpen, write, flush, and close a file, writing the given content synchronously.\nIt also creates the necessary parent directories.\n\n### `writeFile(filePath, content, options, callback)`\nOpen, write, flush, and close a file, writing the given content\nasynchronously.\nIt also creates the necessary parent directories.\n\n### `copySync(sourcePath, destinationPath)`\nCopies the given path recursively and synchronously.\n\n### `makeTreeSync(directoryPath)`\nCreate a directory at the specified path including any missing\nparent directories synchronously.\n\n### `makeTree(directoryPath, callback)`\nCreate a directory at the specified path including any missing\nparent directories asynchronously.\n\n### `traverseTreeSync(rootPath, onFile, onDirectory)`\nRecursively walk the given path and execute the given functions\nsynchronously.\n\n#### Params\n - **String** `rootPath`: The string containing the directory to recurse into.\n - **Function** `onFile`: The function to execute on each file, receives a single argument\n   the absolute path.\n - **Function** `onDirectory`: The function to execute on each directory, receives a single\n   argument the absolute path (defaults to onFile). If this\n   function returns a falsy value then the directory is not\n   entered.\n\n### `traverseTree(rootPath, onFile, onDirectory, onDone)`\nPublic: Recursively walk the given path and execute the given functions\nasynchronously.\n\n### `md5ForPath(pathToDigest)`\nHashes the contents of the given file.\n\n#### Params\n - **String** `pathToDigest`: The string containing the absolute path.\n\n#### Return\n - **String** Returns a string containing the MD5 hexadecimal hash.\n\n### `resolve(loadPaths, pathToResolve, extensions)`\nFinds a relative path among the given array of paths.\n\n#### Params\n - **Array** `loadPaths`: An array of absolute and relative paths to search.\n - **String** `pathToResolve` The string containing the path to resolve.\n - **Array** `extensions` An array of extensions to pass to {resolveExtensions} in\n   which case pathToResolve should not contain an extension\n   (optional).\n\n#### Return\nReturns the absolute path of the file to be resolved if it's found and\nundefined otherwise.\n\n### `resolveOnLoadPath()`\nLike `.resolve` but uses node's modules paths as the load paths to\nsearch.\n\n### `resolveExtension(pathToResolve, extensions)`\nFinds the first file in the given path which matches the extension\nin the order given.\n\n#### Params\n - **String** `pathToResolve`: the string containing relative or absolute path of the\n   file in question without the extension or '.'.\n - **Array** `extensions`: the ordered array of extensions to try.\n\n#### Return\nReturns the absolute path of the file if it exists with any of the given\nextensions, otherwise it's undefined.\n\n### `isCompressedExtension(ext)`\nReturns true for extensions associated with compressed files.\n\n### `isImageExtension(ext)`\nReturns true for extensions associated with image files.\n\n### `isPdfExtension(ext)`\nReturns true for extensions associated with pdf files.\n\n### `isBinaryExtension(ext)`\nReturns true for extensions associated with binary files.\n\n### `isReadmePath(readmePath)`\nReturns true for files named similarily to 'README'\n\n### `isMarkdownExtension(ext)`\nReturns true for extensions associated with Markdown files.\n\n### `isCaseInsensitive()`\nIs the filesystem case insensitive?\nReturns `true` if case insensitive, `false` otherwise.\n\n### `isCaseSensitive()`\nIs the filesystem case sensitive?\nReturns `true` if case sensitive, `false` otherwise.\n","maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"time":{"modified":"2015-05-18T16:40:58.231Z","created":"2013-10-31T18:49:50.150Z","0.1.0":"2013-10-31T18:49:51.452Z","0.2.0":"2013-10-31T20:08:02.233Z","0.3.0":"2013-10-31T20:40:51.872Z","0.4.0":"2013-10-31T21:56:14.903Z","0.5.0":"2013-11-01T00:35:52.494Z","0.6.0":"2013-11-01T16:08:26.382Z","0.7.0":"2013-11-01T18:10:18.112Z","0.9.0":"2013-11-08T22:07:39.923Z","0.10.0":"2013-11-23T18:39:45.209Z","0.11.0":"2013-12-11T18:07:35.183Z","0.12.0":"2013-12-17T17:44:40.413Z","0.13.0":"2013-12-18T00:37:32.939Z","0.14.0":"2014-01-06T17:13:56.081Z","1.0.0":"2014-01-16T23:53:09.940Z","1.0.1":"2014-01-17T02:46:49.938Z","2.0.0":"2014-02-17T23:18:09.767Z","2.0.1":"2014-02-17T23:20:01.300Z","2.0.2":"2014-03-07T17:22:02.848Z","2.0.3":"2014-03-11T17:11:13.764Z","2.0.4":"2014-03-12T16:55:11.955Z","2.1.0":"2014-03-28T17:58:56.422Z","2.2.0":"2014-03-28T19:42:19.773Z","2.2.1":"2014-04-09T17:02:49.197Z","2.2.2":"2014-04-17T20:23:41.037Z","2.2.3":"2014-05-15T19:14:01.819Z","2.2.4":"2014-07-21T20:52:58.909Z","2.2.5":"2014-07-28T23:02:00.361Z","2.2.6":"2014-07-29T00:09:23.170Z","2.3.0":"2014-08-19T01:15:57.365Z","2.3.1":"2014-10-01T15:28:48.775Z","2.3.2":"2014-11-20T19:04:41.126Z","2.4.0":"2014-12-15T21:04:05.946Z","2.5.0":"2015-02-05T00:36:11.512Z","2.6.0":"2015-03-17T23:48:14.510Z","2.7.0":"2015-04-02T23:54:01.945Z","2.7.1":"2015-04-20T22:46:56.329Z","2.8.0":"2015-05-05T15:53:02.642Z","2.8.1":"2015-05-18T16:40:58.231Z"},"repository":{"type":"git","url":"https://github.com/atom/fs-plus.git"},"readmeFilename":"README.md","homepage":"http://atom.github.io/fs-plus","keywords":["fs","filesystem"],"bugs":{"url":"https://github.com/atom/fs-plus/issues"},"users":{"lezuse":true,"ergunozyurt":true,"thomasjo":true},"_attachments":{},"_etag":"\"A1X3DPP3ZGTI3ATWVSTVE9PEU\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/fuzzaldrin/.cache.json b/atom/.apm/registry.npmjs.org/fuzzaldrin/.cache.json
new file mode 100644 (file)
index 0000000..1f23fae
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"fuzzaldrin","_rev":"36-5a37df041e18a19506d6b46d6fe203eb","name":"fuzzaldrin","description":"Fuzzy filtering and string scoring","dist-tags":{"latest":"2.1.0"},"versions":{"0.1.0":{"name":"fuzzaldrin","version":"0.1.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","tantamount":"~0.6.0"},"_id":"fuzzaldrin@0.1.0","dist":{"shasum":"c8df93b7f0437dffce5faad48066d45fce360447","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.2.0":{"name":"fuzzaldrin","version":"0.2.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","tantamount":"~0.6.0","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.2.0","dist":{"shasum":"fdb954df3bbd60dfa6ec125ff5873f11501a928c","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.3.0":{"name":"fuzzaldrin","version":"0.3.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","tantamount":"~0.6.0","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.3.0","dist":{"shasum":"e5f62a035cebc2b17b95ab1a0fb6a33519468c10","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.4.0":{"name":"fuzzaldrin","version":"0.4.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","tantamount":"~0.6.0","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.4.0","dist":{"shasum":"55d4a4837a793bab6ff6825b33b9915bf0ecb9a3","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.5.0":{"name":"fuzzaldrin","version":"0.5.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.5.0","dist":{"shasum":"f60ff972ad9f7061caf8020f07f90f824f27e99c","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.5.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.6.0":{"name":"fuzzaldrin","version":"0.6.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.6.0","dist":{"shasum":"98f2eb1b5febb61613a0ba897a9f03fb63bf06e5","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.7.0":{"name":"fuzzaldrin","version":"0.7.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.7.0","dist":{"shasum":"8b1ca3a4795c49ed03928316b6165e29ab90ffee","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.7.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.8.0":{"name":"fuzzaldrin","version":"0.8.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@0.8.0","dist":{"shasum":"1d0e1cc39749cfe9c3631ee1f04951695e315dde","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-0.8.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.0.0":{"name":"fuzzaldrin","version":"1.0.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@1.0.0","dist":{"shasum":"1ee8d11c3eb9255d86ec860a588be7fd8dc1a38b","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-1.0.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.1.0":{"name":"fuzzaldrin","version":"1.1.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"node_modules/.bin/coffee --nodejs --harmony_collections benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.6.3"},"_id":"fuzzaldrin@1.1.0","dist":{"shasum":"6e02e76b02ddf0f0b09c64a3ab136bddf4cb6dbe","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-1.1.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.2.0":{"name":"fuzzaldrin","version":"1.2.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"coffee benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.7"},"_id":"fuzzaldrin@1.2.0","dist":{"shasum":"0bab781e6584689fa6db42ad1e5b383582002305","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-1.2.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.0.0":{"name":"fuzzaldrin","version":"2.0.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"coffee benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.7"},"_id":"fuzzaldrin@2.0.0","dist":{"shasum":"bcfabf4dce58bb48e963ca40ab468f294d5100a2","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-2.0.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"2.1.0":{"name":"fuzzaldrin","version":"2.1.0","description":"Fuzzy filtering and string scoring","licenses":[{"type":"MIT","url":"http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"}],"main":"./lib/fuzzaldrin.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","benchmark":"coffee benchmark/benchmark.coffee"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","coffee-script":"~1.7"},"_id":"fuzzaldrin@2.1.0","dist":{"shasum":"90204c3e2fdaa6941bb28d16645d418063a90e9b","tarball":"http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-2.1.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{}}},"readme":"# fuzzaldrin\n\n[![Build Status](https://travis-ci.org/atom/fuzzaldrin.svg?branch=master)](https://travis-ci.org/atom/fuzzaldrin)\n[![Build status](https://ci.appveyor.com/api/projects/status/0ig71rjdgfm7y9c1/branch/master)](https://ci.appveyor.com/project/kevinsawicki/fuzzaldrin/branch/master)\n\nFuzzy filtering and string scoring.\n\nThis library is used by [Atom](http://atom.io) and so its focus will be on\nscoring and filtering paths, methods, and other things common when writing code.\nIt therefore will specialize in handling common patterns in these types of\nstrings such as characters like `/`, `-`, and `_`, and also handling of\ncamel cased text.\n\n## Using\n\n```sh\nnpm install fuzzaldrin\n```\n\n### filter(candidates, query, [options])\n\nSort and filter the given candidates by matching them against the given query.\n\n* `candidates` - An array of strings or objects.\n* `query` - A string query to match each candidate against.\n* `options` - An optional object with the following keys:\n  * `key` - The property to use for scoring if the candidates are objects.\n  * `maxResults` - The maximum numbers of results to return.\n\nReturns an array of candidates sorted by best match against the query.\n\n```coffee\n{filter} = require 'fuzzaldrin'\n\n# With an array of strings\ncandidates = ['Call', 'Me', 'Maybe']\nresults = filter(candidates, 'me')\nconsole.log(results) # ['Me', 'Maybe']\n\n# With an array of objects\ncandidates = [\n  {name: 'Call', id: 1}\n  {name: 'Me', id: 2}\n  {name: 'Maybe', id: 3}\n]\nresults = filter(candidates, 'me', key: 'name')\nconsole.log(results) # [{name: 'Me', id: 2}, {name: 'Maybe', id: 3}]\n```\n\n### score(string, query)\n\nScore the given string against the given query.\n\n* `string` - The string the score.\n* `query` - The query to score the string against.\n\n```coffee\n{score} = require 'fuzzaldrin'\n\nscore('Me', 'me')    # 0.17099999999999999\nscore('Maybe', 'me') # 0.0693\n```\n\n## Developing\n\n```sh\ngit clone https://github.com/atom/fuzzaldrin.git\ncd fuzzaldrin\nnpm install\nnpm test\n```\n\nYou can run the benchmarks using:\n\n```sh\nnpm run benchmark\n```\n","maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"time":{"modified":"2014-09-03T16:43:01.593Z","created":"2013-10-17T16:40:20.873Z","0.1.0":"2013-10-17T16:40:22.251Z","0.2.0":"2014-01-08T18:59:16.212Z","0.3.0":"2014-01-08T19:52:20.324Z","0.4.0":"2014-01-08T21:59:32.641Z","0.5.0":"2014-01-08T22:11:16.930Z","0.6.0":"2014-01-10T20:53:50.725Z","0.7.0":"2014-01-25T01:55:33.514Z","0.8.0":"2014-01-30T22:54:50.060Z","1.0.0":"2014-01-30T23:00:10.576Z","1.1.0":"2014-02-27T22:44:20.097Z","1.2.0":"2014-05-28T16:29:08.415Z","2.0.0":"2014-06-13T00:45:46.236Z","2.1.0":"2014-09-03T16:43:01.593Z"},"repository":{"type":"git","url":"https://github.com/atom/fuzzaldrin.git"},"readmeFilename":"README.md","homepage":"http://atom.github.io/fuzzaldrin","keywords":["fuzzy","filter","stringscore"],"bugs":{"url":"https://github.com/atom/fuzzaldrin/issues"},"users":{"davidtsuji":true},"_attachments":{},"_etag":"\"CHYJXGTA7QS279A8EQAHGMZFV\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/grim/.cache.json b/atom/.apm/registry.npmjs.org/grim/.cache.json
new file mode 100644 (file)
index 0000000..dcb0e9b
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"grim","_rev":"70-e64a267956bdf50facc0ff36cd0f2cbe","name":"grim","description":"Log usage of deprecated methods","dist-tags":{"latest":"1.4.1"},"versions":{"0.0.0":{"name":"grim","version":"0.0.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.0.0","dist":{"shasum":"d915da55af58229d41bf6851dd807fe672a4f54f","tarball":"http://registry.npmjs.org/grim/-/grim-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.1.0":{"name":"grim","version":"0.1.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.1.0","dist":{"shasum":"da6ee2d7a1d1466cb2f17c3efc271a9dcfb9a213","tarball":"http://registry.npmjs.org/grim/-/grim-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.2.0":{"name":"grim","version":"0.2.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.2.0","dist":{"shasum":"a5af7d54ea2adba64c8eaead301152300aba2b10","tarball":"http://registry.npmjs.org/grim/-/grim-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.4.0":{"name":"grim","version":"0.4.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.4.0","dist":{"shasum":"4e6eafb0b62ec2fba177c3ec1447630382c1d382","tarball":"http://registry.npmjs.org/grim/-/grim-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.6.0":{"name":"grim","version":"0.6.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.6.0","dist":{"shasum":"d8c301e2dfe18ac9595bf4feedbc862249ef8465","tarball":"http://registry.npmjs.org/grim/-/grim-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.7.0":{"name":"grim","version":"0.7.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.7.0","dist":{"shasum":"c509c13902a120e8149c55138309d8fdf88ac6d6","tarball":"http://registry.npmjs.org/grim/-/grim-0.7.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.8.0":{"name":"grim","version":"0.8.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.8.0","dist":{"shasum":"9f6b2b229cf537827a8ef2c1942a98cd6df41b0d","tarball":"http://registry.npmjs.org/grim/-/grim-0.8.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.9.0":{"name":"grim","version":"0.9.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"_id":"grim@0.9.0","dist":{"shasum":"8271990398c43f14601f1d5b05c8bf701db45ac9","tarball":"http://registry.npmjs.org/grim/-/grim-0.9.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.10.0":{"name":"grim","version":"0.10.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"homepage":"https://github.com/atom/grim","_id":"grim@0.10.0","dist":{"shasum":"85e6f7c51c78952761e087a55fe273fdc87c6a71","tarball":"http://registry.npmjs.org/grim/-/grim-0.10.0.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"directories":{}},"0.11.0":{"name":"grim","version":"0.11.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"homepage":"https://github.com/atom/grim","_id":"grim@0.11.0","_shasum":"e203674bbe5fb62ae8301f191606df578e529b90","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"probablycorey","email":"probablycorey@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"}],"dist":{"shasum":"e203674bbe5fb62ae8301f191606df578e529b90","tarball":"http://registry.npmjs.org/grim/-/grim-0.11.0.tgz"},"directories":{}},"0.12.0":{"name":"grim","version":"0.12.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"underscore-plus":"^1.0.0","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"c24f22a7e415d5d6b695967e341f7fb7aa27d83f","homepage":"https://github.com/atom/grim","_id":"grim@0.12.0","_shasum":"86d4ea11bf57b960688c624878bdc126fe4b7d1b","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"86d4ea11bf57b960688c624878bdc126fe4b7d1b","tarball":"http://registry.npmjs.org/grim/-/grim-0.12.0.tgz"},"directories":{}},"0.13.0":{"name":"grim","version":"0.13.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^0.7.0","emissary":"^1.2.0","underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"76eefa6fec31db8f573ed69f3312e4fa81d54b39","homepage":"https://github.com/atom/grim","_id":"grim@0.13.0","_shasum":"80557ca22e2294c8765eec8b349bc1da5b36c821","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"80557ca22e2294c8765eec8b349bc1da5b36c821","tarball":"http://registry.npmjs.org/grim/-/grim-0.13.0.tgz"},"directories":{}},"1.0.0":{"name":"grim","version":"1.0.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^0.7.0","emissary":"^1.2.0","underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"aebdddfbc62015ed943de3e144b06eb4cd849555","homepage":"https://github.com/atom/grim","_id":"grim@1.0.0","_shasum":"70281a77942fcf217b1aac3a7db90cbe9d1ceecf","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"70281a77942fcf217b1aac3a7db90cbe9d1ceecf","tarball":"http://registry.npmjs.org/grim/-/grim-1.0.0.tgz"},"directories":{}},"1.1.0":{"name":"grim","version":"1.1.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^0.7.0","emissary":"^1.2.0","underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"16c8bb826982d22801bfc56ea953c6ea7478ea1d","homepage":"https://github.com/atom/grim","_id":"grim@1.1.0","_shasum":"10d9518f9b48f73d358917dd7d21cf11d614c47c","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"10d9518f9b48f73d358917dd7d21cf11d614c47c","tarball":"http://registry.npmjs.org/grim/-/grim-1.1.0.tgz"},"directories":{}},"1.1.1":{"name":"grim","version":"1.1.1","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^0.8.0","emissary":"^1.2.0","underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"b2e0f708ed9de1470dc268f41bc0d30a698b3fbe","homepage":"https://github.com/atom/grim","_id":"grim@1.1.1","_shasum":"8f1c88789664d9f29fc5d2bef03cfa5bd5da0941","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"8f1c88789664d9f29fc5d2bef03cfa5bd5da0941","tarball":"http://registry.npmjs.org/grim/-/grim-1.1.1.tgz"},"directories":{}},"1.1.2":{"name":"grim","version":"1.1.2","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0","underscore-plus":"^1.0.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"598fdb19fbcd3dffacfaf675ff31facfa1a9cb5e","homepage":"https://github.com/atom/grim","_id":"grim@1.1.2","_shasum":"cf3ad7096654a58127262dc069073e43d54a18ed","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"cf3ad7096654a58127262dc069073e43d54a18ed","tarball":"http://registry.npmjs.org/grim/-/grim-1.1.2.tgz"},"directories":{}},"1.2.0":{"name":"grim","version":"1.2.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"fc9442cb2033f82ca18d9d52a884237ce099142d","homepage":"https://github.com/atom/grim","_id":"grim@1.2.0","_shasum":"96d33ffe723ed8146a83ee169a8f230d4508369e","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"96d33ffe723ed8146a83ee169a8f230d4508369e","tarball":"http://registry.npmjs.org/grim/-/grim-1.2.0.tgz"},"directories":{}},"1.2.1":{"name":"grim","version":"1.2.1","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"2722002c17aa5564af195c2c458ad7f591417c59","homepage":"https://github.com/atom/grim","_id":"grim@1.2.1","_shasum":"b90d518e7e52e78ea3c35cb16efd7000046e6f18","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"b90d518e7e52e78ea3c35cb16efd7000046e6f18","tarball":"http://registry.npmjs.org/grim/-/grim-1.2.1.tgz"},"directories":{}},"1.2.2":{"name":"grim","version":"1.2.2","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"4deeda96353df9ea372986bd1e0aba24a0240df5","homepage":"https://github.com/atom/grim","_id":"grim@1.2.2","_shasum":"4af59c20cda16eb034676e2bfe64fd8be1f78450","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"4af59c20cda16eb034676e2bfe64fd8be1f78450","tarball":"http://registry.npmjs.org/grim/-/grim-1.2.2.tgz"},"directories":{}},"1.3.0":{"name":"grim","version":"1.3.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"dfbd634d33cab712a39d1652a92849b10a7efb6f","homepage":"https://github.com/atom/grim","_id":"grim@1.3.0","_shasum":"263032646242f665a96778d76639cb459bf178e1","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"263032646242f665a96778d76639cb459bf178e1","tarball":"http://registry.npmjs.org/grim/-/grim-1.3.0.tgz"},"directories":{}},"1.4.0":{"name":"grim","version":"1.4.0","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"1ad64d849598d9dbb7203d3a53d016082f895c1e","homepage":"https://github.com/atom/grim","_id":"grim@1.4.0","_shasum":"c58bbea14815bfe7939d586a1b813de6aed3a8e8","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"c58bbea14815bfe7939d586a1b813de6aed3a8e8","tarball":"http://registry.npmjs.org/grim/-/grim-1.4.0.tgz"},"directories":{}},"1.4.1":{"name":"grim","version":"1.4.1","description":"Log usage of deprecated methods","main":"./lib/grim","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/grim/raw/master/LICENSE.md"}],"dependencies":{"coffeestack":"^1","emissary":"^1.2.0"},"devDependencies":{"coffee-script":"^1.7.0","jasmine-focused":"^1.0.4","grunt-contrib-coffee":"^0.9.0","grunt-cli":"^0.1.8","grunt":"^0.4.1","grunt-shell":"^0.2.2","grunt-coffeelint":"^0.0.6","rimraf":"^2.2.2","coffee-cache":"^0.2.0","temp":"^0.6.0"},"gitHead":"dbcb234a130aaef6af1458bfa686f65c5b97690a","homepage":"https://github.com/atom/grim","_id":"grim@1.4.1","_shasum":"bd47bf11823bbfb1fc731914fab51016bea9e677","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"dist":{"shasum":"bd47bf11823bbfb1fc731914fab51016bea9e677","tarball":"http://registry.npmjs.org/grim/-/grim-1.4.1.tgz"},"directories":{}}},"readme":"# Grim [![Build Status](https://travis-ci.org/atom/grim.svg)](https://travis-ci.org/atom/grim)\n\nLog deprecate calls\n\n## Installing\n\n```sh\nnpm install grim\n```\n\n## Usage\n\n```javascript\nGrim = require('grim')\n\nfunction someOldMethod() {\n  Grim.deprecate(\"Use theNewMethod instead.\")\n}\n```\n\nTo view all calls to deprecated methods use `Grim.logDeprecations()` or get direct access to the deprecated calls by using `Grim.getDeprecations()`\n","maintainers":[{"name":"probablycorey","email":"probablycorey@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathan@github.com"}],"time":{"modified":"2015-05-13T22:26:15.557Z","created":"2014-04-01T22:38:09.263Z","0.0.0":"2014-04-01T22:38:11.466Z","0.1.0":"2014-04-01T22:39:23.387Z","0.2.0":"2014-04-01T23:56:09.004Z","0.4.0":"2014-04-02T23:52:09.489Z","0.6.0":"2014-04-03T17:15:23.781Z","0.7.0":"2014-04-11T23:28:50.618Z","0.8.0":"2014-04-14T21:41:31.900Z","0.9.0":"2014-04-18T00:33:33.285Z","0.10.0":"2014-04-23T01:29:06.673Z","0.11.0":"2014-06-11T23:18:58.911Z","0.12.0":"2014-08-13T20:47:48.254Z","0.13.0":"2014-12-30T22:34:35.933Z","1.0.0":"2015-01-02T19:25:11.250Z","1.1.0":"2015-01-09T01:43:17.541Z","1.1.1":"2015-02-11T00:56:51.763Z","1.1.2":"2015-02-12T19:05:51.899Z","1.2.0":"2015-02-19T19:19:27.810Z","1.2.1":"2015-03-30T22:34:13.870Z","1.2.2":"2015-04-21T23:20:52.692Z","1.3.0":"2015-04-28T16:51:46.374Z","1.4.0":"2015-04-29T00:12:20.333Z","1.4.1":"2015-05-13T22:26:15.557Z"},"readmeFilename":"README.md","repository":{"type":"git","url":"https://github.com/atom/grim.git"},"bugs":{"url":"https://github.com/atom/grim/issues"},"homepage":"https://github.com/atom/grim","_attachments":{},"_etag":"\"ENGXDMST6O59S4SVACS5Y4AHJ\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/jquery/.cache.json b/atom/.apm/registry.npmjs.org/jquery/.cache.json
new file mode 100644 (file)
index 0000000..8c1524d
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"jquery","_rev":"227-b31f75428b97fc29a534967f39a4cc5d","name":"jquery","description":"JavaScript library for DOM operations","dist-tags":{"beta":"2.1.4","latest":"2.1.4","old":"1.9.1","compat":"1.11.3"},"versions":{"1.5.1":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library","url":"jquery.com","keywords":["util","dom","jquery"],"author":{"name":"John Resig","email":"jeresig@gmail.com"},"contributors":[],"dependencies":{"jsdom":"=0.1.20","htmlparser":">= 1.7.3"},"lib":"lib","main":"./dist/node-jquery.js","version":"1.5.1","_id":"jquery@1.5.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","directories":{"lib":"./lib"},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"2ae2d661e906c1a01e044a71bb5b2743942183e5","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.5.1.tgz"}},"1.6.2":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library","url":"jquery.com","keywords":["util","dom","jquery"],"author":{"name":"John Resig","email":"jeresig@gmail.com"},"contributors":[],"dependencies":{"jsdom":">=0.2.0","htmlparser":">= 1.7.3"},"lib":"lib","main":"./dist/node-jquery.js","version":"1.6.2","_npmJsonOpts":{"file":"/Users/coolaj86/.npm/jquery/1.6.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"jquery@1.6.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"01757a4c5beea29e8ae697527c3131abbe997a28","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.6.2.tgz"},"scripts":{},"directories":{}},"1.6.3":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)","url":"http://jquery.com","keywords":["util","dom","jquery"],"author":{"name":"John Resig","email":"jeresig@gmail.com"},"contributors":[],"dependencies":{"jsdom":">=0.2.0","htmlparser":">= 1.7.3"},"lib":".","main":"./node-jquery.js","version":"1.6.3","_npmJsonOpts":{"file":"/Users/coolaj86/.npm/jquery/1.6.3/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"jquery@1.6.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"e1f732fa7e718a6adb3ec20ae0eb2a64fd95ef01","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.6.3.tgz"},"scripts":{},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"}],"directories":{}},"1.7.2":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)","version":"1.7.2","url":"http://jquery.com","homepage":"https://github.com/coolaj86/node-jquery","author":{"name":"James Morrin","email":"treasonx@gmail.com"},"repository":{"type":"git","url":"git://github.com/coolaj86/node-jquery.git"},"bugs":{"url":"https://github.com/coolaj86/node-jquery/issues"},"licenses":[{"type":"MIT","url":"https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT"}],"main":"lib/node-jquery","engines":{"node":"0.6"},"scripts":{"test":"grunt test"},"dependencies":{"jsdom":"~0.2.14","htmlparser":"1.7.6","xmlhttprequest":"~1.3.0"},"devDependencies":{"grunt":"~0.3.8","nodeunit":"~0.7.4"},"keywords":["util","dom","jquery"],"_npmUser":{"name":"treasonx","email":"treasonx@gmail.com"},"_id":"jquery@1.7.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"a93746763aca75a34df4c16395b0826310d0eaf2","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.7.2.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"treasonx","email":"treasonx@gmail.com"}],"directories":{}},"1.7.3":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)","version":"1.7.3","url":"http://jquery.com","homepage":"https://github.com/coolaj86/node-jquery","author":{"name":"James Morrin","email":"treasonx@gmail.com"},"repository":{"type":"git","url":"git://github.com/coolaj86/node-jquery.git"},"bugs":{"url":"https://github.com/coolaj86/node-jquery/issues"},"licenses":[{"type":"MIT","url":"https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT"}],"main":"lib/node-jquery","engines":{"node":">=0.6"},"scripts":{"test":"grunt test"},"dependencies":{"jsdom":"~0.2.14","htmlparser":"1.7.6","xmlhttprequest":"~1.4.2","location":"0.0.1","navigator":"~1.0.1"},"devDependencies":{"grunt":"~0.3.8","nodeunit":"~0.7.4"},"keywords":["util","dom","jquery"],"_id":"jquery@1.7.3","dist":{"shasum":"e3d00a71612ac7e9b554b438e0987d0272ddba94","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.7.3.tgz"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"treasonx","email":"treasonx@gmail.com"}],"directories":{}},"1.8.2":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)","version":"1.8.2","url":"http://jquery.com","homepage":"https://github.com/coolaj86/node-jquery","author":{"name":"James Morrin","email":"treasonx@gmail.com"},"repository":{"type":"git","url":"git://github.com/coolaj86/node-jquery.git"},"bugs":{"url":"https://github.com/coolaj86/node-jquery/issues"},"licenses":[{"type":"MIT","url":"https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT"}],"main":"lib/node-jquery","engines":{"node":">=0.6"},"scripts":{"test":"grunt test"},"dependencies":{"jsdom":"~0.2.14","htmlparser":"1.7.6","xmlhttprequest":"~1.4.2","location":"0.0.1","navigator":"~1.0.1"},"devDependencies":{"grunt":"~0.3.8","nodeunit":"~0.7.4"},"keywords":["util","dom","jquery"],"_id":"jquery@1.8.2","dist":{"shasum":"46790ae07c6de38124eda90bbf7336b43df93305","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.8.2.tgz"},"_npmVersion":"1.1.61","_npmUser":{"name":"treasonx","email":"treasonx@gmail.com"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"treasonx","email":"treasonx@gmail.com"}],"directories":{}},"1.8.3":{"name":"jquery","description":"jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)","version":"1.8.3","url":"http://jquery.com","homepage":"https://github.com/coolaj86/node-jquery","author":{"name":"James Morrin","email":"treasonx@gmail.com"},"repository":{"type":"git","url":"git://github.com/coolaj86/node-jquery.git"},"bugs":{"url":"https://github.com/coolaj86/node-jquery/issues"},"licenses":[{"type":"MIT","url":"https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT"}],"main":"lib/node-jquery","engines":{"node":">=0.6"},"scripts":{"test":"grunt test"},"dependencies":{"jsdom":"~0.2.14","htmlparser":"1.7.6","xmlhttprequest":"~1.4.2","location":"0.0.1","navigator":"~1.0.1","contextify":"~0.1.3"},"devDependencies":{"grunt":"~0.3.8","nodeunit":"~0.7.4"},"keywords":["util","dom","jquery"],"_id":"jquery@1.8.3","dist":{"shasum":"cfa2941c05a83d966f21347f759a6d15281c60cc","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.8.3.tgz"},"_npmVersion":"1.1.61","_npmUser":{"name":"treasonx","email":"treasonx@gmail.com"},"maintainers":[{"name":"coolaj86","email":"coolaj86@gmail.com"},{"name":"treasonx","email":"treasonx@gmail.com"}],"directories":{}},"2.1.0-beta2":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.0-beta2","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/master/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"~0.4.10","grunt":"~0.4.1","grunt-bower-task":"~0.3.2","grunt-cli":"~0.1.11","grunt-compare-size":"~0.4.0","grunt-contrib-jshint":"~0.7.0","grunt-contrib-uglify":"~0.2.7","grunt-contrib-watch":"~0.5.3","grunt-git-authors":"~1.2.0","grunt-jscs-checker":"~0.2.3","grunt-jsonlint":"~1.0.1","gzip-js":"0.3.2","load-grunt-tasks":"~0.2.0","testswarm":"~1.1.0","requirejs":"~2.1.9","which":"~1.0.5"},"_id":"jquery@2.1.0-beta2","dist":{"shasum":"e0fbbe2beb45b4d8f808362c7c99ef5bfee7d8c6","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.0-beta2.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"jquery","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"rwaldron","email":"waldron.rick@gmail.com"},{"name":"jquery","email":"npm@jquery.com"}],"directories":{}},"2.1.0-beta3":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.0-beta3","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.0-beta3/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.0-beta3/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.4.1","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.0-beta3","dist":{"shasum":"5a89b624d8fa625fe5fa83a12a9acb1ef8a11d02","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.0-beta3.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jquery","email":"npm@jquery.org"},"maintainers":[{"name":"jquery","email":"npm@jquery.org"}],"directories":{}},"1.11.0-beta3":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.0-beta3","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.0-beta3/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.0-beta3/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.4.1","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.0-beta3","dist":{"shasum":"0464a6aba9f35f6c83a203caa23ab420909ce852","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.0-beta3.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jquery","email":"npm@jquery.org"},"maintainers":[{"name":"jquery","email":"npm@jquery.org"}],"directories":{}},"1.11.0-rc1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.0-rc1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.0-rc1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.0-rc1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.5.0","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.0-rc1","dist":{"shasum":"c2f6a4877374647b20b080c478d8dbcdfb4960ee","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.0-rc1.tgz"},"_from":".","_npmVersion":"1.3.23","_npmUser":{"name":"jquery","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"jquery","email":"dave.methvin@gmail.com"}],"directories":{}},"2.1.0-rc1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.0-rc1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.0-rc1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.0-rc1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.5.0","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.0-rc1","dist":{"shasum":"8c9f5d9a055c2fedb3f5269617ae649497d6a3b0","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.0-rc1.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},"maintainers":[{"name":"jquery","email":"npm@jquery.com"},{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"}],"directories":{}},"1.11.0":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.0","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.0/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.0/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.5.0","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.0","dist":{"shasum":"c67ceee19b403650d682adcf39d5c9009814d949","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jquery","email":"npm@jquery.org"},"maintainers":[{"name":"jquery","email":"npm@jquery.org"}],"directories":{}},"2.1.0":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.0","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.0/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.0/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"archiver":"0.4.10","gzip-js":"0.3.2","testswarm":"1.1.0","load-grunt-tasks":"0.2.0","requirejs":"2.1.9","shelljs":"0.2.6","grunt":"0.4.2","grunt-cli":"0.1.11","grunt-contrib-jshint":"0.7.2","grunt-contrib-uglify":"0.2.7","grunt-contrib-watch":"0.5.3","grunt-bowercopy":"0.5.0","grunt-compare-size":"0.4.0","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.2.6","grunt-jsonlint":"1.0.4"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.0","dist":{"shasum":"1c9a8c971d2b53dae10d72e16cbb5a1df16a4ace","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jquery","email":"npm@jquery.org"},"maintainers":[{"name":"jquery","email":"npm@jquery.org"}],"directories":{}},"2.1.1-beta1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.1-beta1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.1-beta1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.1-beta1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.3.2","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.1-beta1","dist":{"shasum":"6306c8ea1d104775f3ef8f5c26f0a32acd710a11","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.1-beta1.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"m_gol","email":"m.goleb@gmail.com"},"maintainers":[{"name":"jquery","email":"npm@jquery.com"},{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"1.11.1-beta1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.1-beta1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.1-beta1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.1-beta1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.3.2","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.1-beta1","dist":{"shasum":"c7eacde5e1ae06e029f1cd1b2dd444953a33e843","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.1-beta1.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"m_gol","email":"m.goleb@gmail.com"},"maintainers":[{"name":"jquery","email":"npm@jquery.com"},{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"2.1.1-rc1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.1-rc1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.1-rc1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.1-rc1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.1-rc1","_shasum":"95c494fdbbd0cefc305260e11ad46ae49a387c3d","_from":".","_npmVersion":"1.4.7","_npmUser":{"name":"m_gol","email":"m.goleb@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"dist":{"shasum":"95c494fdbbd0cefc305260e11ad46ae49a387c3d","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.1-rc1.tgz"},"directories":{}},"1.11.1-rc1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.1-rc1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.1-rc1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.1-rc1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.1-rc1","_shasum":"666a7df02488b48732d96e8ab9bdd34f61dd4238","_from":".","_npmVersion":"1.4.7","_npmUser":{"name":"m_gol","email":"m.goleb@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"dist":{"shasum":"666a7df02488b48732d96e8ab9bdd34f61dd4238","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.1-rc1.tgz"},"directories":{}},"2.1.1-rc2":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.1-rc2","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.1-rc2/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.1-rc2/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.1-rc2","dist":{"shasum":"99833e415efa7ac8a4efecc5df6894b2f938a598","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.1-rc2.tgz"},"_from":".","_npmVersion":"1.2.25","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"1.11.1-rc2":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.1-rc2","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.1-rc2/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.1-rc2/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.1-rc2","dist":{"shasum":"a4ef3edde0864d8524c5e72f59c459fd7a9ebd17","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.1-rc2.tgz"},"_from":".","_npmVersion":"1.2.25","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"2.1.1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@2.1.1","dist":{"shasum":"828fc60f50f7ee5983363ef4eb01c5f70af4bd5b","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz"},"_from":".","_npmVersion":"1.2.25","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"1.11.1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.1","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.1/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.1/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"_id":"jquery@1.11.1","dist":{"shasum":"b6ec928590112ebed69e1e49cbfd0025ccd60ddb","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.1.tgz"},"_from":".","_npmVersion":"1.2.25","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"}],"directories":{}},"1.9.1":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.9.1","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/master/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt"}],"scripts":{"test":"grunt"},"dependencies":{},"devDependencies":{"grunt-compare-size":"~0.3.0","grunt-git-authors":"~1.1.0","grunt-update-submodules":"~0.2.0","grunt-contrib-watch":"~0.1.1","grunt-contrib-jshint":"~0.1.1","grunt-contrib-uglify":"~0.1.1","grunt":"~0.4.0","testswarm":"0.2.2"},"keywords":[],"gitHead":"d71f6a53927ad02d728503385d15539b73d21ac8","_id":"jquery@1.9.1","_shasum":"e4cd4835faaefbade535857613c0fc3ff2adaf34","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"timmywil","email":"timmywillisn@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"e4cd4835faaefbade535857613c0fc3ff2adaf34","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.9.1.tgz"},"directories":{}},"2.1.2":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.2","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.2/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.2/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"1.7.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"a04f5ff9795fd6292117563623db44cf3f875868","_id":"jquery@2.1.2","_shasum":"b68f154cb2ea4731924883e9fe20ec199d1dc1e2","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"b68f154cb2ea4731924883e9fe20ec199d1dc1e2","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.2.tgz"},"directories":{}},"1.11.2":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.2","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.2/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.2/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"2.0.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"9690801db01709bfbff5f977d07fb7cc14472908","_id":"jquery@1.11.2","_shasum":"30ab26857211c37caa83da0f6903155fe49bb72d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dmethvin","email":"dave.methvin@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"30ab26857211c37caa83da0f6903155fe49bb72d","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.2.tgz"},"directories":{}},"2.1.3":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.3","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.3/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.3/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"2.0.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","jsdom":"1.5.0","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"8f2a9d9272d6ed7f32d3a484740ab342c02541e0","_id":"jquery@2.1.3","_shasum":"6ec55204673d505d39432c5bf5cfad10e1dbad2e","_from":".","_npmVersion":"2.1.14","_nodeVersion":"0.11.14","_npmUser":{"name":"m_gol","email":"m.goleb@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"6ec55204673d505d39432c5bf5cfad10e1dbad2e","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz"},"directories":{}},"2.1.4":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"2.1.4","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.4/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/2.1.4/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"2.0.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","jsdom":"1.5.0","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"7751e69b615c6eca6f783a81e292a55725af6b85","_id":"jquery@2.1.4","_shasum":"228bde698a0c61431dc2630a6a154f15890d2317","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"timmywil","email":"timmywillisn@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"228bde698a0c61431dc2630a6a154f15890d2317","tarball":"http://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz"},"directories":{}},"1.11.3":{"name":"jquery","title":"jQuery","description":"JavaScript library for DOM operations","version":"1.11.3","main":"dist/jquery.js","homepage":"http://jquery.com","author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/1.11.3/AUTHORS.txt"},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"licenses":[{"type":"MIT","url":"https://github.com/jquery/jquery/blob/1.11.3/MIT-LICENSE.txt"}],"dependencies":{},"devDependencies":{"commitplease":"2.0.0","grunt":"0.4.2","grunt-bowercopy":"0.7.1","grunt-cli":"0.1.13","grunt-compare-size":"0.4.0","grunt-contrib-jshint":"0.8.0","grunt-contrib-uglify":"0.3.2","grunt-contrib-watch":"0.5.3","grunt-git-authors":"1.2.0","grunt-jscs-checker":"0.4.1","grunt-jsonlint":"1.0.4","gzip-js":"0.3.2","load-grunt-tasks":"0.3.0","requirejs":"2.1.10","testswarm":"1.1.0"},"scripts":{"build":"npm install && grunt","start":"grunt watch","test":"grunt"},"gitHead":"1472290917f17af05e98007136096784f9051fab","_id":"jquery@1.11.3","_shasum":"dd8b74278b27102d29df63eae28308a8cfa1b583","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"timmywil","email":"timmywillisn@gmail.com"},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"dist":{"shasum":"dd8b74278b27102d29df63eae28308a8cfa1b583","tarball":"http://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz"},"directories":{}}},"maintainers":[{"name":"dmethvin","email":"dave.methvin@gmail.com"},{"name":"scott.gonzalez","email":"scott.gonzalez@gmail.com"},{"name":"m_gol","email":"m.goleb@gmail.com"},{"name":"timmywil","email":"timmywillisn@gmail.com"}],"time":{"modified":"2015-04-28T16:22:06.378Z","created":"2011-03-19T07:19:56.392Z","1.5.1":"2011-03-19T07:19:56.956Z","1.6.2":"2011-07-06T16:13:21.519Z","1.6.3":"2011-09-12T19:05:34.373Z","1.7.2":"2012-05-01T11:14:09.090Z","1.7.3":"2012-07-01T16:11:53.194Z","1.8.2":"2012-11-11T22:43:58.910Z","1.8.3":"2012-12-01T00:03:02.297Z","2.1.0-beta2":"2013-11-15T16:34:48.859Z","2.1.0-beta3":"2013-12-20T22:53:28.426Z","1.11.0-beta3":"2014-01-06T19:57:22.387Z","2.1.0-rc1":"2014-01-17T22:47:16.391Z","1.11.0-pre":"2014-01-16T20:38:42.912Z","1.11.0-rc1":"2014-01-16T21:08:36.924Z","1.11.0":"2014-01-23T21:07:07.184Z","2.1.0":"2014-01-23T21:12:47.772Z","2.1.1-beta1":"2014-03-24T17:05:07.581Z","1.11.1-beta1":"2014-03-24T17:25:14.236Z","2.1.1-rc1":"2014-04-18T15:29:41.423Z","1.11.1-rc1":"2014-04-18T15:40:23.931Z","2.1.1-rc2":"2014-04-21T20:52:06.866Z","1.11.1-rc2":"2014-04-21T21:12:52.817Z","2.1.1":"2014-05-01T17:15:20.164Z","1.11.1":"2014-05-01T18:05:32.863Z","1.9.1":"2014-07-17T22:01:17.886Z","2.1.2":"2014-12-17T14:14:28.184Z","1.11.2":"2014-12-17T16:07:07.647Z","2.1.3":"2014-12-18T15:18:38.205Z","2.1.4":"2015-04-28T16:17:13.648Z","1.11.3":"2015-04-28T16:22:06.378Z"},"author":{"name":"jQuery Foundation and other contributors","url":"https://github.com/jquery/jquery/blob/2.1.4/AUTHORS.txt"},"users":{"dodo":true,"fgribreau":true,"parroit":true,"cedx":true,"m_gol":true,"feross":true,"bendiken":true,"funroll":true,"inancgumus":true,"jkcpr":true,"magemagic":true,"davidbaiguini":true,"shen-weizhong":true,"oroce":true,"beth_rogers465":true,"leobalter":true,"frk1705":true,"victorcastelan":true,"skinnybrit51":true,"tommyjs7":true,"xanderiel":true,"arturmuller":true,"lukecarrier":true,"bjlxj_2008":true,"kmck":true,"jesus81":true,"rpgreen":true,"vsn4ik":true,"gabrielsanterre":true,"adswebwork":true,"abuelwafa":true,"karlitowhoelse":true,"mhat":true,"tektimmy":true,"modest":true,"rgraves90":true,"alexandermac":true,"adamk":true,"nitayneeman":true,"haeck":true,"pnevares":true,"hal9zillion":true,"j3kz":true,"wambulance":true,"jostw":true,"sahilsk":true,"broxmgs":true,"jimster305":true,"csbun":true,"isis97":true,"simplyianm":true,"fatelei":true,"trotyl":true,"chengsu":true,"orlenka":true,"mr_eaze":true,"jmm23":true,"ackuser":true,"tfentonz":true,"ftornik":true,"onheiron":true,"jgreeley":true,"sedmonds":true,"cycomachead":true,"duchenerc":true,"damianof":true,"sergiodxa":true,"rhythm19":true,"piotrd":true,"buzuli":true},"repository":{"type":"git","url":"https://github.com/jquery/jquery.git"},"readme":"[jQuery](http://jquery.com/) - New Wave JavaScript\n==================================================\n\nContribution Guides\n--------------------------------------\n\nIn the spirit of open source software development, jQuery always encourages community code contribution. To help you get started and before you jump into writing code, be sure to read these important contribution guidelines thoroughly:\n\n1. [Getting Involved](http://contribute.jquery.org/)\n2. [Core Style Guide](http://contribute.jquery.org/style-guide/js/)\n3. [Writing Code for jQuery Foundation Projects](http://contribute.jquery.org/code/)\n\n\nEnvironments in which to use jQuery\n--------------------------------------\n\n- [Browser support](http://jquery.com/browser-support/) differs between the master (2.x) branch and the 1.x-master branch. Specifically, 2.x does not support legacy browsers such as IE6-8. The jQuery team continues to provide support for legacy browsers on the 1.x-master branch. Use the latest 1.x release if support for those browsers is required. See [browser support](http://jquery.com/browser-support/) for more info.\n- To use jQuery in Node, browser extensions, and other non-browser environments, use only **2.x** releases. 1.x does not support these environments.\n\n\nWhat you need to build your own jQuery\n--------------------------------------\n\nIn order to build jQuery, you need to have Node.js/npm latest and git 1.7 or later.\n(Earlier versions might work OK, but are not tested.)\n\nFor Windows you have to download and install [git](http://git-scm.com/downloads) and [Node.js](http://nodejs.org/download/).\n\nMac OS users should install [Homebrew](http://mxcl.github.com/homebrew/). Once Homebrew is installed, run `brew install git` to install git,\nand `brew install node` to install Node.js.\n\nLinux/BSD users should use their appropriate package managers to install git and Node.js, or build from source\nif you swing that way. Easy-peasy.\n\n\nHow to build your own jQuery\n----------------------------\n\nClone a copy of the main jQuery git repo by running:\n\n```bash\ngit clone git://github.com/jquery/jquery.git\n```\n\nEnter the jquery directory and run the build script:\n```bash\ncd jquery && npm run build\n```\nThe built version of jQuery will be put in the `dist/` subdirectory, along with the minified copy and associated map file.\n\nIf you want create custom build or help with jQuery development, it would be better to install [grunt command line interface](https://github.com/gruntjs/grunt-cli) as a global package:\n\n```\nnpm install -g grunt-cli\n```\nMake sure you have `grunt` installed by testing:\n```\ngrunt -v\n```\n\nNow by running `grunt` command, in the jquery directory, you could build full version of jQuery, just like with `npm run build` command:\n```\ngrunt\n```\n\nThere are many other tasks available for jQuery Core:\n```\ngrunt -help\n```\n\n### Modules\n\nSpecial builds can be created that exclude subsets of jQuery functionality.\nThis allows for smaller custom builds when the builder is certain that those parts of jQuery are not being used.\nFor example, an app that only used JSONP for `$.ajax()` and did not need to calculate offsets or positions of elements could exclude the offset and ajax/xhr modules.\n\nAny module may be excluded except for `core`, and `selector`. To exclude a module, pass its path relative to the `src` folder (without the `.js` extension).\n\nSome example modules that can be excluded are:\n\n- **ajax**: All AJAX functionality: `$.ajax()`, `$.get()`, `$.post()`, `$.ajaxSetup()`, `.load()`, transports, and ajax event shorthands such as `.ajaxStart()`.\n- **ajax/xhr**: The XMLHTTPRequest AJAX transport only.\n- **ajax/script**: The `<script>` AJAX transport only; used to retrieve scripts.\n- **ajax/jsonp**: The JSONP AJAX transport only; depends on the ajax/script transport.\n- **css**: The `.css()` method plus non-animated `.show()`, `.hide()` and `.toggle()`. Also removes **all** modules depending on css (including **effects**, **dimensions**, and **offset**).\n- **deprecated**: Methods documented as deprecated but not yet removed; currently only `.andSelf()`.\n- **dimensions**: The `.width()` and `.height()` methods, including `inner-` and `outer-` variations.\n- **effects**: The `.animate()` method and its shorthands such as `.slideUp()` or `.hide(\"slow\")`.\n- **event**: The `.on()` and `.off()` methods and all event functionality. Also removes `event/alias`.\n- **event/alias**: All event attaching/triggering shorthands like `.click()` or `.mouseover()`.\n- **offset**: The `.offset()`, `.position()`, `.offsetParent()`, `.scrollLeft()`, and `.scrollTop()` methods.\n- **wrap**: The `.wrap()`, `.wrapAll()`, `.wrapInner()`, and `.unwrap()` methods.\n- **core/ready**: Exclude the ready module if you place your scripts at the end of the body. Any ready callbacks bound with `jQuery()` will simply be called immediately. However, `jQuery(document).ready()` will not be a function and `.on(\"ready\", ...)` or similar will not be triggered.\n- **deferred**: Exclude jQuery.Deferred. This also removes jQuery.Callbacks. *Note* that modules that depend on jQuery.Deferred(AJAX, effects, core/ready) will not be removed and will still expect jQuery.Deferred to be there. Include your own jQuery.Deferred implementation or exclude those modules as well (`grunt custom:-deferred,-ajax,-effects,-core/ready`).\n- **exports/global**: Exclude the attachment of global jQuery variables ($ and jQuery) to the window.\n- **exports/amd**: Exclude the AMD definition.\n\nAs a special case, you may also replace Sizzle by using a special flag `grunt custom:-sizzle`.\n\n- **sizzle**: The Sizzle selector engine. When this module is excluded, it is replaced by a rudimentary selector engine based on the browser's `querySelectorAll` method that does not support jQuery selector extensions or enhanced semantics. See the selector-native.js file for details.\n\n*Note*: Excluding Sizzle will also exclude all jQuery selector extensions (such as `effects/animatedSelector` and `css/hiddenVisibleSelectors`).\n\nThe build process shows a message for each dependent module it excludes or includes.\n\n##### AMD name\n\nAs an option, you can set the module name for jQuery's AMD definition. By default, it is set to \"jquery\", which plays nicely with plugins and third-party libraries, but there may be cases where you'd like to change this. Simply set the `\"amd\"` option:\n\n```bash\ngrunt custom --amd=\"custom-name\"\n```\n\nOr, to define anonymously, set the name to an empty string.\n\n```bash\ngrunt custom --amd=\"\"\n```\n\n#### Custom Build Examples\n\nTo create a custom build of the latest stable version, first check out the version:\n\n```bash\ngit pull; git checkout $(git describe --abbrev=0 --tags)\n```\n\nThen, make sure all Node dependencies are installed:\n\n```bash\nnpm install\n```\n\nCreate the custom build using the `grunt custom` option, listing the modules to be excluded.\n\nExclude all **ajax** functionality:\n\n```bash\ngrunt custom:-ajax\n```\n\nExcluding **css** removes modules depending on CSS: **effects**, **offset**, **dimensions**.\n\n```bash\ngrunt custom:-css\n```\n\nExclude a bunch of modules:\n\n```bash\ngrunt custom:-ajax,-css,-deprecated,-dimensions,-effects,-event/alias,-offset,-wrap\n```\n\nFor questions or requests regarding custom builds, please start a thread on the [Developing jQuery Core](https://forum.jquery.com/developing-jquery-core) section of the forum. Due to the combinatorics and custom nature of these builds, they are not regularly tested in jQuery's unit test process. The non-Sizzle selector engine currently does not pass unit tests because it is missing too much essential functionality.\n\nRunning the Unit Tests\n--------------------------------------\n\nMake sure you have the necessary dependencies:\n\n```bash\nnpm install\n```\n\nStart `grunt watch` or `npm start` to auto-build jQuery as you work:\n\n```bash\ncd jquery && grunt watch\n```\n\n\nRun the unit tests with a local server that supports PHP. Ensure that you run the site from the root directory, not the \"test\" directory. No database is required. Pre-configured php local servers are available for Windows and Mac. Here are some options:\n\n- Windows: [WAMP download](http://www.wampserver.com/en/)\n- Mac: [MAMP download](http://www.mamp.info/en/index.html)\n- Linux: [Setting up LAMP](https://www.linux.com/learn/tutorials/288158-easy-lamp-server-installation)\n- [Mongoose (most platforms)](http://code.google.com/p/mongoose/)\n\n\n\n\nBuilding to a different directory\n---------------------------------\n\nTo copy the built jQuery files from `/dist` to another directory:\n\n```bash\ngrunt && grunt dist:/path/to/special/location/\n```\nWith this example, the output files would be:\n\n```bash\n/path/to/special/location/jquery.js\n/path/to/special/location/jquery.min.js\n```\n\nTo add a permanent copy destination, create a file in `dist/` called \".destination.json\". Inside the file, paste and customize the following:\n\n```json\n\n{\n  \"/Absolute/path/to/other/destination\": true\n}\n```\n\nAdditionally, both methods can be combined.\n\n\n\nEssential Git\n-------------\n\nAs the source code is handled by the Git version control system, it's useful to know some features used.\n\n### Cleaning ###\n\nIf you want to purge your working directory back to the status of upstream, following commands can be used (remember everything you've worked on is gone after these):\n\n```bash\ngit reset --hard upstream/master\ngit clean -fdx\n```\n\n### Rebasing ###\n\nFor feature/topic branches, you should always use the `--rebase` flag to `git pull`, or if you are usually handling many temporary \"to be in a github pull request\" branches, run following to automate this:\n\n```bash\ngit config branch.autosetuprebase local\n```\n(see `man git-config` for more information)\n\n### Handling merge conflicts ###\n\nIf you're getting merge conflicts when merging, instead of editing the conflicted files manually, you can use the feature\n`git mergetool`. Even though the default tool `xxdiff` looks awful/old, it's rather useful.\n\nFollowing are some commands that can be used there:\n\n* `Ctrl + Alt + M` - automerge as much as possible\n* `b` - jump to next merge conflict\n* `s` - change the order of the conflicted lines\n* `u` - undo a merge\n* `left mouse button` - mark a block to be the winner\n* `middle mouse button` - mark a line to be the winner\n* `Ctrl + S` - save\n* `Ctrl + Q` - quit\n\n[QUnit](http://api.qunitjs.com) Reference\n-----------------\n\n### Test methods ###\n\n```js\nexpect( numAssertions );\nstop();\nstart();\n```\n\n\nNote: QUnit's eventual addition of an argument to stop/start is ignored in this test suite so that start and stop can be passed as callbacks without worrying about their parameters\n\n### Test assertions ###\n\n\n```js\nok( value, [message] );\nequal( actual, expected, [message] );\nnotEqual( actual, expected, [message] );\ndeepEqual( actual, expected, [message] );\nnotDeepEqual( actual, expected, [message] );\nstrictEqual( actual, expected, [message] );\nnotStrictEqual( actual, expected, [message] );\nthrows( block, [expected], [message] );\n```\n\n\nTest Suite Convenience Methods Reference (See [test/data/testinit.js](https://github.com/jquery/jquery/blob/master/test/data/testinit.js))\n------------------------------\n\n### Returns an array of elements with the given IDs ###\n\n```js\nq( ... );\n```\n\nExample:\n\n```js\nq(\"main\", \"foo\", \"bar\");\n\n=> [ div#main, span#foo, input#bar ]\n```\n\n### Asserts that a selection matches the given IDs ###\n\n```js\nt( testName, selector, [ \"array\", \"of\", \"ids\" ] );\n```\n\nExample:\n\n```js\nt(\"Check for something\", \"//[a]\", [\"foo\", \"baar\"]);\n```\n\n\n\n### Fires a native DOM event without going through jQuery ###\n\n```js\nfireNative( node, eventType )\n```\n\nExample:\n\n```js\nfireNative( jQuery(\"#elem\")[0], \"click\" );\n```\n\n### Add random number to url to stop caching ###\n\n```js\nurl( \"some/url.php\" );\n```\n\nExample:\n\n```js\nurl(\"data/test.html\");\n\n=> \"data/test.html?10538358428943\"\n\n\nurl(\"data/test.php?foo=bar\");\n\n=> \"data/test.php?foo=bar&10538358345554\"\n```\n\n\n### Load tests in an iframe ###\n\nLoads a given page constructing a url with fileName: `\"./data/\" + fileName + \".html\"`\nand fires the given callback on jQuery ready (using the jQuery loading from that page)\nand passes the iFrame's jQuery to the callback.\n\n```js\ntestIframe( fileName, testName, callback );\n```\n\nCallback arguments:\n\n```js\ncallback( jQueryFromIFrame, iFrameWindow, iFrameDocument );\n```\n\n### Load tests in an iframe (window.iframeCallback) ###\n\nLoads a given page constructing a url with fileName: `\"./data/\" + fileName + \".html\"`\nThe given callback is fired when window.iframeCallback is called by the page.\nThe arguments passed to the callback are the same as the\narguments passed to window.iframeCallback, whatever that may be\n\n```js\ntestIframeWithCallback( testName, fileName, callback );\n```\n\nQuestions?\n----------\n\nIf you have any questions, please feel free to ask on the\n[Developing jQuery Core forum](http://forum.jquery.com/developing-jquery-core) or in #jquery on irc.freenode.net.\n","readmeFilename":"README.md","homepage":"http://jquery.com","keywords":["jquery","javascript","browser","library"],"bugs":{"url":"http://bugs.jquery.com"},"_attachments":{},"_etag":"\"AYC1SFQSZ40BXMX14UGSUAEB9\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/mixto/.cache.json b/atom/.apm/registry.npmjs.org/mixto/.cache.json
new file mode 100644 (file)
index 0000000..d0185fa
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"mixto","_rev":"13-0b02739334883d5c73186e417c39a33e","name":"mixto","description":"A mixin superclass. Its subclasses have `.extend` and `.includeInto` methods to mix behavior into other objects and classes.","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"mixto","version":"0.1.0","description":"A mixin superclass. Its subclasses have `.extend` and `.includeInto` methods to mix behavior into other objects and classes.","main":"lib/mixin","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/atom/mixto"},"keywords":["mixin","trait"],"bugs":{"url":"https://github.com/atom/mixto/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/mixto/raw/master/LICENSE.md"}],"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","jasmine-waits-for-callback":"~0.1.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"author":{"name":"Nathan Sobo"},"license":"BSD-2-Clause","_id":"mixto@0.1.0","dist":{"shasum":"e57755228e3a234bb49abbb7ecc973da4c7b5861","tarball":"http://registry.npmjs.org/mixto/-/mixto-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.2.0":{"name":"mixto","version":"0.2.0","description":"A mixin superclass. Its subclasses have `.extend` and `.includeInto` methods to mix behavior into other objects and classes.","main":"lib/mixin","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/mixto"},"keywords":["mixin","trait"],"bugs":{"url":"https://github.com/atom/mixto/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/mixto/raw/master/LICENSE.md"}],"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","jasmine-waits-for-callback":"~0.1.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"author":{"name":"Nathan Sobo"},"license":"BSD-2-Clause","_id":"mixto@0.2.0","dist":{"shasum":"479babc453295ce1cf0f7b2bb54cc000939cb722","tarball":"http://registry.npmjs.org/mixto/-/mixto-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.3.0":{"name":"mixto","version":"0.3.0","description":"A mixin superclass. Its subclasses have `.extend` and `.includeInto` methods to mix behavior into other objects and classes.","main":"lib/mixin","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/mixto"},"keywords":["mixin","trait"],"bugs":{"url":"https://github.com/atom/mixto/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/mixto/raw/master/LICENSE.md"}],"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","jasmine-waits-for-callback":"~0.1.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"author":{"name":"Nathan Sobo"},"license":"BSD-2-Clause","_id":"mixto@0.3.0","dist":{"shasum":"9f4e6410352a3a67d30c1643042950ad7ce3226b","tarball":"http://registry.npmjs.org/mixto/-/mixto-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"0.4.0":{"name":"mixto","version":"0.4.0","description":"A mixin superclass. Its subclasses have `.extend` and `.includeInto` methods to mix behavior into other objects and classes.","main":"lib/mixin","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/mixto"},"keywords":["mixin","trait"],"bugs":{"url":"https://github.com/atom/mixto/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/mixto/raw/master/LICENSE.md"}],"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","jasmine-waits-for-callback":"~0.1.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"author":{"name":"Nathan Sobo"},"license":"BSD-2-Clause","homepage":"https://github.com/atom/mixto","_id":"mixto@0.4.0","dist":{"shasum":"a54ddcb83087c0a35f8291b29517441727fee445","tarball":"http://registry.npmjs.org/mixto/-/mixto-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.0.0":{"name":"mixto","version":"1.0.0","description":"A mixin superclass. Its subclasses have `.extend` and `.includeInto` methods to mix behavior into other objects and classes.","main":"lib/mixin","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/mixto"},"keywords":["mixin","trait"],"bugs":{"url":"https://github.com/atom/mixto/issues"},"licenses":[{"type":"MIT","url":"http://github.com/atom/mixto/raw/master/LICENSE.md"}],"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"author":{"name":"Nathan Sobo"},"_id":"mixto@1.0.0","dist":{"shasum":"c320ef61b52f2898f522e17d8bbc6d506d8425b6","tarball":"http://registry.npmjs.org/mixto/-/mixto-1.0.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}}},"readme":"# Mixto: A simple mixin superclass [![Build Status](https://travis-ci.org/atom/mixto.png?branch=master)](https://travis-ci.org/atom/mixto)\n\nTo create a mixin, subclass mixto:\n\n```coffee\nMixin = require 'mixto'\n\nclass MyMixin extends Mixin\n  @classMethod: -> console.log(\"foo\")\n  instanceMethod: -> console.log(\"bar\")\n```\n\nThen mix into classes with `.includeInto`:\n\n```coffee\nclass MyClass\n  MyMixin.includeInto(this)\n  \nMyClass.classMethod()\n(new MyClass).instanceMethod()\n```\n\nOr extend individual objects with `.extend`:\n\n```coffee-script\nmyObject = {a: 1, b: 2}\nMyMixin.extend(myObject)\nmyObject.instanceMethod()\n```\n\nOr build standalone instances of your 'mixin':\n\n```\nstandalone = new MyMixin\nstandalone.instanceMethod()\n```\n","maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"time":{"modified":"2014-08-27T01:26:26.044Z","created":"2013-10-09T16:03:03.214Z","0.1.0":"2013-10-09T16:03:04.273Z","0.2.0":"2013-11-08T02:02:17.130Z","0.3.0":"2013-11-12T04:22:25.337Z","0.4.0":"2014-01-03T21:46:49.200Z","1.0.0":"2014-01-16T23:38:11.406Z"},"author":{"name":"Nathan Sobo"},"repository":{"type":"git","url":"https://github.com/atom/mixto"},"keywords":["mixin","trait"],"bugs":{"url":"https://github.com/atom/mixto/issues"},"readmeFilename":"README.md","_attachments":{},"_etag":"\"2I4QJBQFV6TQJCZJ8LODC4K2W\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/mkdirp/.cache.json b/atom/.apm/registry.npmjs.org/mkdirp/.cache.json
new file mode 100644 (file)
index 0000000..714008f
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"mkdirp","_rev":"178-f672ffcfa85232c8edc60f55c16b0a2a","name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","dist-tags":{"latest":"0.5.1"},"versions":{"0.0.1":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.0.1","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"modules":{"index":"./index"},"keywords":["mkdir","directory"],"repository":{"type":"git","url":"http://github.com/substack/node-mkdirp.git"},"engines":{"node":"*"},"_id":"mkdirp@0.0.1","_nodeSupported":true,"_npmVersion":"0.2.12-1","_nodeVersion":"v0.2.5","dist":{"shasum":"3fbd9f4711a5234233dc6c9d7a052d4b9f83b416","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.0.1.tgz"},"directories":{}},"0.0.2":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.0.2","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"http://github.com/substack/node-mkdirp.git"},"license":"MIT/X11","engines":{"node":"*"},"_id":"mkdirp@0.0.2","_engineSupported":true,"_npmVersion":"0.2.18","_nodeVersion":"v0.3.8-pre","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"d9438082daac12691c71d64076706c8a5c3511b6","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.0.2.tgz"}},"0.0.3":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.0.3","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"expresso"},"devDependencies":{"expresso":"0.7.x"},"license":"MIT/X11","engines":{"node":"*"},"_id":"mkdirp@0.0.3","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"5a7d88a26857023759ffee7fe4c0b28b0f0066b9","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.0.3.tgz"},"directories":{}},"0.0.4":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.0.4","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"expresso"},"devDependencies":{"expresso":"0.7.x"},"license":"MIT/X11","engines":{"node":"*"},"_id":"mkdirp@0.0.4","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"fbb491deec0b9b00869f52582e5f431b3681d2f5","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.0.4.tgz"},"directories":{}},"0.0.5":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.0.5","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"expresso"},"devDependencies":{"expresso":"0.7.x"},"license":"MIT/X11","engines":{"node":"*"},"_id":"mkdirp@0.0.5","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"375facfa634b17dcdf734c56f59ddae5102811c8","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.0.5.tgz"},"directories":{}},"0.0.6":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.0.6","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"expresso"},"devDependencies":{"expresso":"0.7.x"},"license":"MIT/X11","engines":{"node":"*"},"_id":"mkdirp@0.0.6","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"0965de71060cf5e237ffa795243cb5d9a78d335b","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.0.6.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.0.7":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.0.7","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"node node_modules/tap/bin/tap.js test/*.js"},"devDependencies":{"tap":"0.0.x"},"license":"MIT/X11","engines":{"node":"*"},"_id":"mkdirp@0.0.7","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"d89b4f0e4c3e5e5ca54235931675e094fe1a5072","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.0.7.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.1.0":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.1.0","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"0.0.x"},"license":"MIT/X11","engines":{"node":"*"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"mkdirp@0.1.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"53212930f7bd75f187b6c8688eb0a5fd69b7d118","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.1.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.2.0":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.2.0","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"0.0.x"},"license":"MIT/X11","engines":{"node":"*"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"mkdirp@0.2.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"29dd87f198880b568d1efce0980e7231b048f3aa","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.2.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.2.1":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.2.1","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"0.0.x"},"license":"MIT/X11","engines":{"node":"*"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"mkdirp@0.2.1","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"2ef920435c8511e135137a33f18a9e40cf9dd166","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.2.1.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.2.2":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.2.2","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"0.0.x"},"license":"MIT/X11","engines":{"node":"*"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"mkdirp@0.2.2","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"7235f2a2062aaf3619189b9f4772114c30944498","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.2.2.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.3.0":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.3.0","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"0.0.x"},"license":"MIT/X11","engines":{"node":"*"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"mkdirp@0.3.0","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"1bbf5ab1ba827af23575143490426455f481fe1e","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.3.1":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.3.1","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"~0.2.4"},"license":"MIT/X11","engines":{"node":"*"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"mkdirp@0.3.1","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"bee3db22a2aa1c81d4b4c0db39c7da9888799593","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.1.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.3.2":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.3.2","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"~0.2.4"},"license":"MIT/X11","engines":{"node":"*"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"mkdirp@0.3.2","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"4bfb891e9c48b93d6b567f2c3cf2dd3f56bcdef8","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.2.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.3.3":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.3.3","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"~0.2.4"},"license":"MIT/X11","engines":{"node":"*"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"mkdirp@0.3.3","dependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.19","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"595e251c1370c3a68bab2136d0e348b8105adf13","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.3.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.3.4":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.3.4","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"http://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"~0.2.4"},"license":"MIT/X11","engines":{"node":"*"},"_id":"mkdirp@0.3.4","dist":{"shasum":"f8c81d213b7299a031f193a57d752a17d2f6c7d8","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.4.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.3.5":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.3.5","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"http://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"~0.4.0"},"license":"MIT","_id":"mkdirp@0.3.5","dist":{"shasum":"de3e5f8961c88c787ee1368df849ac4413eca8d7","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.4.0":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.4.0","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"http://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"devDependencies":{"tap":"~0.4.0"},"bin":{"mkdirp":"bin/cmd.js"},"license":"MIT","bugs":{"url":"https://github.com/substack/node-mkdirp/issues"},"homepage":"https://github.com/substack/node-mkdirp","_id":"mkdirp@0.4.0","dist":{"shasum":"291ac2a2d43a19c478662577b5be846fe83b5923","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.4.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.4.1":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.4.1","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"http://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"dependencies":{"minimist":"0.0.8"},"devDependencies":{"tap":"~0.4.0"},"bin":{"mkdirp":"bin/cmd.js"},"license":"MIT","bugs":{"url":"https://github.com/substack/node-mkdirp/issues"},"homepage":"https://github.com/substack/node-mkdirp","_id":"mkdirp@0.4.1","dist":{"shasum":"4d467afabfdf8ae460c2da656eae8f7b21af4558","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.4.1.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.4.2":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.4.2","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"https://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"dependencies":{"minimist":"0.0.8"},"devDependencies":{"tap":"~0.4.0"},"bin":{"mkdirp":"bin/cmd.js"},"license":"MIT","bugs":{"url":"https://github.com/substack/node-mkdirp/issues"},"homepage":"https://github.com/substack/node-mkdirp","_id":"mkdirp@0.4.2","dist":{"shasum":"427c8c18ece398b932f6f666f4e1e5b7740e78c8","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.4.2.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.5.0":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.5.0","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"./index","keywords":["mkdir","directory"],"repository":{"type":"git","url":"https://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"dependencies":{"minimist":"0.0.8"},"devDependencies":{"tap":"~0.4.0","mock-fs":"~2.2.0"},"bin":{"mkdirp":"bin/cmd.js"},"license":"MIT","bugs":{"url":"https://github.com/substack/node-mkdirp/issues"},"homepage":"https://github.com/substack/node-mkdirp","_id":"mkdirp@0.5.0","dist":{"shasum":"1d73076a6df986cd9344e15e71fcc05a4c9abf12","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.5.1":{"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"0.5.1","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"main":"index.js","keywords":["mkdir","directory"],"repository":{"type":"git","url":"git+https://github.com/substack/node-mkdirp.git"},"scripts":{"test":"tap test/*.js"},"dependencies":{"minimist":"0.0.8"},"devDependencies":{"tap":"1","mock-fs":"2 >=2.7.0"},"bin":{"mkdirp":"bin/cmd.js"},"license":"MIT","gitHead":"d4eff0f06093aed4f387e88e9fc301cb76beedc7","bugs":{"url":"https://github.com/substack/node-mkdirp/issues"},"homepage":"https://github.com/substack/node-mkdirp#readme","_id":"mkdirp@0.5.1","_shasum":"30057438eac6cf7f8c4767f38648d6697d75c903","_from":".","_npmVersion":"2.9.0","_nodeVersion":"2.0.0","_npmUser":{"name":"substack","email":"substack@gmail.com"},"dist":{"shasum":"30057438eac6cf7f8c4767f38648d6697d75c903","tarball":"http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}}},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"time":{"modified":"2015-05-14T02:27:01.553Z","created":"2011-01-06T02:54:36.080Z","0.0.1":"2011-01-06T02:54:36.496Z","0.0.2":"2011-02-14T20:11:44.988Z","0.0.3":"2011-06-20T04:02:44.361Z","0.0.4":"2011-06-29T00:28:32.272Z","0.0.5":"2011-06-29T18:22:05.839Z","0.0.6":"2011-08-20T21:37:10.730Z","0.0.7":"2011-09-10T22:50:08.879Z","0.1.0":"2011-11-06T06:32:23.379Z","0.2.0":"2011-11-16T05:32:17.036Z","0.2.1":"2011-11-16T09:26:51.089Z","0.2.2":"2012-01-08T05:02:35.484Z","0.3.0":"2012-01-20T02:20:42.042Z","0.3.1":"2012-03-31T19:51:38.912Z","0.3.2":"2012-04-30T08:52:12.424Z","0.3.3":"2012-06-05T15:54:31.889Z","0.3.4":"2012-08-20T12:27:24.983Z","0.3.5":"2013-02-22T11:44:25.486Z","0.4.0":"2014-04-22T22:21:21.058Z","0.4.1":"2014-05-04T02:20:59.368Z","0.4.2":"2014-05-06T01:40:35.608Z","0.5.0":"2014-05-06T02:28:23.769Z","0.5.1":"2015-05-14T02:27:01.553Z"},"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"repository":{"type":"git","url":"git+https://github.com/substack/node-mkdirp.git"},"users":{"pid":true,"dodo":true,"tellnes":true,"fgribreau":true,"jswartwood":true,"m42am":true,"superjoe":true,"chrisdickinson":true,"michaelnisi":true,"dannydulai":true,"dbrockman":true,"jpoehls":true,"chilts":true,"jamesmgreene":true,"forbeslindesay":true,"mvolkmann":true,"netroy":true,"kastor":true,"florianwendelborn":true,"werle":true,"pana":true,"isaacs":true,"polotek":true,"timur.shemsedinov":true,"jacques":true,"cilindrox":true,"greelgorke":true,"esundahl":true,"alanbhamilton":true,"coderaiser":true,"feross":true,"seldo":true,"tarcio":true,"biggora":true,"jifeng":true,"leventkaragol":true,"maxzhang":true,"cocopas":true,"peterbeno":true,"jacoborus":true,"zeusdeux":true,"redmed":true,"jacksontian":true,"solodu":true,"davidrlee":true,"sdolard":true,"krry":true,"tchey":true,"atd":true,"fill":true,"omrilotan":true,"pingjiang":true,"bmpvieira":true,"buster":true,"yourhoneysky":true,"asantiago":true,"caudralys":true,"ali1k":true,"peckzeg":true,"shieldax":true,"ryanj":true,"mihaiv":true,"lupus":true,"ycloud":true,"nayrangnu":true,"larixk":true,"masonwan":true,"f124275809":true,"cellule":true,"pdilyard":true,"hzapata":true,"tmypawa":true,"benoror":true,"mpcref":true,"kulakowka":true,"trusktr":true,"jakeginnivan":true,"pnevares":true,"seanjh":true,"pstoev":true,"subchen":true,"schnittstabil":true,"rbartoli":true,"shaneli":true,"itonyyo":true,"icirellik":true,"akiva":true,"mysticatea":true,"kelerliao":true,"wangnan0610":true,"mjwilliams":true,"jasoncmcg":true,"nwinant":true,"khaledkaram":true,"marcghorayeb":true,"elrolito":true,"shriek":true,"garrickajo":true,"ddffx":true,"jyounce":true,"mattms":true,"axelav":true,"ocd_lionel":true,"kappuccino":true,"emiljohansson":true,"pirijan":true},"keywords":["mkdir","directory"],"license":"MIT","readme":"# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n    \nmkdirp('/tmp/foo/bar/baz', function (err) {\n    if (err) console.error(err)\n    else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, opts, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `opts.mode`. If `opts` is a non-object, it will be treated as\nthe `opts.mode`.\n\nIf `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\nYou can optionally pass in an alternate `fs` implementation by passing in\n`opts.fs`. Your implementation should have `opts.fs.mkdir(path, mode, cb)` and\n`opts.fs.stat(path, cb)`.\n\n## mkdirp.sync(dir, opts)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `opts.mode`. If `opts` is a non-object, it will be\ntreated as the `opts.mode`.\n\nIf `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\nYou can optionally pass in an alternate `fs` implementation by passing in\n`opts.fs`. Your implementation should have `opts.fs.mkdirSync(path, mode)` and\n`opts.fs.statSync(path)`.\n\n# usage\n\nThis package also ships with a `mkdirp` command.\n\n```\nusage: mkdirp [DIR1,DIR2..] {OPTIONS}\n\n  Create each supplied directory including any necessary parent directories that\n  don't yet exist.\n  \n  If the directory already exists, do nothing.\n\nOPTIONS are:\n\n  -m, --mode   If a directory needs to be created, set the mode as an octal\n               permission string.\n\n```\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\nto get the library, or\n\n```\nnpm install -g mkdirp\n```\n\nto get the command.\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","homepage":"https://github.com/substack/node-mkdirp#readme","bugs":{"url":"https://github.com/substack/node-mkdirp/issues"},"_attachments":{},"_etag":"\"1PVL48LVUJKMJX26T2KIO0E9A\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/property-accessors/.cache.json b/atom/.apm/registry.npmjs.org/property-accessors/.cache.json
new file mode 100644 (file)
index 0000000..9450074
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"property-accessors","_rev":"16-8064e625e5c1bdac6ce74c96f8f2e74a","name":"property-accessors","description":"A mixin for declaring property accessors","dist-tags":{"latest":"1.1.3"},"versions":{"0.1.0":{"name":"property-accessors","version":"0.1.0","description":"A mixin for declaring property accessors","main":"lib/property-accessors","scripts":{"test":"grunt test","publish":"grunt"},"repository":{"type":"git","url":"https://github.com/atom/property-accessors"},"keywords":["property","accessors","metaprogramming"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/telepath/raw/master/LICENSE.md"}],"bugs":{"url":"https://github.com/atom/property-accessors/issues"},"homepage":"http://atom.github.io/property-accessors/","dependencies":{"mixto":"~0.3.0"},"devDependencies":{"coffee-script":"~1.6.3","jasmine-focused":"~0.12.0","jasmine-waits-for-callback":"~0.1.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2","json-diff":"~0.3.1","coffee-cache":"~0.2.0"},"_id":"property-accessors@0.1.0","dist":{"shasum":"dfc40ee98cd7ed23f27632b461e683fc02e377e2","tarball":"http://registry.npmjs.org/property-accessors/-/property-accessors-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.0.0":{"name":"property-accessors","version":"1.0.0","description":"A mixin for declaring property accessors","main":"lib/property-accessors","scripts":{"test":"grunt test","publish":"grunt"},"repository":{"type":"git","url":"https://github.com/atom/property-accessors"},"keywords":["property","accessors","metaprogramming"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/telepath/raw/master/LICENSE.md"}],"bugs":{"url":"https://github.com/atom/property-accessors/issues"},"homepage":"http://atom.github.io/property-accessors/","dependencies":{"mixto":"1.x"},"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"property-accessors@1.0.0","dist":{"shasum":"ffaf6f72c437a329b334f1b53da3419f5464c384","tarball":"http://registry.npmjs.org/property-accessors/-/property-accessors-1.0.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.1.0":{"name":"property-accessors","version":"1.1.0","description":"A mixin for declaring property accessors","main":"lib/property-accessors","scripts":{"test":"grunt test","publish":"grunt"},"repository":{"type":"git","url":"https://github.com/atom/property-accessors"},"keywords":["property","accessors","metaprogramming"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/telepath/raw/master/LICENSE.md"}],"bugs":{"url":"https://github.com/atom/property-accessors/issues"},"homepage":"http://atom.github.io/property-accessors/","dependencies":{"mixto":"1.x","harmony-collections":"git+https://github.com/Benvie/harmony-collections.git#e81b4b808359e2def9eeeabfdee69c2989e1fe96"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"_id":"property-accessors@1.1.0","dist":{"shasum":"ce1672797473eef1384d95a054a630ebcd539fbf","tarball":"http://registry.npmjs.org/property-accessors/-/property-accessors-1.1.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.1.1":{"name":"property-accessors","version":"1.1.1","description":"A mixin for declaring property accessors","main":"lib/property-accessors","scripts":{"test":"grunt test","publish":"grunt"},"repository":{"type":"git","url":"https://github.com/atom/property-accessors"},"keywords":["property","accessors","metaprogramming"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/telepath/raw/master/LICENSE.md"}],"bugs":{"url":"https://github.com/atom/property-accessors/issues"},"homepage":"http://atom.github.io/property-accessors/","dependencies":{"mixto":"1.x","es6-weak-map":"^0.1.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"e88b27f7972e4439b4c243d1755fde520374b55d","_id":"property-accessors@1.1.1","_shasum":"47de50880e086b035f1bfcf7cb0a10daab06091b","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"47de50880e086b035f1bfcf7cb0a10daab06091b","tarball":"http://registry.npmjs.org/property-accessors/-/property-accessors-1.1.1.tgz"},"directories":{}},"1.1.2":{"name":"property-accessors","version":"1.1.2","description":"A mixin for declaring property accessors","main":"lib/property-accessors","scripts":{"test":"grunt test","publish":"grunt"},"repository":{"type":"git","url":"https://github.com/atom/property-accessors"},"keywords":["property","accessors","metaprogramming"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/telepath/raw/master/LICENSE.md"}],"bugs":{"url":"https://github.com/atom/property-accessors/issues"},"homepage":"http://atom.github.io/property-accessors/","dependencies":{"mixto":"1.x","es6-weak-map":"^0.1.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"80b46d68b16f72e8e3ea26e27cc4d36f5d9bfe55","_id":"property-accessors@1.1.2","_shasum":"69c16e31ef1bb6ae16ebd01f694fe6b89a3f73be","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"69c16e31ef1bb6ae16ebd01f694fe6b89a3f73be","tarball":"http://registry.npmjs.org/property-accessors/-/property-accessors-1.1.2.tgz"},"directories":{}},"1.1.3":{"name":"property-accessors","version":"1.1.3","description":"A mixin for declaring property accessors","main":"lib/property-accessors","scripts":{"test":"grunt test","publish":"grunt"},"repository":{"type":"git","url":"https://github.com/atom/property-accessors"},"keywords":["property","accessors","metaprogramming"],"author":{"name":"Nathan Sobo"},"licenses":[{"type":"MIT","url":"http://github.com/atom/telepath/raw/master/LICENSE.md"}],"bugs":{"url":"https://github.com/atom/property-accessors/issues"},"homepage":"http://atom.github.io/property-accessors/","dependencies":{"mixto":"1.x","es6-weak-map":"^0.1.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","rimraf":"~2.2.2"},"gitHead":"c90f096dfc8f589ecb8186cadfbfcf97dc5f5cc6","_id":"property-accessors@1.1.3","_shasum":"1dde84024631865909ef30703365680c5f928b15","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"1dde84024631865909ef30703365680c5f928b15","tarball":"http://registry.npmjs.org/property-accessors/-/property-accessors-1.1.3.tgz"},"directories":{}}},"readme":"# Property Accessors Mixin [![Build Status](https://travis-ci.org/atom/property-accessors.svg?branch=master)](https://travis-ci.org/atom/property-accessors)\n\nA mixin for defining dynamic properties.\n\n## Basic Usage\n\nTo define a basic property accessor, use the `accessor` declaration. If you've\nincluded the mixin into a class, you define a prototype property by calling\n`@::accessor` on its prototype.\n\n```coffee\nPropertyAccessors = require 'property-accessors'\n\nclass Vehicle\n  PropertyAccessors.includeInto(this)\n\n  @::accessor 'type',\n    get: ->\n      switch @doorCount\n        when 4 then 'sedan' # i know this isn't strictly accurate\n        when 2 then 'coupe'\n    set: (type) ->\n      switch type\n        when 'sedan' then @doorCount = 4\n        when 'coupe' then @doorCount = 2\n\ncar = new Vehicle\ncar.doorCount = 2\ncar.type # => 'coupe'\n```\n\nYou can define a class-level property by *extending* with the mixin rather than\nincluding it (which extends the prototype).\n\n```coffee\nclass Vehicle\n  PropertyAccessors.extend(this)\n\n  @accessor 'vehicleCount', get: -> @allVehicles.length  \n```\n\nYou can just pass a single function if you only want to define a getter:\n\n```coffee\nclass Vehicle\n  PropertyAccessors.includeInto(this)\n\n  @::accessor 'type', -> # ...\n```\n\n## Fancy Usage\n\n### Lazy Accessors\n\nLazy accessors call a function the first time a property is accessed. You are\nstill free to overwrite this value by assigning the property explicitly.\n\n```coffee\nclass ScienceLab\n  PropertyAccessors.includeInto(this)\n\n  @::lazyAccessor 'crazyComputation', -> computeCrazyComputation()\n```\n\n### Advised Accessors\n\nAdvised accessors allow you to call code before the reading or writing of a\nproperty value. If a property is being assigned, your advice function is called\nwith the value being assigned and the old value.\n\n```coffee\nclass SpyStation\n  @advisedAccessor 'online',\n    get: -> @ensureAllSystemsNominal()\n    set: -> @ensureUserIsSpy()\n\nstation = new SpyStation\nstation.online = true # ensures user is a spy, then assigns true\nstation.online # ensures all systems are nominal, then returns true\n```\n","maintainers":[{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"time":{"modified":"2015-02-13T17:23:15.165Z","created":"2013-12-07T05:11:48.077Z","0.1.0":"2013-12-07T05:11:49.082Z","1.0.0":"2014-01-16T23:38:42.052Z","1.1.0":"2014-03-18T16:54:33.364Z","1.1.1":"2015-02-11T16:33:22.256Z","1.1.2":"2015-02-11T16:41:05.300Z","1.1.3":"2015-02-13T17:23:15.165Z"},"author":{"name":"Nathan Sobo"},"repository":{"type":"git","url":"https://github.com/atom/property-accessors"},"readmeFilename":"README.md","homepage":"http://atom.github.io/property-accessors/","keywords":["property","accessors","metaprogramming"],"bugs":{"url":"https://github.com/atom/property-accessors/issues"},"_attachments":{},"_etag":"\"BJDECPVJZJRVIYVM7A8X5OTE\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/rimraf/.cache.json b/atom/.apm/registry.npmjs.org/rimraf/.cache.json
new file mode 100644 (file)
index 0000000..0247d16
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"rimraf","_rev":"141-60c75131727936bf2638434590d77160","name":"rimraf","description":"A deep deletion module for node (like `rm -rf`)","dist-tags":{"latest":"2.4.1"},"versions":{"1.0.0":{"name":"rimraf","version":"1.0.0","main":"./rimraf","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"repository":"git://github.com/isaacs/rimraf.git","scripts":{"test":"cd ./test && bash run.sh"},"_id":"rimraf@1.0.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.0","_nodeVersion":"v0.4.0-pre","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"5797e55b587c77fc3e5b61051e429d1b00310840","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-1.0.0.tgz"}},"1.0.1":{"name":"rimraf","version":"1.0.1","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"contributors":[{"name":"Wayne Larsen","url":"http://github.com/wvl"}],"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"dependencies":{},"devDependencies":{},"_id":"rimraf@1.0.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.1rc7","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"8ff61e034ccd6f5e687b3d4f4da9247c4da7dd46","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-1.0.1.tgz"},"directories":{}},"1.0.2":{"name":"rimraf","version":"1.0.2","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"_id":"rimraf@1.0.2","contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"}],"dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.8-pre","_defaultsLoaded":true,"dist":{"shasum":"4cc292a756559123ee9e4995cffb783e769b50a3","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-1.0.2.tgz"},"directories":{}},"1.0.4":{"name":"rimraf","version":"1.0.4","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"_npmJsonOpts":{"file":"/Users/isaacs/.npm/rimraf/1.0.4/package/package.json","wscript":false,"serverjs":false,"contributors":["Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)","Wayne Larsen <wayne@larsen.st> (http://github.com/wvl)","ritch <skawful@gmail.com>"]},"_id":"rimraf@1.0.4","contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"}],"dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.11-pre","_defaultsLoaded":true,"dist":{"shasum":"2137e3d9a45c547b8df9f1309b8fbca29ea20822","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-1.0.4.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"1.0.5":{"name":"rimraf","version":"1.0.5","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"_npmJsonOpts":{"file":"/Users/isaacs/.npm/rimraf/1.0.5/package/package.json","wscript":false,"serverjs":false,"contributors":["Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)","Wayne Larsen <wayne@larsen.st> (http://github.com/wvl)","ritch <skawful@gmail.com>","Marcel Laverdet"]},"_id":"rimraf@1.0.5","contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"}],"dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"2c988219578bc569e461b9202bc22f5dbfa5b3e3","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-1.0.5.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"1.0.6":{"name":"rimraf","version":"1.0.6","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"_npmJsonOpts":{"file":"/Users/isaacs/.npm/rimraf/1.0.6/package/package.json","wscript":false,"serverjs":false,"contributors":["Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)","Wayne Larsen <wayne@larsen.st> (http://github.com/wvl)","ritch <skawful@gmail.com>","Marcel Laverdet"]},"_id":"rimraf@1.0.6","contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"}],"dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"8e404afc4edc5ac544dce5441a148e52657e5860","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-1.0.6.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"1.0.7":{"name":"rimraf","version":"1.0.7","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"rimraf@1.0.7","contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"}],"dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.30","_nodeVersion":"v0.5.8-pre","_defaultsLoaded":true,"dist":{"shasum":"9b664339fb366bf669d79672718336eba8d6adb4","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-1.0.7.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"1.0.8":{"name":"rimraf","version":"1.0.8","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"rimraf@1.0.8","contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"}],"dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.94","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"d8808068156c5135b16842348304b92c86f23bd1","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-1.0.8.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"1.0.9":{"name":"rimraf","version":"1.0.9","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"rimraf@1.0.9","contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"}],"dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.4","_defaultsLoaded":true,"dist":{"shasum":"be4801ff76c2ba6f1c50c78e9700eb1d21f239f1","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-1.0.9.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.0.0":{"name":"rimraf","version":"2.0.0","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~1.1"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"rimraf@2.0.0","contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"dependencies":{"graceful-fs":"~1.1"},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9-pre","_defaultsLoaded":true,"dist":{"shasum":"61bafdc9d6b385e8de0101b4b47c3d01b856c1ee","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.0.0.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.0.1":{"name":"rimraf","version":"2.0.1","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~1.1"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"rimraf@2.0.1","contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"dependencies":{"graceful-fs":"~1.1"},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9-pre","_defaultsLoaded":true,"dist":{"shasum":"6e58b6e7d3980bd620618d0703d502f872078fee","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.0.1.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.0.2":{"name":"rimraf","version":"2.0.2","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~1.1"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"rimraf@2.0.2","contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"dependencies":{"graceful-fs":"~1.1"},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"2a860f3f74bd7975002f73cb0b003b218ec351e4","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.0.2.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.0.3":{"name":"rimraf","version":"2.0.3","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~1.1"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"_id":"rimraf@2.0.3","dependencies":{"graceful-fs":"~1.1"},"dist":{"shasum":"f50a2965e7144e9afd998982f15df706730f56a9","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.0.3.tgz"},"_npmVersion":"1.1.69","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.1.0":{"name":"rimraf","version":"2.1.0","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~1.1"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"_id":"rimraf@2.1.0","dependencies":{"graceful-fs":"~1.1"},"dist":{"shasum":"6003214d56590b613791b457b4df6fb3170dc73b","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.1.0.tgz"},"_npmVersion":"1.1.70","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.1.1":{"name":"rimraf","version":"2.1.1","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~1.1"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"_id":"rimraf@2.1.1","dependencies":{"graceful-fs":"~1.1"},"dist":{"shasum":"ee9cec7e2d796ef59ceaa5f3a3024c225e630c61","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.1.1.tgz"},"_npmVersion":"1.1.70","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.1.2":{"name":"rimraf","version":"2.1.2","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~1.1"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"_id":"rimraf@2.1.2","dependencies":{"graceful-fs":"~1.1"},"dist":{"shasum":"82b9bedb9f88c39c43a20b01f209551b34a2ab76","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.1.2.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.1.3":{"name":"rimraf","version":"2.1.3","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~1"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"_id":"rimraf@2.1.3","dependencies":{"graceful-fs":"~1"},"dist":{"shasum":"23f9915e1935e2548fee061ae982316006f66322","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.1.3.tgz"},"_from":".","_npmVersion":"1.2.4","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.1.4":{"name":"rimraf","version":"2.1.4","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~1"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"_id":"rimraf@2.1.4","dependencies":{"graceful-fs":"~1"},"dist":{"shasum":"5a6eb62eeda068f51ede50f29b3e5cd22f3d9bb2","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.1.4.tgz"},"_from":".","_npmVersion":"1.2.7","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.2.0":{"name":"rimraf","version":"2.2.0","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~1"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"dependencies":{"graceful-fs":"~1"},"_id":"rimraf@2.2.0","dist":{"shasum":"70797542e81a935849443d7b69bec612ca74c96e","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.2.0.tgz"},"_from":".","_npmVersion":"1.3.0","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.2.1":{"name":"rimraf","version":"2.2.1","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~1"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"dependencies":{"graceful-fs":"~1"},"_id":"rimraf@2.2.1","dist":{"shasum":"8f49c57874ce166b667fbfecac2cdf7f26d3d8a5","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.2.1.tgz"},"_from":".","_npmVersion":"1.3.4","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.2.2":{"name":"rimraf","version":"2.2.2","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~2"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"dependencies":{"graceful-fs":"~2"},"_id":"rimraf@2.2.2","dist":{"shasum":"d99ec41dc646e55bf7a7a44a255c28bef33a8abf","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.2.2.tgz"},"_from":".","_npmVersion":"1.3.4","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.2.3":{"name":"rimraf","version":"2.2.3","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~2"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf","dependencies":{"graceful-fs":"~2"},"_id":"rimraf@2.2.3","dist":{"shasum":"ed60a43d480a1d576d0715aadf36181ffe3186c6","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.2.3.tgz"},"_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.2.4":{"name":"rimraf","version":"2.2.4","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"optionalDependencies":{"graceful-fs":"~2"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf","dependencies":{"graceful-fs":"~2"},"_id":"rimraf@2.2.4","dist":{"shasum":"9f0b530f829f7b655a6e4d2fd8cf4c042336ef58","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.2.4.tgz"},"_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.2.5":{"name":"rimraf","version":"2.2.5","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf","_id":"rimraf@2.2.5","dist":{"shasum":"4e5c4f667b121afa806d0c5b58920996f9478aa0","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.2.5.tgz"},"_from":".","_npmVersion":"1.3.15","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.2.6":{"name":"rimraf","version":"2.2.6","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf","_id":"rimraf@2.2.6","dist":{"shasum":"c59597569b14d956ad29cacc42bdddf5f0ea4f4c","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz"},"_from":".","_npmVersion":"1.3.23","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.2.8":{"name":"rimraf","version":"2.2.8","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf","_id":"rimraf@2.2.8","_shasum":"e439be2aaee327321952730f99a8929e4fc50582","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"e439be2aaee327321952730f99a8929e4fc50582","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"},"directories":{}},"2.3.0":{"name":"rimraf","version":"2.3.0","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"dependencies":{"glob":"^4.4.1"},"files":["bin.js","rimraf.js","LICENSE","README.md"],"gitHead":"e4e9dcbf64d55b8ced01a914e08827715089190a","bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf","_id":"rimraf@2.3.0","_shasum":"a5f0f3c702e39939be3ecbd1f7098f99750b5ed8","_from":".","_npmVersion":"2.6.0","_nodeVersion":"1.4.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"a5f0f3c702e39939be3ecbd1f7098f99750b5ed8","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.3.0.tgz"},"directories":{}},"2.3.1":{"name":"rimraf","version":"2.3.1","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"dependencies":{"glob":"^4.4.2"},"files":["bin.js","rimraf.js","LICENSE","README.md"],"gitHead":"aa707db2fb5b11c35fc614a1472775373dc9d46c","bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf","_id":"rimraf@2.3.1","_shasum":"f83df78c168d5daf9f021e8e092e7a165898ee75","_from":".","_npmVersion":"2.6.0","_nodeVersion":"1.4.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"f83df78c168d5daf9f021e8e092e7a165898ee75","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.3.1.tgz"},"directories":{}},"2.3.2":{"name":"rimraf","version":"2.3.2","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"dependencies":{"glob":"^4.4.2"},"files":["bin.js","rimraf.js","LICENSE","README.md"],"gitHead":"9d5ab4a8b6986ec909af04f6d91315e98f5893e8","bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf","_id":"rimraf@2.3.2","_shasum":"7304bd9275c401b89103b106b3531c1ef0c02fe9","_from":".","_npmVersion":"2.7.0","_nodeVersion":"1.4.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"7304bd9275c401b89103b106b3531c1ef0c02fe9","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.3.2.tgz"},"directories":{}},"2.3.3":{"name":"rimraf","version":"2.3.3","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"dependencies":{"glob":"^4.4.2"},"files":["bin.js","rimraf.js","LICENSE","README.md"],"gitHead":"ad4efe8102a72c77bf2b13165ecc2229a9a68955","bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf","_id":"rimraf@2.3.3","_shasum":"d0073d8b3010611e8f3ad377b08e9a3c18b98f06","_from":".","_npmVersion":"2.7.6","_nodeVersion":"1.7.1","_npmUser":{"name":"isaacs","email":"isaacs@npmjs.com"},"dist":{"shasum":"d0073d8b3010611e8f3ad377b08e9a3c18b98f06","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.3.3.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.3.4":{"name":"rimraf","version":"2.3.4","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":"ISC","repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"dependencies":{"glob":"^4.4.2"},"files":["bin.js","rimraf.js","LICENSE","README.md"],"gitHead":"2a6cc45bbbdd8da5fd703d8af62843565f7dea57","bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf#readme","_id":"rimraf@2.3.4","_shasum":"82d9bc1b2fcf31e205ac7b28138a025d08e9159a","_from":".","_npmVersion":"2.10.0","_nodeVersion":"2.0.1","_npmUser":{"name":"isaacs","email":"isaacs@npmjs.com"},"dist":{"shasum":"82d9bc1b2fcf31e205ac7b28138a025d08e9159a","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.3.4.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.4.0":{"name":"rimraf","version":"2.4.0","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":"ISC","repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"tap test/*.js"},"bin":{"rimraf":"./bin.js"},"dependencies":{"glob":"^4.4.2"},"files":["bin.js","rimraf.js","LICENSE","README.md"],"devDependencies":{"mkdirp":"^0.5.1","tap":"^1.2.0"},"gitHead":"2128f0b9ade05a81394dd21a383fa309dd9eca94","bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf#readme","_id":"rimraf@2.4.0","_shasum":"40ba0416037d8511ecb50f6b07cf8d18e658a864","_from":".","_npmVersion":"2.10.1","_nodeVersion":"2.0.1","_npmUser":{"name":"isaacs","email":"isaacs@npmjs.com"},"dist":{"shasum":"40ba0416037d8511ecb50f6b07cf8d18e658a864","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.4.0.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"2.4.1":{"name":"rimraf","version":"2.4.1","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":"ISC","repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"tap test/*.js"},"bin":{"rimraf":"./bin.js"},"dependencies":{"glob":"^4.4.2"},"files":["bin.js","rimraf.js","LICENSE","README.md"],"devDependencies":{"mkdirp":"^0.5.1","tap":"^1.2.0"},"gitHead":"9b97ac62e1b459d84dbe18f20757bfe4374e65ab","bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf#readme","_id":"rimraf@2.4.1","_shasum":"99ff3cc1d61d687b67489b9f97cfa9d3db3b9e48","_from":".","_npmVersion":"3.0.0","_nodeVersion":"2.2.1","_npmUser":{"name":"isaacs","email":"isaacs@npmjs.com"},"dist":{"shasum":"99ff3cc1d61d687b67489b9f97cfa9d3db3b9e48","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.4.1.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}}},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"time":{"modified":"2015-06-30T18:02:24.393Z","created":"2011-02-08T08:55:37.756Z","1.0.0":"2011-02-08T08:55:39.437Z","1.0.1":"2011-04-13T18:06:00.422Z","1.0.2":"2011-05-30T18:33:02.093Z","1.0.4":"2011-08-07T03:59:00.634Z","1.0.5":"2011-09-03T00:20:05.595Z","1.0.6":"2011-09-03T00:30:43.110Z","1.0.7":"2011-09-25T00:26:39.319Z","1.0.8":"2011-10-07T18:25:44.535Z","1.0.9":"2011-12-03T16:52:51.833Z","2.0.0":"2012-01-30T02:20:45.661Z","2.0.1":"2012-01-30T17:07:51.384Z","2.0.2":"2012-06-08T21:19:19.066Z","2.0.3":"2012-12-15T22:59:57.912Z","2.1.0":"2012-12-20T23:23:50.937Z","2.1.1":"2012-12-21T02:23:38.182Z","2.1.2":"2013-01-22T20:50:45.534Z","2.1.3":"2013-02-06T00:24:04.069Z","2.1.4":"2013-02-06T14:58:43.510Z","2.2.0":"2013-06-21T14:52:14.555Z","2.2.1":"2013-07-14T18:48:37.747Z","2.2.2":"2013-07-22T16:20:26.910Z","2.2.3":"2013-11-29T16:55:07.432Z","2.2.4":"2013-11-29T16:59:28.538Z","2.2.5":"2013-12-09T17:05:49.993Z","2.2.6":"2014-01-15T23:58:31.660Z","2.2.7":"2014-05-05T22:17:46.141Z","2.2.8":"2014-05-06T16:00:05.895Z","2.3.0":"2015-03-03T23:25:07.298Z","2.3.1":"2015-03-05T02:37:34.817Z","2.3.2":"2015-03-10T01:13:34.964Z","2.3.3":"2015-04-30T14:18:05.546Z","2.3.4":"2015-05-19T01:37:39.894Z","2.4.0":"2015-06-07T17:20:09.158Z","2.4.1":"2015-06-30T18:02:24.393Z"},"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"users":{"fgribreau":true,"jswartwood":true,"superjoe":true,"jpoehls":true,"jamesmgreene":true,"forbeslindesay":true,"mvolkmann":true,"pid":true,"oddjobsman":true,"manishrc":true,"esundahl":true,"coderaiser":true,"maxzhang":true,"jimnox":true,"kahboom":true,"tunnckocore":true,"fanchangyong":true,"kxbrand":true,"fill":true,"joreyaesh":true,"uipoet":true,"wengqianshan":true,"bucaran":true,"nfd":true,"phoenix-xsy":true,"yourhoneysky":true,"gdbtek":true,"alxe.master":true,"shanegxxiao":true,"cellule":true,"jimster305":true,"ajduke":true,"phenome":true,"ignatovmsu":true,"pstoev":true,"jamescostian":true,"simplyianm":true,"schnittstabil":true,"itonyyo":true,"akiva":true,"mysticatea":true,"ruffle1986":true,"mikkoh":true,"9joneg":true,"russiansoon":true,"tunderdomb":true,"mkamayd":true,"isyara":true,"michaelnisi":true,"blakecscott":true,"lmhs":true,"mattms":true,"noyobo":true},"readme":"The [UNIX command](http://en.wikipedia.org/wiki/Rm_(Unix)) `rm -rf` for node.  \n\nInstall with `npm install rimraf`, or just drop rimraf.js somewhere.\n\n## API\n\n`rimraf(f, callback)`\n\nThe callback will be called with an error if there is one.  Certain\nerrors are handled for you:\n\n* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of\n  `opts.maxBusyTries` times before giving up, adding 100ms of wait\n  between each attempt.  The default `maxBusyTries` is 3.\n* `ENOENT` - If the file doesn't exist, rimraf will return\n  successfully, since your desired outcome is already the case.\n* `EMFILE` - Since `readdir` requires opening a file descriptor, it's\n  possible to hit `EMFILE` if too many file descriptors are in use.\n  In the sync case, there's nothing to be done for this.  But in the\n  async case, rimraf will gradually back off with timeouts up to\n  `opts.emfileWait` ms, which defaults to 1000.\n\n## rimraf.sync\n\nIt can remove stuff synchronously, too.  But that's not so good.  Use\nthe async API.  It's better.\n\n## CLI\n\nIf installed with `npm install rimraf -g` it can be used as a global\ncommand `rimraf <path>` which is useful for cross platform support.\n\n## mkdirp\n\nIf you need to create a directory recursively, check out\n[mkdirp](https://github.com/substack/node-mkdirp).\n","readmeFilename":"README.md","homepage":"https://github.com/isaacs/rimraf#readme","bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"license":"ISC","_attachments":{},"_etag":"\"57AX2VCNX0K3WIFJ36VILDL32\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/source-map/.cache.json b/atom/.apm/registry.npmjs.org/source-map/.cache.json
new file mode 100644 (file)
index 0000000..cb1c729
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"source-map","_rev":"115-388a3252fd536f09d0d6af487e121e35","name":"source-map","description":"Generates and consumes source maps","dist-tags":{"latest":"0.4.2"},"versions":{"0.0.0":{"name":"source-map","description":"Generates and consumes source maps","version":"0.0.0","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.4.0"},"licenses":[{"type":"MPL","url":"https://www.mozilla.org/MPL/MPL-1.1.html"},{"type":"GPL","url":"http://www.gnu.org/licenses/gpl.html"},{"type":"LGPL","url":"http://www.gnu.org/licenses/lgpl.html"}],"dependencies":{"requirejs":">=0.26.0"},"_npmJsonOpts":{"file":"/Users/fitzgen/.npm/source-map/0.0.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"source-map@0.0.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"44220b0adf1572e603614d853727d3b05078d56c","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.0.0.tgz"},"scripts":{},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"}]},"0.1.0":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.0","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.4.0"},"licenses":[{"type":"MPL","url":"https://www.mozilla.org/MPL/MPL-1.1.html"},{"type":"GPL","url":"http://www.gnu.org/licenses/gpl.html"},{"type":"LGPL","url":"http://www.gnu.org/licenses/lgpl.html"}],"dependencies":{"requirejs":">=0.26.0"},"_npmJsonOpts":{"file":"/Users/fitzgen/.npm/source-map/0.1.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"source-map@0.1.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"229a5427719f1971be234b37cf968538b0600136","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.0.tgz"},"scripts":{},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"}]},"0.1.1":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.1","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.4.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"requirejs":">=0.26.0"},"_npmUser":{"name":"mozilla-devtools","email":"nfitzgerald@mozilla.com"},"_id":"source-map@0.1.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"524b0c511d53c3b1a76a211c084361bde15da726","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.1.tgz"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.2":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.2","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.4.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"requirejs":"==0.26.0"},"_npmUser":{"name":"mozilla-devtools","email":"nfitzgerald@mozilla.com"},"_id":"source-map@0.1.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.5","_defaultsLoaded":true,"dist":{"shasum":"7132efc1fa95273bc71bff8f8202d7b4eed57993","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.2.tgz"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.3":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.3","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.4.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"requirejs":"==0.26.0"},"devDependencies":{"dryice":"~0.4.8"},"_npmUser":{"name":"mozilla-devtools","email":"nfitzgerald@mozilla.com"},"_id":"source-map@0.1.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.5","_defaultsLoaded":true,"dist":{"shasum":"ed3165c4d0f0a6291e53e485cb95b5f1a0a25183","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.3.tgz"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.4":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.4","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_npmUser":{"name":"mozilla-devtools","email":"nfitzgerald@mozilla.com"},"_id":"source-map@0.1.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.5","_defaultsLoaded":true,"dist":{"shasum":"cd67f54e9c4fdc713c00a869241c419e9fedace0","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.4.tgz"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.5":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.5","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_npmUser":{"name":"mozilla-devtools","email":"nfitzgerald@mozilla.com"},"_id":"source-map@0.1.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.5","_defaultsLoaded":true,"dist":{"shasum":"63aaaee4c9dc9bea95ba9469a80775576927bf08","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.5.tgz"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.6":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.6","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_npmUser":{"name":"mozilla-devtools","email":"nfitzgerald@mozilla.com"},"_id":"source-map@0.1.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.5","_defaultsLoaded":true,"dist":{"shasum":"0035ddb2d9a191df8c8b13a0362eb618d881ea34","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.6.tgz"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.7":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.7","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_npmUser":{"name":"mozilla-devtools","email":"nfitzgerald@mozilla.com"},"_id":"source-map@0.1.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.5","_defaultsLoaded":true,"dist":{"shasum":"92da34014a5576d60676150bcf0f55cbd1f395c0","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.7.tgz"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.8":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.8","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_npmUser":{"name":"mozilla-devtools","email":"nfitzgerald@mozilla.com"},"_id":"source-map@0.1.8","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.8.5","_defaultsLoaded":true,"dist":{"shasum":"0bcc088a50ed8c586f50c8da4833a27dc0cc0c30","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.8.tgz"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.9":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.9","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_id":"source-map@0.1.9","dist":{"shasum":"250224e4e9ef7e91f4cad76cae714b90f6218599","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.9.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.10":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.10","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_id":"source-map@0.1.10","dist":{"shasum":"0bdafd2e1e97d147a862b7c7d1b26387ecc93aa9","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.10.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.11":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.11","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_id":"source-map@0.1.11","dist":{"shasum":"2eef2fd65a74c179880ae5ee6975d99ce21eb7b4","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.11.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.12":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.12","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_id":"source-map@0.1.12","dist":{"shasum":"55d5a5c58d98ffadacc4a8a7fbd7c9d4e459abd2","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.12.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.13":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.13","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_id":"source-map@0.1.13","dist":{"shasum":"cc3d10be14dcafbd8f8259546438f19b72995a1c","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.13.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.14":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.14","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_id":"source-map@0.1.14","dist":{"shasum":"81fb3b85f54abb1ad6a8e3f92e55b8fcd3eb836d","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.14.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.15":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.15","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_id":"source-map@0.1.15","dist":{"shasum":"4eed4690db25839af3505ea4d018b6f5523f0807","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.15.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.16":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.16","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_id":"source-map@0.1.16","dist":{"shasum":"4a1b371e9abd69a45fa698a1d281e2b213333dca","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.16.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.17":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.17","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_id":"source-map@0.1.17","dist":{"shasum":"1b34e5b30616d48137d604b996cf5585dc78e204","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.17.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.18":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.18","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"_id":"source-map@0.1.18","dist":{"shasum":"6645e412fe48f748ba3a4ae56ed53f38a550f17e","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.18.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.19":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.19","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js"},"_id":"source-map@0.1.19","dist":{"shasum":"61ce72499b6caaaa15484bd4b5dc718b0aebf76a","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.19.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.20":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.20","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js"},"_id":"source-map@0.1.20","dist":{"shasum":"e41ce3288cac4c4f6eca181b53ae12558e7ad02a","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.20.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.21":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.21","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js"},"_id":"source-map@0.1.21","dist":{"shasum":"ecd4efc4c3579de66b95913dda08c72ea0256469","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.21.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.22":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.22","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"github.com/usrbincc"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js"},"_id":"source-map@0.1.22","dist":{"shasum":"425906162f81bf110552ccc9931dba079e9f1341","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.22.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.23":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.23","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"github.com/usrbincc"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js"},"_id":"source-map@0.1.23","dist":{"shasum":"079f8fa7867f318b48cf5d4c716ab6d4dc859be9","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.23.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.24":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.24","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Stephen Crane"},{"name":"Ryan Seddon"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"github.com/usrbincc"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js"},"_id":"source-map@0.1.24","dist":{"shasum":"5b533dd08948de2d8c3b002a9c31842cb1b35103","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.24.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.25":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.25","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js"},"_id":"source-map@0.1.25","dist":{"shasum":"5851545c1f4a40243829065c20e6f40b023fba1a","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.25.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.26":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.26","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js"},"_id":"source-map@0.1.26","dist":{"shasum":"4cce2dcb5fa02cfe1b4cf32cc83962b1b3997560","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.26.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.27":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.27","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js"},"_id":"source-map@0.1.27","dist":{"shasum":"f114e06a8b5c05cbc51aa1fa600e728162455eda","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.27.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.28":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.28","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js"},"_id":"source-map@0.1.28","dist":{"shasum":"9cae9d9b8352fb030f77c4e12226cc28cb251f39","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.28.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.29":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.29","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js"},"_id":"source-map@0.1.29","dist":{"shasum":"39d571a0988fb7a548a676c4de72db78914d173c","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.29.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.30":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.30","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"_id":"source-map@0.1.30","dist":{"shasum":"182726b50671d8fccaefc5ec35bf2a65c1956afb","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.30.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.31":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.31","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"_id":"source-map@0.1.31","dist":{"shasum":"9f704d0d69d9e138a81badf6ebb4fde33d151c61","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.32":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.32","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"_id":"source-map@0.1.32","dist":{"shasum":"c8b6c167797ba4740a8ea33252162ff08591b266","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.33":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.33","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"_id":"source-map@0.1.33","dist":{"shasum":"c659297a73af18c073b0aa2e7cc91e316b5c570c","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.33.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}]},"0.1.34":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.34","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.1.34","_shasum":"a7cfe89aec7b1682c3b198d0acfb47d7d090566b","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"a7cfe89aec7b1682c3b198d0acfb47d7d090566b","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz"}},"0.1.35":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.35","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.1.35","_shasum":"06a1b58b57ac8176476b74f3c1ece4925cea2e8c","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"06a1b58b57ac8176476b74f3c1ece4925cea2e8c","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.35.tgz"}},"0.1.36":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.36","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.1.36","_shasum":"7af95322decf58cc78a18d5a0d4ade258ae31c35","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"7af95322decf58cc78a18d5a0d4ade258ae31c35","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.36.tgz"}},"0.1.37":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.37","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.1.37","_shasum":"511fa6ed1685cb37e70ae1de2966405096054832","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"511fa6ed1685cb37e70ae1de2966405096054832","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.37.tgz"}},"0.1.38":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.38","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.1.38","_shasum":"f93a6f9d96a5b9cf5494c043497d9542f9fa6b33","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"f93a6f9d96a5b9cf5494c043497d9542f9fa6b33","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.38.tgz"}},"0.1.39":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.39","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.1.39","_shasum":"64ad329c4761ab956ff7d011c6b205aeb66a2d4a","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"64ad329c4761ab956ff7d011c6b205aeb66a2d4a","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.39.tgz"}},"0.1.40":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.40","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.1.40","_shasum":"7e0ee49ec0452aa9ac2b93ad5ae54ef33e82b37f","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"7e0ee49ec0452aa9ac2b93ad5ae54ef33e82b37f","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.40.tgz"}},"0.1.41":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.41","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"},{"name":"J. Ryan Stinnett","email":"jryans@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.1.41","_shasum":"d6cc9c8a9bb5d995dc69b38457bd4b1747327f5a","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"d6cc9c8a9bb5d995dc69b38457bd4b1747327f5a","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.41.tgz"}},"0.1.42":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.42","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"},{"name":"J. Ryan Stinnett","email":"jryans@gmail.com"},{"name":"Jack Herrington","email":"jherrington@walmartlabs.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.1.42","_shasum":"37c2958c79fee8d919173e5a7ccbd933b2ff835e","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"37c2958c79fee8d919173e5a7ccbd933b2ff835e","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.42.tgz"}},"0.1.43":{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.43","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"},{"name":"J. Ryan Stinnett","email":"jryans@gmail.com"},{"name":"Jack Herrington","email":"jherrington@walmartlabs.com"},{"name":"Chris Truter","email":"jeffpalentine@gmail.com"},{"name":"Daniel Espeset","email":"daniel@danielespeset.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.1.43","_shasum":"c24bc146ca517c1471f5dacbe2571b2b7f9e3346","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"c24bc146ca517c1471f5dacbe2571b2b7f9e3346","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz"}},"0.2.0":{"name":"source-map","description":"Generates and consumes source maps","version":"0.2.0","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"},{"name":"J. Ryan Stinnett","email":"jryans@gmail.com"},{"name":"Jack Herrington","email":"jherrington@walmartlabs.com"},{"name":"Chris Truter","email":"jeffpalentine@gmail.com"},{"name":"Daniel Espeset","email":"daniel@danielespeset.com"},{"name":"Jamie Wong","email":"jamie.lf.wong@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.2.0","_shasum":"dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz"}},"0.3.0":{"name":"source-map","description":"Generates and consumes source maps","version":"0.3.0","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"},{"name":"J. Ryan Stinnett","email":"jryans@gmail.com"},{"name":"Jack Herrington","email":"jherrington@walmartlabs.com"},{"name":"Chris Truter","email":"jeffpalentine@gmail.com"},{"name":"Daniel Espeset","email":"daniel@danielespeset.com"},{"name":"Jamie Wong","email":"jamie.lf.wong@gmail.com"},{"name":"Eddy Bruël","email":"ejpbruel@mozilla.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.3.0","_shasum":"8586fb9a5a005e5b501e21cd18b6f21b457ad1f9","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"8586fb9a5a005e5b501e21cd18b6f21b457ad1f9","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz"}},"0.4.0":{"name":"source-map","description":"Generates and consumes source maps","version":"0.4.0","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"},{"name":"J. Ryan Stinnett","email":"jryans@gmail.com"},{"name":"Jack Herrington","email":"jherrington@walmartlabs.com"},{"name":"Chris Truter","email":"jeffpalentine@gmail.com"},{"name":"Daniel Espeset","email":"daniel@danielespeset.com"},{"name":"Jamie Wong","email":"jamie.lf.wong@gmail.com"},{"name":"Eddy Bruël","email":"ejpbruel@mozilla.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.4.0","_shasum":"c6ddd824fca4ccad4329f8f37903c1bc902c2bb2","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"c6ddd824fca4ccad4329f8f37903c1bc902c2bb2","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.4.0.tgz"}},"0.4.1":{"name":"source-map","description":"Generates and consumes source maps","version":"0.4.1","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"},{"name":"J. Ryan Stinnett","email":"jryans@gmail.com"},{"name":"Jack Herrington","email":"jherrington@walmartlabs.com"},{"name":"Chris Truter","email":"jeffpalentine@gmail.com"},{"name":"Daniel Espeset","email":"daniel@danielespeset.com"},{"name":"Jamie Wong","email":"jamie.lf.wong@gmail.com"},{"name":"Eddy Bruël","email":"ejpbruel@mozilla.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.4.1","_shasum":"db90f97e821c6cf5ba5efa76f33c1bb1c88dd32e","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"db90f97e821c6cf5ba5efa76f33c1bb1c88dd32e","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.4.1.tgz"}},"0.4.2":{"name":"source-map","description":"Generates and consumes source maps","version":"0.4.2","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"},{"name":"J. Ryan Stinnett","email":"jryans@gmail.com"},{"name":"Jack Herrington","email":"jherrington@walmartlabs.com"},{"name":"Chris Truter","email":"jeffpalentine@gmail.com"},{"name":"Daniel Espeset","email":"daniel@danielespeset.com"},{"name":"Jamie Wong","email":"jamie.lf.wong@gmail.com"},{"name":"Eddy Bruël","email":"ejpbruel@mozilla.com"},{"name":"Hawken Rives","email":"hawkrives@gmail.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.4.2","_shasum":"dc9f3114394ab7c1f9782972f3d11820fff06f1f","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"dc9f3114394ab7c1f9782972f3d11820fff06f1f","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.4.2.tgz"}}},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"time":{"modified":"2015-03-12T17:19:35.745Z","created":"2011-08-30T19:45:39.150Z","0.0.0":"2011-08-30T19:45:40.104Z","0.1.0":"2011-09-08T23:37:50.688Z","0.1.1":"2012-06-19T22:27:12.055Z","0.1.2":"2012-09-05T16:30:51.322Z","0.1.3":"2012-10-12T18:43:39.522Z","0.1.4":"2012-10-29T20:16:21.630Z","0.1.5":"2012-10-31T01:28:00.060Z","0.1.6":"2012-11-02T18:52:59.069Z","0.1.7":"2012-11-02T19:09:11.172Z","0.1.8":"2012-11-19T22:48:36.067Z","0.1.9":"2013-03-01T01:02:37.514Z","0.1.10":"2013-03-19T18:27:06.685Z","0.1.11":"2013-03-20T16:56:07.393Z","0.1.12":"2013-03-20T18:37:52.714Z","0.1.13":"2013-03-20T20:58:36.999Z","0.1.14":"2013-03-21T02:44:33.993Z","0.1.15":"2013-03-22T21:39:07.305Z","0.1.16":"2013-03-22T22:35:12.720Z","0.1.17":"2013-03-25T20:22:39.938Z","0.1.18":"2013-03-25T20:43:15.224Z","0.1.19":"2013-03-25T21:43:18.536Z","0.1.20":"2013-04-02T01:23:25.121Z","0.1.21":"2013-04-02T04:34:47.865Z","0.1.22":"2013-04-04T18:45:04.574Z","0.1.23":"2013-06-14T00:24:06.756Z","0.1.24":"2013-06-24T21:29:09.782Z","0.1.25":"2013-06-27T19:05:03.794Z","0.1.26":"2013-07-15T18:51:40.129Z","0.1.27":"2013-07-22T20:37:22.337Z","0.1.28":"2013-08-16T21:12:52.163Z","0.1.29":"2013-08-22T00:29:20.519Z","0.1.30":"2013-09-30T23:09:43.379Z","0.1.31":"2013-11-01T18:40:25.890Z","0.1.32":"2014-02-11T23:10:33.088Z","0.1.33":"2014-02-27T02:27:53.235Z","0.1.34":"2014-06-09T23:24:45.292Z","0.1.35":"2014-07-08T17:01:07.625Z","0.1.36":"2014-07-09T18:17:31.168Z","0.1.37":"2014-07-11T18:05:50.696Z","0.1.38":"2014-08-03T16:54:48.055Z","0.1.39":"2014-09-09T21:00:18.550Z","0.1.40":"2014-10-02T15:33:22.147Z","0.1.41":"2014-12-17T19:24:20.497Z","0.1.42":"2014-12-31T20:44:32.510Z","0.1.43":"2015-01-08T18:25:06.813Z","0.2.0":"2015-01-26T23:09:58.598Z","0.3.0":"2015-02-10T18:28:31.894Z","0.4.0":"2015-02-25T19:04:22.094Z","0.4.1":"2015-03-02T19:05:04.884Z","0.4.2":"2015-03-12T17:19:35.745Z"},"author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"readme":"# Source Map\n\nThis is a library to generate and consume the source map format\n[described here][format].\n\nThis library is written in the Asynchronous Module Definition format, and works\nin the following environments:\n\n* Modern Browsers supporting ECMAScript 5 (either after the build, or with an\n  AMD loader such as RequireJS)\n\n* Inside Firefox (as a JSM file, after the build)\n\n* With NodeJS versions 0.8.X and higher\n\n## Node\n\n    $ npm install source-map\n\n## Building from Source (for everywhere else)\n\nInstall Node and then run\n\n    $ git clone https://fitzgen@github.com/mozilla/source-map.git\n    $ cd source-map\n    $ npm link .\n\nNext, run\n\n    $ node Makefile.dryice.js\n\nThis should spew a bunch of stuff to stdout, and create the following files:\n\n* `dist/source-map.js` - The unminified browser version.\n\n* `dist/source-map.min.js` - The minified browser version.\n\n* `dist/SourceMap.jsm` - The JavaScript Module for inclusion in Firefox source.\n\n## Examples\n\n### Consuming a source map\n\n```js\nvar rawSourceMap = {\n  version: 3,\n  file: 'min.js',\n  names: ['bar', 'baz', 'n'],\n  sources: ['one.js', 'two.js'],\n  sourceRoot: 'http://example.com/www/js/',\n  mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'\n};\n\nvar smc = new SourceMapConsumer(rawSourceMap);\n\nconsole.log(smc.sources);\n// [ 'http://example.com/www/js/one.js',\n//   'http://example.com/www/js/two.js' ]\n\nconsole.log(smc.originalPositionFor({\n  line: 2,\n  column: 28\n}));\n// { source: 'http://example.com/www/js/two.js',\n//   line: 2,\n//   column: 10,\n//   name: 'n' }\n\nconsole.log(smc.generatedPositionFor({\n  source: 'http://example.com/www/js/two.js',\n  line: 2,\n  column: 10\n}));\n// { line: 2, column: 28 }\n\nsmc.eachMapping(function (m) {\n  // ...\n});\n```\n\n### Generating a source map\n\nIn depth guide:\n[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/)\n\n#### With SourceNode (high level API)\n\n```js\nfunction compile(ast) {\n  switch (ast.type) {\n  case 'BinaryExpression':\n    return new SourceNode(\n      ast.location.line,\n      ast.location.column,\n      ast.location.source,\n      [compile(ast.left), \" + \", compile(ast.right)]\n    );\n  case 'Literal':\n    return new SourceNode(\n      ast.location.line,\n      ast.location.column,\n      ast.location.source,\n      String(ast.value)\n    );\n  // ...\n  default:\n    throw new Error(\"Bad AST\");\n  }\n}\n\nvar ast = parse(\"40 + 2\", \"add.js\");\nconsole.log(compile(ast).toStringWithSourceMap({\n  file: 'add.js'\n}));\n// { code: '40 + 2',\n//   map: [object SourceMapGenerator] }\n```\n\n#### With SourceMapGenerator (low level API)\n\n```js\nvar map = new SourceMapGenerator({\n  file: \"source-mapped.js\"\n});\n\nmap.addMapping({\n  generated: {\n    line: 10,\n    column: 35\n  },\n  source: \"foo.js\",\n  original: {\n    line: 33,\n    column: 2\n  },\n  name: \"christopher\"\n});\n\nconsole.log(map.toString());\n// '{\"version\":3,\"file\":\"source-mapped.js\",\"sources\":[\"foo.js\"],\"names\":[\"christopher\"],\"mappings\":\";;;;;;;;;mCAgCEA\"}'\n```\n\n## API\n\nGet a reference to the module:\n\n```js\n// NodeJS\nvar sourceMap = require('source-map');\n\n// Browser builds\nvar sourceMap = window.sourceMap;\n\n// Inside Firefox\nlet sourceMap = {};\nComponents.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap);\n```\n\n### SourceMapConsumer\n\nA SourceMapConsumer instance represents a parsed source map which we can query\nfor information about the original file positions by giving it a file position\nin the generated source.\n\n#### new SourceMapConsumer(rawSourceMap)\n\nThe only parameter is the raw source map (either as a string which can be\n`JSON.parse`'d, or an object). According to the spec, source maps have the\nfollowing attributes:\n\n* `version`: Which version of the source map spec this map is following.\n\n* `sources`: An array of URLs to the original source files.\n\n* `names`: An array of identifiers which can be referrenced by individual\n  mappings.\n\n* `sourceRoot`: Optional. The URL root from which all sources are relative.\n\n* `sourcesContent`: Optional. An array of contents of the original source files.\n\n* `mappings`: A string of base64 VLQs which contain the actual mappings.\n\n* `file`: Optional. The generated filename this source map is associated with.\n\n#### SourceMapConsumer.prototype.computeColumnSpans()\n\nCompute the last column for each generated mapping. The last column is\ninclusive.\n\n#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition)\n\nReturns the original source, line, and column information for the generated\nsource's line and column positions provided. The only argument is an object with\nthe following properties:\n\n* `line`: The line number in the generated source.\n\n* `column`: The column number in the generated source.\n\n* `bias`: Either `SourceMapConsumer.GREATEST_LOWER_BOUND` or\n  `SourceMapConsumer.LEAST_UPPER_BOUND`. Specifies whether to return the closest\n  element that is smaller than or greater than the one we are searching for,\n  respectively, if the exact element cannot be found.  Defaults to\n  `SourceMapConsumer.GREATEST_LOWER_BOUND`.\n\nand an object is returned with the following properties:\n\n* `source`: The original source file, or null if this information is not\n  available.\n\n* `line`: The line number in the original source, or null if this information is\n  not available.\n\n* `column`: The column number in the original source, or null or null if this\n  information is not available.\n\n* `name`: The original identifier, or null if this information is not available.\n\n#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition)\n\nReturns the generated line and column information for the original source,\nline, and column positions provided. The only argument is an object with\nthe following properties:\n\n* `source`: The filename of the original source.\n\n* `line`: The line number in the original source.\n\n* `column`: The column number in the original source.\n\nand an object is returned with the following properties:\n\n* `line`: The line number in the generated source, or null.\n\n* `column`: The column number in the generated source, or null.\n\n#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)\n\nReturns all generated line and column information for the original source,\nline, and column provided. If no column is provided, returns all mappings\ncorresponding to a single line. Otherwise, returns all mappings corresponding to\na single line and column.\n\nThe only argument is an object with the following properties:\n\n* `source`: The filename of the original source.\n\n* `line`: The line number in the original source.\n\n* `column`: Optional. The column number in the original source.\n\nand an array of objects is returned, each with the following properties:\n\n* `line`: The line number in the generated source, or null.\n\n* `column`: The column number in the generated source, or null.\n\n#### SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])\n\nReturns the original source content for the source provided. The only\nargument is the URL of the original source file.\n\nIf the source content for the given source is not found, then an error is\nthrown. Optionally, pass `true` as the second param to have `null` returned\ninstead.\n\n#### SourceMapConsumer.prototype.eachMapping(callback, context, order)\n\nIterate over each mapping between an original source/line/column and a\ngenerated line/column in this source map.\n\n* `callback`: The function that is called with each mapping. Mappings have the\n  form `{ source, generatedLine, generatedColumn, originalLine, originalColumn,\n  name }`\n\n* `context`: Optional. If specified, this object will be the value of `this`\n  every time that `callback` is called.\n\n* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or\n  `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over\n  the mappings sorted by the generated file's line/column order or the\n  original's source/line/column order, respectively. Defaults to\n  `SourceMapConsumer.GENERATED_ORDER`.\n\n### SourceMapGenerator\n\nAn instance of the SourceMapGenerator represents a source map which is being\nbuilt incrementally.\n\n#### new SourceMapGenerator([startOfSourceMap])\n\nYou may pass an object with the following properties:\n\n* `file`: The filename of the generated source that this source map is\n  associated with.\n\n* `sourceRoot`: A root for all relative URLs in this source map.\n\n* `skipValidation`: Optional. When `true`, disables validation of mappings as\n  they are added. This can improve performance but should be used with\n  discretion, as a last resort. Even then, one should avoid using this flag when\n  running tests, if possible.\n\n#### SourceMapGenerator.fromSourceMap(sourceMapConsumer)\n\nCreates a new SourceMapGenerator based on a SourceMapConsumer\n\n* `sourceMapConsumer` The SourceMap.\n\n#### SourceMapGenerator.prototype.addMapping(mapping)\n\nAdd a single mapping from original source line and column to the generated\nsource's line and column for this source map being created. The mapping object\nshould have the following properties:\n\n* `generated`: An object with the generated line and column positions.\n\n* `original`: An object with the original line and column positions.\n\n* `source`: The original source file (relative to the sourceRoot).\n\n* `name`: An optional original token name for this mapping.\n\n#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)\n\nSet the source content for an original source file.\n\n* `sourceFile` the URL of the original source file.\n\n* `sourceContent` the content of the source file.\n\n#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])\n\nApplies a SourceMap for a source file to the SourceMap.\nEach mapping to the supplied source file is rewritten using the\nsupplied SourceMap. Note: The resolution for the resulting mappings\nis the minimium of this map and the supplied map.\n\n* `sourceMapConsumer`: The SourceMap to be applied.\n\n* `sourceFile`: Optional. The filename of the source file.\n  If omitted, sourceMapConsumer.file will be used, if it exists.\n  Otherwise an error will be thrown.\n\n* `sourceMapPath`: Optional. The dirname of the path to the SourceMap\n  to be applied. If relative, it is relative to the SourceMap.\n\n  This parameter is needed when the two SourceMaps aren't in the same\n  directory, and the SourceMap to be applied contains relative source\n  paths. If so, those relative source paths need to be rewritten\n  relative to the SourceMap.\n\n  If omitted, it is assumed that both SourceMaps are in the same directory,\n  thus not needing any rewriting. (Supplying `'.'` has the same effect.)\n\n#### SourceMapGenerator.prototype.toString()\n\nRenders the source map being generated to a string.\n\n### SourceNode\n\nSourceNodes provide a way to abstract over interpolating and/or concatenating\nsnippets of generated JavaScript source code, while maintaining the line and\ncolumn information associated between those snippets and the original source\ncode. This is useful as the final intermediate representation a compiler might\nuse before outputting the generated JS and source map.\n\n#### new SourceNode([line, column, source[, chunk[, name]]])\n\n* `line`: The original line number associated with this source node, or null if\n  it isn't associated with an original line.\n\n* `column`: The original column number associated with this source node, or null\n  if it isn't associated with an original column.\n\n* `source`: The original source's filename; null if no filename is provided.\n\n* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see\n  below.\n\n* `name`: Optional. The original identifier.\n\n#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])\n\nCreates a SourceNode from generated code and a SourceMapConsumer.\n\n* `code`: The generated code\n\n* `sourceMapConsumer` The SourceMap for the generated code\n\n* `relativePath` The optional path that relative sources in `sourceMapConsumer`\n  should be relative to.\n\n#### SourceNode.prototype.add(chunk)\n\nAdd a chunk of generated JS to this source node.\n\n* `chunk`: A string snippet of generated JS code, another instance of\n   `SourceNode`, or an array where each member is one of those things.\n\n#### SourceNode.prototype.prepend(chunk)\n\nPrepend a chunk of generated JS to this source node.\n\n* `chunk`: A string snippet of generated JS code, another instance of\n   `SourceNode`, or an array where each member is one of those things.\n\n#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent)\n\nSet the source content for a source file. This will be added to the\n`SourceMap` in the `sourcesContent` field.\n\n* `sourceFile`: The filename of the source file\n\n* `sourceContent`: The content of the source file\n\n#### SourceNode.prototype.walk(fn)\n\nWalk over the tree of JS snippets in this node and its children. The walking\nfunction is called once for each snippet of JS and is passed that snippet and\nthe its original associated source's line/column location.\n\n* `fn`: The traversal function.\n\n#### SourceNode.prototype.walkSourceContents(fn)\n\nWalk over the tree of SourceNodes. The walking function is called for each\nsource file content and is passed the filename and source content.\n\n* `fn`: The traversal function.\n\n#### SourceNode.prototype.join(sep)\n\nLike `Array.prototype.join` except for SourceNodes. Inserts the separator\nbetween each of this source node's children.\n\n* `sep`: The separator.\n\n#### SourceNode.prototype.replaceRight(pattern, replacement)\n\nCall `String.prototype.replace` on the very right-most source snippet. Useful\nfor trimming whitespace from the end of a source node, etc.\n\n* `pattern`: The pattern to replace.\n\n* `replacement`: The thing to replace the pattern with.\n\n#### SourceNode.prototype.toString()\n\nReturn the string representation of this source node. Walks over the tree and\nconcatenates all the various snippets together to one string.\n\n#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])\n\nReturns the string representation of this tree of source nodes, plus a\nSourceMapGenerator which contains all the mappings between the generated and\noriginal sources.\n\nThe arguments are the same as those to `new SourceMapGenerator`.\n\n## Tests\n\n[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map)\n\nInstall NodeJS version 0.8.0 or greater, then run `node test/run-tests.js`.\n\nTo add new tests, create a new file named `test/test-<your new test name>.js`\nand export your test functions with names that start with \"test\", for example\n\n```js\nexports[\"test doing the foo bar\"] = function (assert, util) {\n  ...\n};\n```\n\nThe new test will be located automatically when you run the suite.\n\nThe `util` argument is the test utility module located at `test/source-map/util`.\n\nThe `assert` argument is a cut down version of node's assert module. You have\naccess to the following assertion functions:\n\n* `doesNotThrow`\n\n* `equal`\n\n* `ok`\n\n* `strictEqual`\n\n* `throws`\n\n(The reason for the restricted set of test functions is because we need the\ntests to run inside Firefox's test suite as well and so the assert module is\nshimmed in that environment. See `build/assert-shim.js`.)\n\n[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit\n[feature]: https://wiki.mozilla.org/DevTools/Features/SourceMap\n[Dryice]: https://github.com/mozilla/dryice\n","readmeFilename":"README.md","homepage":"https://github.com/mozilla/source-map","contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"},{"name":"J. Ryan Stinnett","email":"jryans@gmail.com"},{"name":"Jack Herrington","email":"jherrington@walmartlabs.com"},{"name":"Chris Truter","email":"jeffpalentine@gmail.com"},{"name":"Daniel Espeset","email":"daniel@danielespeset.com"},{"name":"Jamie Wong","email":"jamie.lf.wong@gmail.com"},{"name":"Eddy Bruël","email":"ejpbruel@mozilla.com"},{"name":"Hawken Rives","email":"hawkrives@gmail.com"}],"users":{"anticom":true,"rmcgu":true,"lupideo":true},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_attachments":{},"_etag":"\"BGLUL5IDZT0PJ3FIRURDG4DEE\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/space-pen/.cache.json b/atom/.apm/registry.npmjs.org/space-pen/.cache.json
new file mode 100644 (file)
index 0000000..23e7f04
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"space-pen","_rev":"118-52a3505be68e236ce70789f647b7badc","name":"space-pen","description":"Write markup on the final frontier","dist-tags":{"latest":"5.1.1"},"versions":{"1.0.0":{"name":"space-pen","version":"1.0.0","description":"Write markup on the final frontier","main":"./space-pen","licenses":[{"type":"MIT","url":"http://github.com/nathansobo/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/nathansobo/space-pen.git"},"bugs":{"url":"https://github.com/nathansobo/space-pen/issues"},"_id":"space-pen@1.0.0","dist":{"shasum":"bd951d325b52ec6958bb4e45b02ba31b743e06fc","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-1.0.0.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.1.0":{"name":"space-pen","version":"1.1.0","description":"Write markup on the final frontier","main":"./space-pen","licenses":[{"type":"MIT","url":"http://github.com/nathansobo/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/nathansobo/space-pen.git"},"bugs":{"url":"https://github.com/nathansobo/space-pen/issues"},"_id":"space-pen@1.1.0","dist":{"shasum":"2c2e9df32f1dad2e3e7cb7560da04d1e5165b4bd","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-1.1.0.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.1.1":{"name":"space-pen","version":"1.1.1","description":"Write markup on the final frontier","main":"./space-pen","licenses":[{"type":"MIT","url":"http://github.com/nathansobo/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/nathansobo/space-pen.git"},"bugs":{"url":"https://github.com/nathansobo/space-pen/issues"},"_id":"space-pen@1.1.1","dist":{"shasum":"f5be93d5848e3d221009404d3533e21a9e807fad","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-1.1.1.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.2.0":{"name":"space-pen","version":"1.2.0","description":"Write markup on the final frontier","main":"./space-pen","licenses":[{"type":"MIT","url":"http://github.com/nathansobo/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/nathansobo/space-pen.git"},"bugs":{"url":"https://github.com/nathansobo/space-pen/issues"},"_id":"space-pen@1.2.0","dist":{"shasum":"224d3b9fc520a225f57332395633769397d559cd","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-1.2.0.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.2.1":{"name":"space-pen","version":"1.2.1","description":"Write markup on the final frontier","main":"./space-pen","licenses":[{"type":"MIT","url":"http://github.com/nathansobo/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/nathansobo/space-pen.git"},"bugs":{"url":"https://github.com/nathansobo/space-pen/issues"},"_id":"space-pen@1.2.1","dist":{"shasum":"62dd1ca72ad0f0bb12ba5aeeb612a5d4f718d62f","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-1.2.1.tgz"},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"1.3.0":{"name":"space-pen","version":"1.3.0","description":"Write markup on the final frontier","main":"./space-pen.js","scripts":{"prepublish":"grunt clean lint coffee"},"licenses":[{"type":"MIT","url":"http://github.com/nathansobo/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/nathansobo/space-pen.git"},"bugs":{"url":"https://github.com/nathansobo/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","rimraf":"~2.1.4"},"_id":"space-pen@1.3.0","dist":{"shasum":"7d8c01d64d9b423687de058ed992563fdeae80d2","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-1.3.0.tgz"},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"2.0.0":{"name":"space-pen","version":"2.0.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"node_modules/.bin/grunt clean lint coffee","test":"node_modules/.bin/grunt test","start":"node_modules/.bin/grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"~0.2.0"},"_id":"space-pen@2.0.0","dist":{"shasum":"7368fe68561619d801ff62fead09bbdf52af8df4","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-2.0.0.tgz"},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"2.0.1":{"name":"space-pen","version":"2.0.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"node_modules/.bin/grunt clean lint coffee","test":"node_modules/.bin/grunt test","start":"node_modules/.bin/grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"~0.2.0"},"_id":"space-pen@2.0.1","dist":{"shasum":"7643c1abdfcf2c43b9d5df04fd77fcd0a011f535","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-2.0.1.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"2.0.2":{"name":"space-pen","version":"2.0.2","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"node_modules/.bin/grunt clean lint coffee","test":"node_modules/.bin/grunt test","start":"node_modules/.bin/grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"~0.2.0"},"_id":"space-pen@2.0.2","dist":{"shasum":"5699c77f18a99b55fab0abde5959c5867fd196f0","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-2.0.2.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.0.0":{"name":"space-pen","version":"3.0.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"node_modules/.bin/grunt clean lint coffee","test":"node_modules/.bin/grunt test","start":"node_modules/.bin/grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"~0.6.1"},"_id":"space-pen@3.0.0","dist":{"shasum":"1c675075623396d822f375a39d1e4c4ba7c6cd94","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.0.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.0.1":{"name":"space-pen","version":"3.0.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"node_modules/.bin/grunt clean lint coffee","test":"node_modules/.bin/grunt test","start":"node_modules/.bin/grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"~0.6.1"},"_id":"space-pen@3.0.1","dist":{"shasum":"7b07e5c5928e975eb92fbf2306d35f22a875d4ea","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.0.1.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.0.2":{"name":"space-pen","version":"3.0.2","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"node_modules/.bin/grunt clean lint coffee","test":"node_modules/.bin/grunt test","start":"node_modules/.bin/grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"~0.6.1"},"_id":"space-pen@3.0.2","dist":{"shasum":"3556ead51c25e1347b8974ad2b44058d18ba2d99","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.0.2.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.0.3":{"name":"space-pen","version":"3.0.3","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"node_modules/.bin/grunt clean lint coffee","test":"node_modules/.bin/grunt test","start":"node_modules/.bin/grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"~0.6.1"},"_id":"space-pen@3.0.3","dist":{"shasum":"274b086dee9787cc45fbffd8806b3c0e24929990","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.0.3.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.1.0":{"name":"space-pen","version":"3.1.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"node_modules/.bin/grunt clean lint coffee","test":"node_modules/.bin/grunt test","start":"node_modules/.bin/grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"~0.6.1"},"homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.1.0","dist":{"shasum":"e86504e6ccb6d603e7e58187876e6426338d0d12","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.1.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.1.1":{"name":"space-pen","version":"3.1.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"node_modules/.bin/grunt clean lint coffee","test":"node_modules/.bin/grunt test","start":"node_modules/.bin/grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"1.x"},"_id":"space-pen@3.1.1","dist":{"shasum":"54a2a11d993c5628198abf09b827322aa64a27d2","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.1.1.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.1.2":{"name":"space-pen","version":"3.1.2","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"node_modules/.bin/grunt clean lint coffee","test":"node_modules/.bin/grunt test","start":"node_modules/.bin/grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"1.x"},"_id":"space-pen@3.1.2","dist":{"shasum":"bc738b36d47c25c97549dbd92f8532bb34c538ab","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.1.2.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.2.0":{"name":"space-pen","version":"3.2.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"1.x"},"homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.2.0","dist":{"shasum":"fee9a121cf28aa0a14e59b31e7fd9205ee5d6d17","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.2.0.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.2.1":{"name":"space-pen","version":"3.2.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"1.x"},"homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.2.1","dist":{"shasum":"601b9342d9da80fdd469284f74f0af6ee90042b0","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.2.1.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.2.2":{"name":"space-pen","version":"3.2.2","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt clean lint coffee","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"1.x"},"homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.2.2","dist":{"shasum":"facd6d90dfbfc10aabe15c70236771b1cb7fd8ed","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.2.2.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.2.3":{"name":"space-pen","version":"3.2.3","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"1.x"},"homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.2.3","dist":{"shasum":"f62deffe2a1011b67233e0ee7ea6dac9f5ac2da1","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.2.3.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.2.4":{"name":"space-pen","version":"3.2.4","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"1.x"},"homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.2.4","dist":{"shasum":"4b6c209f6880a33484478cc182eec42772bbd3eb","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.2.4.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.3.0":{"name":"space-pen","version":"3.3.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"1.x"},"homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.3.0","dist":{"shasum":"440c6dafa4add24b0634f9ce4191a773c1ac8754","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.3.0.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.4.0":{"name":"space-pen","version":"3.4.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"1.x"},"homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.4.0","dist":{"shasum":"18afc8e03c2d96e7bfb703a28cb5079a9decd081","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.4.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.4.1":{"name":"space-pen","version":"3.4.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0"},"dependencies":{"underscore-plus":"1.x"},"homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.4.1","dist":{"shasum":"39564ec5cfcbfc0224d2b82ee4ff15c49f4d0efb","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.4.1.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.4.2":{"name":"space-pen","version":"3.4.2","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^0.2.0"},"dependencies":{"underscore-plus":"1.x"},"homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.4.2","dist":{"shasum":"6c88c965a12b7f5ec1f2bb94825a5a6c79739d1a","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.4.2.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.4.3":{"name":"space-pen","version":"3.4.3","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^0.2.0"},"dependencies":{"underscore-plus":"1.x"},"homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.4.3","dist":{"shasum":"40a5f1362eb824fd00f89765ea2d6b5f251c7adc","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.4.3.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"3.4.4":{"name":"space-pen","version":"3.4.4","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^0.2.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"167e7dad4312c0aa1819abee803dff8dc69bb5e1","homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.4.4","_shasum":"c40518b18d7d0b5803ffa87b412bd8ec6126ba06","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"c40518b18d7d0b5803ffa87b412bd8ec6126ba06","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.4.4.tgz"},"directories":{}},"3.4.5":{"name":"space-pen","version":"3.4.5","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^0.2.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"80bb3dc060d7ba37c718c11f2add1e9dabd0ec25","homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.4.5","_shasum":"801086d1589ea3450f7a037ce8e4aacd43123bf5","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"801086d1589ea3450f7a037ce8e4aacd43123bf5","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.4.5.tgz"},"directories":{}},"3.4.6":{"name":"space-pen","version":"3.4.6","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"44ff5cc9fc7fd788be6da4196e7268b05f8b95f5","homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.4.6","_shasum":"a9f4a338f1e6863ee95b8f98fcf1b1eac4e2e413","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"a9f4a338f1e6863ee95b8f98fcf1b1eac4e2e413","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.4.6.tgz"},"directories":{}},"3.4.7":{"name":"space-pen","version":"3.4.7","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"e96e2e28fb6e920cb5e10df88a9d6259e9014cf5","homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.4.7","_shasum":"4c3839445bfe9cecd1dbc7aaa344e76bde239586","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"4c3839445bfe9cecd1dbc7aaa344e76bde239586","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.4.7.tgz"},"directories":{}},"3.5.0":{"name":"space-pen","version":"3.5.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"d998f8bab2a540b8d5698bd0dc06be66ca3198c7","homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.5.0","_shasum":"3febc30d6736d7db21eae607f7dd27db0fc1e254","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"3febc30d6736d7db21eae607f7dd27db0fc1e254","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.5.0.tgz"},"directories":{}},"3.6.0":{"name":"space-pen","version":"3.6.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"fa57c692c8814fe01c9049ecafcb9fabbfe958cb","homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.6.0","_shasum":"6bd3dae1c5c64b05038b4cce21679e540f8eda6e","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"6bd3dae1c5c64b05038b4cce21679e540f8eda6e","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.6.0.tgz"},"directories":{}},"3.6.1":{"name":"space-pen","version":"3.6.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"8aa45961b901ae3a73d55080e950bbb73be14768","homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.6.1","_shasum":"4d13f1122a5cbfa73b776811a76fae0ee879d443","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"4d13f1122a5cbfa73b776811a76fae0ee879d443","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.6.1.tgz"},"directories":{}},"3.7.0":{"name":"space-pen","version":"3.7.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"05a03bd4ba0ceabe36536e4053749d78cb847fb1","homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.7.0","_shasum":"f9ad95802034e5a892c35f8b33484df031cb99d0","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"f9ad95802034e5a892c35f8b33484df031cb99d0","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.7.0.tgz"},"directories":{}},"3.8.0":{"name":"space-pen","version":"3.8.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"5653da1e8d65209896d71439d74d576589eb3eab","homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.8.0","_shasum":"67e322c206a98ad26ba8ddc5156d8f073604a3fd","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"67e322c206a98ad26ba8ddc5156d8f073604a3fd","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.8.0.tgz"},"directories":{}},"4.0.0":{"name":"space-pen","version":"4.0.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"972a2f00a15e4473056ec9d8b3b354455d21cb81","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.0.0","_shasum":"8230552a57fd0fcf8cad7e0291d9207701bfc333","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"8230552a57fd0fcf8cad7e0291d9207701bfc333","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.0.0.tgz"},"directories":{}},"4.0.1":{"name":"space-pen","version":"4.0.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"33d793f0a6aead48c6c591820b91513f56bd2229","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.0.1","_shasum":"fbae145e57215354c7aabc57ceb868286600dbbe","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"fbae145e57215354c7aabc57ceb868286600dbbe","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.0.1.tgz"},"directories":{}},"3.8.1":{"name":"space-pen","version":"3.8.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"6cd82eb25c030a8d4eafef90bd4cdc4872abe86d","homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.8.1","_shasum":"3d503c9195dd8728ecc1451c8769f09fd6a2b3c5","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"3d503c9195dd8728ecc1451c8769f09fd6a2b3c5","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.8.1.tgz"},"directories":{}},"4.1.0":{"name":"space-pen","version":"4.1.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"1f9ba3642bfe9158d5a0bf3a60ebbec140ef4d98","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.1.0","_shasum":"5f6e60dbaee764b70d997ccdf5e9916d9c1be74d","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"5f6e60dbaee764b70d997ccdf5e9916d9c1be74d","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.1.0.tgz"},"directories":{}},"4.1.1":{"name":"space-pen","version":"4.1.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"a4f01cbe3003bdd837a6219b7c264f2b36eea327","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.1.1","_shasum":"207c98287f6c2a117feb2339d02ac00235eacd9b","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"207c98287f6c2a117feb2339d02ac00235eacd9b","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.1.1.tgz"},"directories":{}},"4.2.0":{"name":"space-pen","version":"4.2.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"f87880a286e0af3688da87b7a638ce79da06cca7","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.2.0","_shasum":"879c502d3c8d5afeef771d30e0ce9b2666632ca8","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"879c502d3c8d5afeef771d30e0ce9b2666632ca8","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.2.0.tgz"},"directories":{}},"3.8.2":{"name":"space-pen","version":"3.8.2","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"underscore-plus":"1.x"},"gitHead":"be50427fe39be6f92cc20fc01f16522bb0471f1f","homepage":"https://github.com/atom/space-pen","_id":"space-pen@3.8.2","_shasum":"6406984dcdda74d536f47ec90e5d5b094589377f","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"6406984dcdda74d536f47ec90e5d5b094589377f","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-3.8.2.tgz"},"directories":{}},"4.2.1":{"name":"space-pen","version":"4.2.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^0.12.0","underscore-plus":"1.x"},"gitHead":"5549b2eb7c57e49d1d65fd9c1562183e86373815","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.2.1","_shasum":"4b7878051bdc96938c8a59b639c20b7db4b2ab97","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"4b7878051bdc96938c8a59b639c20b7db4b2ab97","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.2.1.tgz"},"directories":{}},"4.2.2":{"name":"space-pen","version":"4.2.2","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^0.12.0","underscore-plus":"1.x"},"gitHead":"095a632e94573f75070336d0ea0f52315813b4eb","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.2.2","_shasum":"2ab7d27f1e69139b12bc0de6977e5e0e72e74d05","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"2ab7d27f1e69139b12bc0de6977e5e0e72e74d05","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.2.2.tgz"},"directories":{}},"4.3.0":{"name":"space-pen","version":"4.3.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^0.12.0","underscore-plus":"1.x"},"gitHead":"2c2ef019db39e8ec30b2dbaaac2a1e0d37999b20","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.3.0","_shasum":"69709ac7c07bd3cf4076197f16d8dcae223692cd","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"69709ac7c07bd3cf4076197f16d8dcae223692cd","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.3.0.tgz"},"directories":{}},"4.3.1":{"name":"space-pen","version":"4.3.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^0.12.0","underscore-plus":"1.x"},"gitHead":"5456a3238cf9e7e68b818d8ba0c33dbc1a84068a","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.3.1","_shasum":"937e5f5232180a4146ed97ea076303520b5095f1","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"937e5f5232180a4146ed97ea076303520b5095f1","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.3.1.tgz"},"directories":{}},"4.3.2":{"name":"space-pen","version":"4.3.2","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^0.13.0","underscore-plus":"1.x"},"gitHead":"9ea28fc6ac328475d77e5cc418efdc94d97315b4","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.3.2","_shasum":"6e16734e0a2e019989f97ad298d081c598624e5e","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"6e16734e0a2e019989f97ad298d081c598624e5e","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.3.2.tgz"},"directories":{}},"4.3.3":{"name":"space-pen","version":"4.3.3","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^1.0.0","underscore-plus":"1.x"},"gitHead":"3205f443bd49de3f1653ea8522c5e0508c8a47c9","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.3.3","_shasum":"ef065a6412392a462e906d38dab8b068b32dab04","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"ef065a6412392a462e906d38dab8b068b32dab04","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.3.3.tgz"},"directories":{}},"4.3.4":{"name":"space-pen","version":"4.3.4","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^1.0.0","underscore-plus":"1.x"},"gitHead":"78600c55fd623c527ba21952daf69422ff8891d8","homepage":"https://github.com/atom/space-pen","_id":"space-pen@4.3.4","_shasum":"dbab99bd9640afd87d6a31582564e894eafcb241","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"dbab99bd9640afd87d6a31582564e894eafcb241","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-4.3.4.tgz"},"directories":{}},"5.0.0":{"name":"space-pen","version":"5.0.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^1.0.0","underscore-plus":"1.x"},"gitHead":"dfe236573fc3802711f9fc8e36f89df3ebaa5f7c","homepage":"https://github.com/atom/space-pen","_id":"space-pen@5.0.0","_shasum":"95879917ba89dedd44f4c8dcae4f5055ea8b05ca","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"95879917ba89dedd44f4c8dcae4f5055ea8b05ca","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-5.0.0.tgz"},"directories":{}},"5.0.1":{"name":"space-pen","version":"5.0.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^1.0.0","underscore-plus":"1.x"},"gitHead":"73d9c76045c274952f9a89c0d1422cba72922005","homepage":"https://github.com/atom/space-pen","_id":"space-pen@5.0.1","_shasum":"946c1f58d580268c4dc226f8bed211e34a8b30b3","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"946c1f58d580268c4dc226f8bed211e34a8b30b3","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-5.0.1.tgz"},"directories":{}},"5.1.0":{"name":"space-pen","version":"5.1.0","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^1.0.0","jquery":"^2.1.3","underscore-plus":"1.x"},"gitHead":"700ccf051d69ef096f27da87a25e24305c669ffb","homepage":"https://github.com/atom/space-pen","_id":"space-pen@5.1.0","_shasum":"ecf354799b209d6f58d5f46ec8806156c12d75af","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"ecf354799b209d6f58d5f46ec8806156c12d75af","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-5.1.0.tgz"},"directories":{}},"5.1.1":{"name":"space-pen","version":"5.1.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^1.0.0","jquery":"^2.1.3","underscore-plus":"1.x"},"gitHead":"c5694286b4faaf07eb1a7fbd03e6ebb8c34fc554","homepage":"https://github.com/atom/space-pen","_id":"space-pen@5.1.1","_shasum":"f7cc61ed3e371718aa05d54608ca7784deb7bc89","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"f7cc61ed3e371718aa05d54608ca7784deb7bc89","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-5.1.1.tgz"},"directories":{}}},"readme":"# SpacePen [![Build Status](https://travis-ci.org/atom/space-pen.svg?branch=master)](https://travis-ci.org/atom/space-pen)\n\n**Version 5.x of SpacePen is intended to be included as a direct dependency of 1.0-compatible Atom packages. If you're looking for SpacePen 3.x, used in [Atom Core](https://github.com/atom/atom), check out the [3.x branch](https://github.com/atom/space-pen/tree/3.x).**\n\n## Write markup on the final frontier\n\nSpacePen is a powerful but minimalistic client-side view framework for\nCoffeeScript. It combines the \"view\" and \"controller\" into a single jQuery\nobject, whose markup is expressed with an embedded DSL similar to Markaby for\nRuby.\n\n## Changes In Version 4\n\nThis version of SpacePen depends on HTML 5 custom elements to support lifecycle\nhooks that previously depended on all DOM manipulation being performed via\njQuery. The `afterAttach` and `beforeRemove` hooks have been replaced with\n`attached` and `detached` and their semantics have been altered.\n\nIf you need to use SpacePen in an environment that doesn't support custom\nelements, consider using the previous major version or switching frameworks.\n\n## Basics\n\nView objects extend from the View class and have a @content class method where\nyou express their HTML contents with an embedded markup DSL:\n\n```coffeescript\nclass Spacecraft extends View\n  @content: ->\n    @div =>\n      @h1 \"Spacecraft\"\n      @ol =>\n        @li \"Apollo\"\n        @li \"Soyuz\"\n        @li \"Space Shuttle\"\n```\n\nViews descend from jQuery's prototype, so when you construct one you can call\njQuery methods on it just as you would a DOM fragment created with `$(...)`.\n\n```coffeescript\nview = new Spacecraft\nview.find('ol').append('<li>Star Destroyer</li>')\n\nview.on 'click', 'li', ->\n  alert \"They clicked on #{$(this).text()}\"\n```\n\nBut SpacePen views are more powerful than normal jQuery fragments because they\nlet you define custom methods:\n\n```coffeescript\nclass Spacecraft extends View\n  @content: -> ...\n\n  addSpacecraft: (name) ->\n    @find('ol').append \"<li>#{name}</li>\"\n\n\nview = new Spacecraft\nview.addSpacecraft \"Enterprise\"\n```\n\nYou can also pass arguments on construction, which get passed to both the\n`@content` method and the view's constructor.\n\n```coffeescript\nclass Spacecraft extends View\n  @content: (params) ->\n    @div =>\n      @h1 params.title\n      @ol =>\n        @li name for name in params.spacecraft\n\nview = new Spacecraft(title: \"Space Weapons\", spacecraft: [\"TIE Fighter\", \"Death Star\", \"Warbird\"])\n```\n\nMethods from the jQuery prototype can be gracefully overridden using `super`:\n\n```coffeescript\nclass Spacecraft extends View\n  @content: -> ...\n\n  hide: ->\n    console.log \"Hiding Spacecraft List\"\n    super()\n```\n\nIf you override the View class's constructor, ensure you call `super`.\nAlternatively, you can define an `initialize` method, which the constructor will\ncall for you automatically with the constructor's arguments.\n\n```coffeescript\nclass Spacecraft extends View\n  @content: -> ...\n\n  initialize: (params) ->\n    @title = params.title\n```\n\n## Outlets and Events\n\nSpacePen will automatically create named reference for any element with an\n`outlet` attribute. For example, if the `ol` element has an attribute\n`outlet=list`, the view object will have a `list` entry pointing to a jQuery\nwrapper for the `ol` element.\n\n```coffeescript\nclass Spacecraft extends View\n  @content: ->\n    @div =>\n      @h1 \"Spacecraft\"\n      @ol outlet: \"list\", =>\n        @li \"Apollo\"\n        @li \"Soyuz\"\n        @li \"Space Shuttle\"\n\n  addSpacecraft: (name) ->\n    @list.append(\"<li>#{name}</li>\")\n```\n\nElements can also have event name attributes whose value references a custom\nmethod. For example, if a `button` element has an attribute\n`click=launchSpacecraft`, then SpacePen will invoke the `launchSpacecraft`\nmethod on the button's parent view when it is clicked:\n\n```coffeescript\nclass Spacecraft extends View\n  @content: ->\n    @div =>\n      @h1 \"Spacecraft\"\n      @ol =>\n        @li click: 'launchSpacecraft', \"Saturn V\"\n\n  launchSpacecraft: (event, element) ->\n    console.log \"Preparing #{element.name} for launch!\"\n```\n## Markup DSL Details\n\n### Tag Methods (`@div`, `@h1`, etc.)\n\nAs you've seen so far, the markup DSL is pretty straightforward. From the\n`@content` class method or any method it calls, just invoke instance methods\nnamed for the HTML tags you want to generate. There are 3 types of arguments you\ncan pass to a tag method:\n\n* *Strings*: The string will be HTML-escaped and used as the text contents of the generated tag.\n\n* *Hashes*: The key-value pairs will be used as the attributes of the generated tag.\n\n* *Functions* (bound with `=>`): The function will be invoked in-between the open and closing tag to produce the HTML element's contents.\n\nIf you need to emit a non-standard tag, you can use the `@tag(name, args...)`\nmethod to name the tag with a string:\n\n```coffeescript\n@tag 'bubble', type: \"speech\", => ...\n```\n\n### Text Methods\n\n* `@text(string)`: Emits the HTML-escaped string as text wherever it is called.\n\n* `@raw(string)`: Passes the given string through unescaped. Use this when you need to emit markup directly that was generated beforehand.\n\n## Subviews\n\nSubviews are a great way to make your view code more modular. The\n`@subview(name, view)` method takes a name and another view object. The view\nobject will be inserted at the location of the call, and a reference with the\ngiven name will be wired to it from the parent view. A `parentView` reference\nwill be created on the subview pointing at the parent.\n\n```coffeescript\nclass Spacecraft extends View\n  @content: (params) ->\n    @div =>\n      @subview 'launchController', new LaunchController(countdown: params.countdown)\n      @h1 \"Spacecraft\"\n      ...\n```\n\n## Freeform Markup Generation\n\nYou don't need a View class to use the SpacePen markup DSL. Call `View.render`\nwith an unbound function (`->`, not `=>`) that calls tag methods, and it will\nreturn a document fragment for ad-hoc use. This method is also assigned to the\n`$$` global variable for convenience.\n\n```coffeescript\nview.list.append $$ ->\n  @li =>\n    @text \"Starship\"\n    @em \"Enterprise\"\n```\n\n## jQuery extensions\n\n### $.fn.view\nYou can retrieve the view object for any DOM element by calling `view()` on it.\nThis usually shouldn't be necessary, as most DOM manipulation will take place\nwithin the view itself using outlet references, but is occasionally helpful.\n\n```coffeescript\nview = new Spacecraft\n$('body').append(view)\n\n# assuming no other li elements on the DOM, for example purposes,\n# the following expression should be true\n$('li').view() == view\n```\n\n### Attached/Detached Hooks\nThe `initialize` method is always called when the view is still a detached DOM\nfragment, before it is appended to the DOM. This is usually okay, but\noccasionally you'll have some initialization logic that depends on the view\nactually being on the DOM. For example, you may depend on applying a CSS rule\nbefore measuring an element's height.\n\nFor these situations, use the `attached` hook. It will be called whenever your\nelement is actually attached to the DOM. Past versions of SpacePen would also\ncall this hook when your element was attached to another detached node, but that\nbehavior is no longer supported.\n\nTo be notified when your element is detached from the DOM, implement the\n`detached` hook.\n\n```coffeescript\nclass Spacecraft extends View\n  @content: -> ...\n\n  attached: ->\n    console.log \"With CSS applied, my height is\", @height()\n\n  detached: ->\n    console.log \"I have been detached.\"\n```\n\n## Hacking on SpacePen\n\n```sh\ngit clone https://github.com/atom/space-pen.git\ncd space-pen\nnpm install\nnpm start\n```\n\n* Open http://localhost:1337 to run the specs\n* Open http://localhost:1337/benchmark to run the benchmarks\n* Open http://localhost:1337/examples to browse the examples\n","maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"time":{"modified":"2015-01-21T01:45:00.762Z","created":"2013-05-16T23:39:02.981Z","1.0.0":"2013-05-16T23:39:04.595Z","1.1.0":"2013-08-06T20:46:10.845Z","1.1.1":"2013-08-06T21:59:22.968Z","1.2.0":"2013-08-08T04:27:33.583Z","1.2.1":"2013-09-27T00:12:50.253Z","1.3.0":"2013-10-02T20:02:34.158Z","2.0.0":"2013-10-16T00:51:34.918Z","2.0.1":"2013-11-27T03:38:57.945Z","2.0.2":"2013-12-12T16:22:23.238Z","3.0.0":"2014-01-07T20:56:32.329Z","3.0.1":"2014-01-07T21:14:09.657Z","3.0.2":"2014-01-07T21:46:13.975Z","3.0.3":"2014-01-07T22:28:44.016Z","3.1.0":"2014-01-12T02:49:02.460Z","3.1.1":"2014-01-17T01:32:05.017Z","3.1.2":"2014-01-22T00:06:25.638Z","3.2.0":"2014-05-22T16:31:08.529Z","3.2.1":"2014-06-04T09:15:57.409Z","3.2.2":"2014-06-04T09:44:15.437Z","3.2.3":"2014-06-05T23:35:14.865Z","3.2.4":"2014-06-05T23:51:23.089Z","3.3.0":"2014-06-09T02:00:23.911Z","3.4.0":"2014-08-15T18:53:00.731Z","3.4.1":"2014-08-15T18:54:25.470Z","3.4.2":"2014-08-19T23:34:48.958Z","3.4.3":"2014-08-25T23:35:09.371Z","3.4.4":"2014-08-26T17:58:28.966Z","3.4.5":"2014-08-26T23:07:54.271Z","3.4.6":"2014-08-26T23:23:19.837Z","3.4.7":"2014-09-10T22:19:17.390Z","3.5.0":"2014-09-17T22:38:39.739Z","3.6.0":"2014-09-18T17:49:48.030Z","3.6.1":"2014-09-18T19:03:37.110Z","3.7.0":"2014-10-06T22:08:36.408Z","3.8.0":"2014-10-11T14:25:07.024Z","4.0.0":"2014-11-03T20:40:33.470Z","4.0.1":"2014-11-03T23:10:03.617Z","3.8.1":"2014-11-04T00:03:04.621Z","4.1.0":"2014-11-04T00:36:40.423Z","4.1.1":"2014-11-04T01:03:28.628Z","4.2.0":"2014-11-04T01:41:21.159Z","3.8.2":"2014-11-20T18:02:33.136Z","4.2.1":"2014-11-25T16:09:40.542Z","4.2.2":"2014-11-25T16:53:59.390Z","4.3.0":"2014-12-10T02:56:41.570Z","4.3.1":"2015-01-02T17:42:46.073Z","4.3.2":"2015-01-02T19:05:02.112Z","4.3.3":"2015-01-02T21:28:41.298Z","4.3.4":"2015-01-05T18:03:15.247Z","5.0.0":"2015-01-05T18:06:35.432Z","5.0.1":"2015-01-06T19:26:10.870Z","5.1.0":"2015-01-20T23:12:42.210Z","5.1.1":"2015-01-21T01:45:00.762Z"},"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"readmeFilename":"README.md","homepage":"https://github.com/atom/space-pen","bugs":{"url":"https://github.com/atom/space-pen/issues"},"users":{"jisbert":true},"_attachments":{},"_etag":"\"9VIGBVB2W946IFVA8BLVK0EDB\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/underscore-plus/.cache.json b/atom/.apm/registry.npmjs.org/underscore-plus/.cache.json
new file mode 100644 (file)
index 0000000..5e88a37
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"underscore-plus","_rev":"116-3e3cc5b860e91bf8ba4ae6caa97be39e","name":"underscore-plus","description":"Underscore plus additional utilities","dist-tags":{"latest":"1.6.6"},"versions":{"0.1.0":{"name":"underscore-plus","version":"0.1.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2","tantamount":"~0.5.0"},"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@0.1.0","dist":{"shasum":"0f9783e58e9fea62e9ad2c0f79f651af7e962189","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.2.0":{"name":"underscore-plus","version":"0.2.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2","tantamount":"~0.6.0"},"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@0.2.0","dist":{"shasum":"e3cd64d74ba94171ccdf90e11e27d685133c675e","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"}],"directories":{}},"0.3.0":{"name":"underscore-plus","version":"0.3.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2","tantamount":"~0.6.0"},"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@0.3.0","dist":{"shasum":"9e1d7f17d0e9181e1117f0b486dd154f95f166d0","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"}],"directories":{}},"0.4.1":{"name":"underscore-plus","version":"0.4.1","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2","tantamount":"~0.6.0"},"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@0.4.1","dist":{"shasum":"0963b4069efbfa603a5f39e52300876e05014e08","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-0.4.1.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{}},"0.4.0":{"name":"underscore-plus","version":"0.4.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2","tantamount":"~0.6.0"},"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@0.4.0","dist":{"shasum":"2bb05ff44962ff423ea6214f5dc183fc52d74cd0","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{}},"0.5.0":{"name":"underscore-plus","version":"0.5.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2","tantamount":"~0.6.0"},"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@0.5.0","dist":{"shasum":"c881c9ae6d39c8b29b3c62a5b84650aa79125a1f","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-0.5.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{}},"0.6.0":{"name":"underscore-plus","version":"0.6.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2","tantamount":"~0.6.0"},"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@0.6.0","dist":{"shasum":"240724a31c28ab5d9ce8d27f688d956d003abde3","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"mcolyer","email":"matt@colyer.name"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{}},"0.6.1":{"name":"underscore-plus","version":"0.6.1","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2","tantamount":"~0.6.0"},"devDependencies":{"jasmine-focused":"~0.15.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@0.6.1","dist":{"shasum":"0dbdf69c1a59992b80553678d26c488ab8c28cf7","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-0.6.1.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"mcolyer","email":"matt@colyer.name"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{}},"1.0.0":{"name":"underscore-plus","version":"1.0.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"~0.19.0","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.0.0","dist":{"shasum":"349463ca2b0032035a7ece4cc90662d5d5780b46","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.0.0.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{}},"1.0.2":{"name":"underscore-plus","version":"1.0.2","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.0.2","dist":{"shasum":"2073375c387197b3d7988f9174945db00e0618e3","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.0.2.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{}},"1.0.3":{"name":"underscore-plus","version":"1.0.3","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.0.3","dist":{"shasum":"d3129df4ee046eda578415708fc9aeae8a0b93b4","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.0.3.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{}},"1.0.4":{"name":"underscore-plus","version":"1.0.4","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.0.4","dist":{"shasum":"ce790d7ff8e932ba7aa1ae30f28ba15b8c7ba55c","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.0.4.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"directories":{}},"1.0.5":{"name":"underscore-plus","version":"1.0.5","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.0.5","dist":{"shasum":"f6b6cbabc6758114c4f2a5d15e8842ea49df186f","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.0.5.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"nathansobo","email":"nathansobo@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.0.6":{"name":"underscore-plus","version":"1.0.6","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.0.6","dist":{"shasum":"cfe4d1124bca14bef9d5e7bf84bd99cc2f657e1a","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.0.6.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.1.0":{"name":"underscore-plus","version":"1.1.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.1.0","dist":{"shasum":"13324d69fb2e5605f9af9400b8b5cc8126bbc402","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.1.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.1.1":{"name":"underscore-plus","version":"1.1.1","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.1.1","dist":{"shasum":"7661d5a7f548171d64046f40b5c76010eb522070","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.1.1.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.1.2":{"name":"underscore-plus","version":"1.1.2","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.1.2","dist":{"shasum":"56a99c7a95cf654a53763007df7b495d96211508","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.1.2.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.2.0":{"name":"underscore-plus","version":"1.2.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.2.0","dist":{"shasum":"3cbbe8a187bf05232e36406fd59b159e120b35ed","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.2.0.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.2.1":{"name":"underscore-plus","version":"1.2.1","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.2.1","dist":{"shasum":"16635ffd536abfb4960ad02bd9298bbfce86ccfb","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.2.1.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.2.2":{"name":"underscore-plus","version":"1.2.2","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.5.2"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.2.2","dist":{"shasum":"28c7b4d55760f49e5d6882d456fe66309b3f1330","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.2.2.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.3.0":{"name":"underscore-plus","version":"1.3.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.3.0","dist":{"shasum":"a8f4c394cafdbf80dc24fade257e110a81a678d0","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.3.0.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"nathansobo","email":"nathan@github.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.4.0":{"name":"underscore-plus","version":"1.4.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.4.0","dist":{"shasum":"9a00f5b51cd923568983a5970016b37ecf1a2b35","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.4.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.4.1":{"name":"underscore-plus","version":"1.4.1","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.4.1","dist":{"shasum":"058a6a7f8915952147302029aec36715e069a057","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.4.1.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.5.0":{"name":"underscore-plus","version":"1.5.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.5.0","dist":{"shasum":"b7916f87f7f9ee809c768b486c12fccb3a2351e7","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.5.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.5.1":{"name":"underscore-plus","version":"1.5.1","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"_id":"underscore-plus@1.5.1","dist":{"shasum":"f681c809e3534ec4e3c2d423e5f920c71a70d53c","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.5.1.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"directories":{}},"1.5.2":{"name":"underscore-plus","version":"1.5.2","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"gitHead":"a4157b298a0df6072a309a04cac749934c80fc08","_id":"underscore-plus@1.5.2","_shasum":"bb584bd16b06322a008af8580d4ebc19a2593eff","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"dist":{"shasum":"bb584bd16b06322a008af8580d4ebc19a2593eff","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.5.2.tgz"},"directories":{}},"1.6.0":{"name":"underscore-plus","version":"1.6.0","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"gitHead":"00a92dcc948756c97f8ae50e9e6dc2ea710447c9","_id":"underscore-plus@1.6.0","_shasum":"0b891ac2ed563ddce8c3cf557df87389297b1d87","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"benogle","email":"ogle.ben@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"dist":{"shasum":"0b891ac2ed563ddce8c3cf557df87389297b1d87","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.0.tgz"},"directories":{}},"1.6.1":{"name":"underscore-plus","version":"1.6.1","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"gitHead":"1b9e451a60e8fff6d1fd451915e7da3338d38fc2","_id":"underscore-plus@1.6.1","_shasum":"945375c849685dbdf9261451e1a76d774370a066","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"}],"dist":{"shasum":"945375c849685dbdf9261451e1a76d774370a066","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.1.tgz"},"directories":{}},"1.6.2":{"name":"underscore-plus","version":"1.6.2","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"gitHead":"b8b317ccde577aa629ba458b96d6675ed65a4ac5","_id":"underscore-plus@1.6.2","_shasum":"d4dcb69f342bdbda336a72b67ced20a8349039d6","_from":".","_npmVersion":"2.1.8","_nodeVersion":"0.10.33","_npmUser":{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"d4dcb69f342bdbda336a72b67ced20a8349039d6","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.2.tgz"},"directories":{}},"1.6.3":{"name":"underscore-plus","version":"1.6.3","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"gitHead":"6c483603541c52e36eb297511b3cba58b0f86bb4","_id":"underscore-plus@1.6.3","_shasum":"055f01f3906f2fec1a5bd072a3881f94f1ea6927","_from":".","_npmVersion":"2.1.8","_nodeVersion":"0.10.33","_npmUser":{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"055f01f3906f2fec1a5bd072a3881f94f1ea6927","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.3.tgz"},"directories":{}},"1.6.4":{"name":"underscore-plus","version":"1.6.4","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"gitHead":"ee5da0ea38b92a51e4bdbef9dc240103c86749a4","_id":"underscore-plus@1.6.4","_shasum":"ebab8cccb57b2d5264230d11dc7d231aacba0d2c","_from":".","_npmVersion":"2.1.8","_nodeVersion":"0.10.33","_npmUser":{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"ebab8cccb57b2d5264230d11dc7d231aacba0d2c","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.4.tgz"},"directories":{}},"1.6.5":{"name":"underscore-plus","version":"1.6.5","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"gitHead":"ea40bebfab4b3a92ee26fb8b5ec57d1da27f8d90","_id":"underscore-plus@1.6.5","_shasum":"3ea25575fa7fc5987c87d44da67e1395eb575c50","_from":".","_npmVersion":"2.1.8","_nodeVersion":"0.10.33","_npmUser":{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"3ea25575fa7fc5987c87d44da67e1395eb575c50","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.5.tgz"},"directories":{}},"1.6.6":{"name":"underscore-plus","version":"1.6.6","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"gitHead":"2046d1562896761e3c38b7a647ac30b87b46ea20","_id":"underscore-plus@1.6.6","_shasum":"65ecde1bdc441a35d89e650fd70dcf13ae439a7d","_from":".","_npmVersion":"2.1.8","_nodeVersion":"0.10.33","_npmUser":{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"65ecde1bdc441a35d89e650fd70dcf13ae439a7d","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.6.tgz"},"directories":{}}},"readme":"# underscore-plus [![Build Status](https://travis-ci.org/atom/underscore-plus.svg?branch=master)](https://travis-ci.org/atom/underscore-plus)\n\nTakes the great [underscore](http://underscorejs.org/) library and adds a few\nmore things.\n\n## Using\n\n```sh\nnpm install underscore-plus\n```\n\n```coffeescript\n_ = require 'underscore-plus' # Has all underscore methods and more\n```\n","maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"time":{"modified":"2014-12-18T16:50:54.655Z","created":"2013-10-15T16:23:10.344Z","0.1.0":"2013-10-15T16:23:11.810Z","0.2.0":"2013-10-15T16:34:17.357Z","0.3.0":"2013-11-12T01:05:01.457Z","0.4.1":"2013-12-10T19:28:51.444Z","0.4.0":"2013-12-10T19:41:49.819Z","0.5.0":"2013-12-11T00:26:28.204Z","0.6.0":"2013-12-17T23:29:03.590Z","0.6.1":"2013-12-17T23:46:11.379Z","1.0.0":"2014-01-16T22:26:01.639Z","1.0.1":"2014-01-16T22:15:56.317Z","1.0.2":"2014-02-28T00:21:34.926Z","1.0.3":"2014-03-01T01:15:11.719Z","1.0.4":"2014-03-01T01:32:39.167Z","1.0.5":"2014-03-07T18:20:56.309Z","1.0.6":"2014-03-19T17:10:29.471Z","1.1.0":"2014-03-21T22:47:57.077Z","1.1.1":"2014-03-25T00:01:03.337Z","1.1.2":"2014-03-25T20:51:24.658Z","1.2.0":"2014-04-15T19:32:49.976Z","1.2.1":"2014-04-15T21:57:14.679Z","1.2.2":"2014-05-20T03:30:35.585Z","1.3.0":"2014-05-20T20:01:52.002Z","1.4.0":"2014-06-03T21:30:06.059Z","1.4.1":"2014-06-03T21:45:13.690Z","1.5.0":"2014-06-19T23:39:45.851Z","1.5.1":"2014-07-22T22:56:40.733Z","1.5.2":"2014-10-20T23:56:00.745Z","1.6.0":"2014-10-20T23:58:18.053Z","1.6.1":"2014-10-22T17:20:14.608Z","1.6.2":"2014-12-11T19:08:01.867Z","2.0.0":"2014-12-13T00:44:40.108Z","1.6.3":"2014-12-15T20:56:23.888Z","1.6.4":"2014-12-18T01:35:54.158Z","1.6.5":"2014-12-18T02:14:17.115Z","1.6.6":"2014-12-18T16:50:54.655Z"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"readmeFilename":"README.md","homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"users":{"itonyyo":true},"_attachments":{},"_etag":"\"B3ZC0I6ZSO0NYBPHAVRTO27RD\""}
\ No newline at end of file
diff --git a/atom/.apm/registry.npmjs.org/underscore/.cache.json b/atom/.apm/registry.npmjs.org/underscore/.cache.json
new file mode 100644 (file)
index 0000000..e1aae59
--- /dev/null
@@ -0,0 +1 @@
+{"_id":"underscore","_rev":"440-e75350c0d8fe963d6a9a446dafaeb411","name":"underscore","description":"JavaScript's functional programming helper library.","dist-tags":{"latest":"1.8.3","stable":"1.8.3"},"versions":{"1.0.3":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.0.3","_id":"underscore@1.0.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.0.3.tgz","shasum":"7793a6f776dffa491d224eaf1d819824d4dc288a"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.0.4":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.0.4","_id":"underscore@1.0.4","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.0.4.tgz","shasum":"563141126b4e412f6c12c2ae2fb44ef0edd23fb2"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.0":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.0","_id":"underscore@1.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.0.tgz","shasum":"8bf44d9cc8c3a614d7940035522e1f95b682b071"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.1":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.1","_id":"underscore@1.1.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.1.tgz","shasum":"65dddb8cd0ee3f0094f46db72ea269d5a4f5fca4"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.2":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.2","_id":"underscore@1.1.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.2.tgz","shasum":"8cf4ae3900c32f3e3f06579d473a45ad768251e8"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.3":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.3","_id":"underscore@1.1.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.3.tgz","shasum":"6bd1969042a65bd3966d8924c14909f2284631dd"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.4":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore.js","version":"1.1.4","_id":"underscore@1.1.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.9","_nodeVersion":"v0.5.0-pre","dist":{"shasum":"9e82274902865625b3a6d4c315a38ffd80047dae","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.4.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.1.5":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.5","_id":"underscore@1.1.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.16","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"23601d62c75619998b2f0db24938102793336a56","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.5.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.6":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.6","_id":"underscore@1.1.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"6868da1bdd72d75285be0b4e50f228e70d001a2c","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.6.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.7":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.7","devDependencies":{},"_id":"underscore@1.1.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"40bab84bad19d230096e8d6ef628bff055d83db0","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.7.tgz"},"scripts":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.0","_npmJsonOpts":{"file":"/Users/jashkenas/.npm/underscore/1.2.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"underscore@1.2.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"b32ce32c8c118caa8031c10b54c7f65ab3b557fd","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.0.tgz"},"scripts":{},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"directories":{}},"1.2.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.1","_npmJsonOpts":{"file":"/Users/jashkenas/.npm/underscore/1.2.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"underscore@1.2.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"fc5c6b0765673d92a2d4ac8b4dc0aa88702e2bd4","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.1.tgz"},"scripts":{},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"directories":{}},"1.2.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.2","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"74dd40e9face84e724eb2edae945b8aedc233ba3","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.2.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"11b874da70f4683d7d48bba2b44be1e600d2f6cf","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.3.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.4":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.4","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.4","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"e8da6241aa06f64df2473bb2590b8c17c84c3c7e","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.4.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.0","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"253b2d79b7bb67943ced0fc744eb18267963ede8","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.0.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.1","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"6cb8aad0e77eb5dbbfb54b22bcd8697309cf9641","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.1.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.2","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"1b4e455089ab1d1d38ab6794ffe6cf08f764394a","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.2.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"47ac53683daf832bfa952e1774417da47817ae42","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.3.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.0","_id":"underscore@1.4.0","dist":{"shasum":"caaf510c272cbb53748a225dcfd906e5f5a5ccdd","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.4.0.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.1","_id":"underscore@1.4.1","dist":{"shasum":"f6a25ffe5d6d3ed4fe8fef37c3a9bfe689b16bb9","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.4.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.2","_id":"underscore@1.4.2","dist":{"shasum":"cb2aae6a7999a89fd55aaee75bce0311698cebfb","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.4.2.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.3","_id":"underscore@1.4.3","dist":{"shasum":"b3d0aaa1ee74d886ea4f2648021a4f8ad779ed1d","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.4.3.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.4":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.4","devDependencies":{"phantomjs":"0.2.2"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"_id":"underscore@1.4.4","dist":{"shasum":"61a6a32010622afa07963bf325203cf12239d604","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.5.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.5.0","devDependencies":{"phantomjs":"1.9.0-1"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"license":"MIT","bugs":{"url":"https://github.com/documentcloud/underscore/issues"},"_id":"underscore@1.5.0","dist":{"shasum":"90c57994d1de16aab8938142e3c5b43547019362","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.5.0.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.5.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.5.1","devDependencies":{"phantomjs":"1.9.0-1"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"license":"MIT","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.5.1","dist":{"shasum":"d2bde817d176ffade894ab71458e682a14b86dc9","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.5.1.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.5.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.5.2","devDependencies":{"phantomjs":"1.9.0-1"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/underscore/master/LICENSE"}],"files":["underscore.js","underscore-min.js","LICENSE"],"bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.5.2","dist":{"shasum":"1335c5e4f5e6d33bbb4b006ba8c86a00f556de08","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.5.2.tgz"},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.6.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.6.0","devDependencies":{"docco":"0.6.x","phantomjs":"1.9.0-1","uglify-js":"2.4.x"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true","build":"uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js","doc":"docco underscore.js"},"licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/underscore/master/LICENSE"}],"files":["underscore.js","underscore-min.js","LICENSE"],"bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.6.0","dist":{"shasum":"8b38b10cacdef63337b8b24e4ff86d45aea529a8","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.7.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.7.0","devDependencies":{"docco":"0.6.x","phantomjs":"1.9.7-1","uglify-js":"2.4.x","eslint":"0.6.x"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true && eslint underscore.js test/*.js test/vendor/runner.js","build":"uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js","doc":"docco underscore.js"},"licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/underscore/master/LICENSE"}],"files":["underscore.js","underscore-min.js","LICENSE"],"gitHead":"da996e665deb0b69b257e80e3e257c04fde4191c","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.7.0","_shasum":"6bbaf0877500d36be34ecaa584e0db9fef035209","_from":".","_npmVersion":"1.4.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"dist":{"shasum":"6bbaf0877500d36be34ecaa584e0db9fef035209","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz"},"directories":{}},"1.8.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.8.0","devDependencies":{"docco":"0.6.x","eslint":"0.6.x","karma":"~0.12.31","karma-qunit":"~0.1.4","qunit-cli":"~0.2.0","uglify-js":"2.4.x"},"scripts":{"test":"npm run test-node && npm run lint","lint":"eslint underscore.js test/*.js","test-node":"qunit-cli test/*.js","test-browser":"npm i karma-phantomjs-launcher && ./node_modules/karma/bin/karma start","build":"uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js","doc":"docco underscore.js"},"license":"MIT","files":["underscore.js","underscore-min.js","underscore-min.map","LICENSE"],"gitHead":"1aed9ec063715cd6a69fdd42b29d4ee40b3a00b2","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.8.0","_shasum":"eb40b4e7694db3e376f2f4392fb2a2f803063f01","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"dist":{"shasum":"eb40b4e7694db3e376f2f4392fb2a2f803063f01","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.8.0.tgz"},"directories":{}},"1.8.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.8.1","devDependencies":{"docco":"0.6.x","eslint":"0.6.x","karma":"~0.12.31","karma-qunit":"~0.1.4","qunit-cli":"~0.2.0","uglify-js":"2.4.x"},"scripts":{"test":"npm run test-node && npm run lint","lint":"eslint underscore.js test/*.js","test-node":"qunit-cli test/*.js","test-browser":"npm i karma-phantomjs-launcher && ./node_modules/karma/bin/karma start","build":"uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js","doc":"docco underscore.js"},"license":"MIT","files":["underscore.js","underscore-min.js","underscore-min.map","LICENSE"],"gitHead":"834acb6dde9665b9d1c1700e3aeee7e253e9d76f","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.8.1","_shasum":"1581e7870f5db1bb77b9ddf0c1904df6525880ae","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"dist":{"shasum":"1581e7870f5db1bb77b9ddf0c1904df6525880ae","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.8.1.tgz"},"directories":{}},"1.8.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.8.2","devDependencies":{"docco":"*","eslint":"0.6.x","karma":"~0.12.31","karma-qunit":"~0.1.4","qunit-cli":"~0.2.0","uglify-js":"2.4.x"},"scripts":{"test":"npm run test-node && npm run lint","lint":"eslint underscore.js test/*.js","test-node":"qunit-cli test/*.js","test-browser":"npm i karma-phantomjs-launcher && ./node_modules/karma/bin/karma start","build":"uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js","doc":"docco underscore.js"},"license":"MIT","files":["underscore.js","underscore-min.js","underscore-min.map","LICENSE"],"gitHead":"19db749b190a7cb5a8b7ab1aab42c0e9dc517250","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.8.2","_shasum":"64df2eb590899de950782f3735190ba42ebf311d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"dist":{"shasum":"64df2eb590899de950782f3735190ba42ebf311d","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.8.2.tgz"},"directories":{}},"1.8.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.8.3","devDependencies":{"docco":"*","eslint":"0.6.x","karma":"~0.12.31","karma-qunit":"~0.1.4","qunit-cli":"~0.2.0","uglify-js":"2.4.x"},"scripts":{"test":"npm run test-node && npm run lint","lint":"eslint underscore.js test/*.js","test-node":"qunit-cli test/*.js","test-browser":"npm i karma-phantomjs-launcher && ./node_modules/karma/bin/karma start","build":"uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js","doc":"docco underscore.js"},"license":"MIT","files":["underscore.js","underscore-min.js","underscore-min.map","LICENSE"],"gitHead":"e4743ab712b8ab42ad4ccb48b155034d02394e4d","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.8.3","_shasum":"4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"dist":{"shasum":"4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz"},"directories":{}}},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"time":{"modified":"2015-04-02T15:32:54.520Z","created":"2011-01-09T19:04:10.529Z","1.0.3":"2011-12-07T15:12:18.045Z","1.0.4":"2011-12-07T15:12:18.045Z","1.1.0":"2011-12-07T15:12:18.045Z","1.1.1":"2011-12-07T15:12:18.045Z","1.1.2":"2011-12-07T15:12:18.045Z","1.1.3":"2011-12-07T15:12:18.045Z","1.1.4":"2011-12-07T15:12:18.045Z","1.1.5":"2011-12-07T15:12:18.045Z","1.1.6":"2011-12-07T15:12:18.045Z","1.1.7":"2011-12-07T15:12:18.045Z","1.2.0":"2011-12-07T15:12:18.045Z","1.2.1":"2011-12-07T15:12:18.045Z","1.2.2":"2011-11-14T20:28:47.115Z","1.2.3":"2011-12-07T15:12:18.045Z","1.2.4":"2012-01-09T17:23:14.818Z","1.3.0":"2012-01-11T16:41:38.459Z","1.3.1":"2012-01-23T22:57:36.474Z","1.3.2":"2012-04-09T18:38:14.345Z","1.3.3":"2012-04-10T14:43:48.089Z","1.4.0":"2012-09-27T22:02:55.267Z","1.4.1":"2012-10-01T17:20:22.595Z","1.4.2":"2012-10-07T03:05:02.986Z","1.4.3":"2012-12-04T18:47:36.401Z","1.4.4":"2013-01-30T02:12:42.969Z","1.5.0":"2013-07-06T18:05:58.721Z","1.5.1":"2013-07-08T08:38:10.051Z","1.5.2":"2013-09-07T13:00:28.048Z","1.6.0":"2014-02-10T21:14:55.838Z","1.7.0":"2014-08-26T22:16:25.836Z","1.8.0":"2015-02-20T00:14:01.838Z","1.8.1":"2015-02-20T03:20:05.519Z","1.8.2":"2015-02-22T14:14:32.785Z","1.8.3":"2015-04-02T15:32:54.520Z"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"users":{"mvolkmann":true,"lancehunt":true,"mikl":true,"linus":true,"vasc":true,"bat":true,"dmalam":true,"mbrevoort":true,"danielr":true,"rsimoes":true,"jharding":true,"tellnes":true,"fgribreau":true,"pid":true,"tylerstalder":true,"graemef":true,"gillesruppert":true,"travishorn":true,"m42am":true,"bencevans":true,"Scryptonite":true,"konklone":true,"bryanburgers":true,"ehershey":true,"freethenation":true,"dannydulai":true,"megadrive":true,"lupomontero":true,"cj.nichols":true,"dbrockman":true,"maxmaximov":true,"hyqhyq_3":true,"zonetti":true,"cparker15":true,"lemulot":true,"mlowe":true,"chilts":true,"shanewholloway":true,"elgs":true,"eins78":true,"moonpyk":true,"awaterma":true,"raitucarp":true,"victorquinn":true,"netroy":true,"davidgaya":true,"everywhere.js":true,"tigefa":true,"pana":true,"spekkionu":true,"mhaidarh":true,"einfallstoll":true,"simloovoo":true,"mpinteractiv":true,"darosh":true,"landau":true,"tpwk":true,"cedrickchee":true,"claveren":true,"xtopher":true,"gammasoft":true,"lomatek":true,"thomas-so":true,"oliversalzburg":true,"nosch":true,"rod":true,"vegera":true,"clintonhalpin":true,"seldo":true,"priyaranjan":true,"cilindrox":true,"cheeseen":true,"rrobayna":true,"casoetan":true,"ajduke":true,"bosspj":true,"protonss":true,"mgesmundo":true,"zeusdeux":true,"jetsetty":true,"evkline":true,"bcoe":true,"nbu":true,"tehdb":true,"ericlondon":true,"obihann":true,"wangxian":true,"lanceball":true,"funroll":true,"leventkaragol":true,"beyoung":true,"davidhalldor":true,"cwonrails":true,"cocopas":true,"imnicosuarez":true,"furkanom":true,"andydrew":true,"mrmakeit":true,"mmierswa":true,"jasonw":true,"adamk":true,"runningtalus":true,"sironfoot":true,"ezhi":true,"suomiton":true,"uris77":true,"fill":true,"ksnieck":true,"nithanaroy":true,"abalandin":true,"jasonweng":true,"zenanyoo":true,"djbrandl":true,"davidrlee":true,"dereknelson":true,"nohponex":true,"frk1705":true,"thitinun":true,"pilsy":true,"lpgray":true,"tchey":true,"arrc":true,"skinnybrit51":true,"tmypawa":true,"smashingeric":true,"tsangint":true,"dercoder":true,"slahav":true,"mhwchung":true,"moxiaohe":true,"truongpv":true,"gregoryteach":true,"goblindegook":true,"atd":true,"tommyjs7":true,"adammcarth":true,"sroccaserra":true,"yourhoneysky":true,"jashkenas":true,"eliagrady":true,"jits":true,"lukecarrier":true,"knoxpayments":true,"kingcron":true,"morewry":true,"karmadude":true,"kungkk":true,"johno":true,"henryfour":true,"augusto.altman":true,"jesus81":true,"cbowdon":true,"hrmoller":true,"megawac":true,"hkbarton":true,"minchnew":true,"richard.webb":true,"alexahdp":true,"kickthesky":true,"bkimminich":true,"maobean":true,"windhamdavid":true,"piecioshka":true,"l0n9h02n":true,"wxnet":true,"genediazjr":true,"oakley349":true,"ascheink":true,"lellansin":true,"cwhopkins":true,"dgarlitt":true,"congcong":true,"avinashkoyyana":true,"rorygreig":true,"macluvin":true,"ryanj":true,"jerryzou":true,"swak":true,"gdbtek":true,"themanspeaker":true,"stennettm":true,"richarddavenport":true,"porkbits":true,"kruemelo":true,"thorsson":true,"netzflechter":true,"taekgeun":true,"ikoala":true,"kenjisan4u":true,"indexzero":true,"eterna2":true,"mnemr":true,"excentric":true,"wangnan0610":true,"jezzalaycock":true,"devonoel":true,"greendwin":true,"midknight41":true,"caligone":true,"f124275809":true,"io2work":true,"icflorescu":true,"aitorllj93":true,"batosai":true,"stuligan":true,"infinitycbs":true,"tkhemani":true,"craigsapp":true,"sametsisartenep":true,"andreaspag":true,"yasinaydin":true,"pnevares":true,"princemaple":true,"haeck":true,"mathieuancelin":true,"pughpugh":true,"jaggedsoft":true,"j3kz":true,"sobering":true,"vchouhan":true,"wambulance":true,"mccarter":true,"goodseller":true,"ysk8":true,"zambon":true,"joeyblue":true,"jostw":true,"skyinlayer":true,"broxmgs":true,"dpkg":true,"plord":true,"seanjh":true,"chharvey":true,"vboctor":true,"jmm23":true,"rugare":true,"blackoperat":true,"alphavibe":true,"sharper":true,"keeyanajones":true,"subchen":true,"dongxu":true,"risyasin":true,"rbartoli":true,"lucasmciruzzi":true,"jakemiller":true,"huntie":true,"jmshahen":true,"itonyyo":true,"minghe":true,"chadwatson":true,"klipsil":true,"huytard":true,"orlenka":true,"makediff":true,"dac2205":true,"sbrajesh":true,"dlaume":true,"chriscalo":true,"dolymood":true,"richfoxton":true,"sanketss84":true,"johnny.young":true,"cycomachead":true,"jimkropa":true,"sonhuytran":true,"damianof":true,"subso":true,"thepanuto":true,"imchale":true,"leejefon":true,"ernie55ernie":true,"robermac":true,"sezgin":true,"cestrensem":true,"bpatel":true,"stevenlothrop":true,"karlbateman":true,"fvcproductions":true,"freshlogic":true,"kurtz1993":true},"readme":"                       __\n                      /\\ \\                                                         __\n     __  __    ___    \\_\\ \\     __   _ __   ____    ___    ___   _ __    __       /\\_\\    ____\n    /\\ \\/\\ \\ /' _ `\\  /'_  \\  /'__`\\/\\  __\\/ ,__\\  / ___\\ / __`\\/\\  __\\/'__`\\     \\/\\ \\  /',__\\\n    \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\  __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\  __/  __  \\ \\ \\/\\__, `\\\n     \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n      \\/___/  \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/  \\/____/\\/___/  \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n                                                                                  \\ \\____/\n                                                                                   \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nUnderscore is an open-sourced component of DocumentCloud:\nhttps://github.com/documentcloud\n\nMany thanks to our contributors:\nhttps://github.com/jashkenas/underscore/contributors\n","readmeFilename":"README.md","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"license":"MIT","_attachments":{},"_etag":"\"3UQP1FXOKYE5RILZ0ME3VNRI2\""}
\ No newline at end of file
diff --git a/atom/.apm/relative-line-numbers/0.1.5/package.tgz b/atom/.apm/relative-line-numbers/0.1.5/package.tgz
new file mode 100644 (file)
index 0000000..49a45cb
Binary files /dev/null and b/atom/.apm/relative-line-numbers/0.1.5/package.tgz differ
diff --git a/atom/.apm/relative-line-numbers/0.1.5/package/package.json b/atom/.apm/relative-line-numbers/0.1.5/package/package.json
new file mode 100644 (file)
index 0000000..b857226
--- /dev/null
@@ -0,0 +1 @@
+{"name":"relative-line-numbers","main":"./lib/relative-line-numbers","version":"0.1.5","description":"Relative line numbers for Atom","repository":{"type":"git","url":"https://github.com/rovansteen/atom-relative-line-numbers"},"license":"MIT","activationEvents":[],"engines":{"atom":">=0.174.0 <2.0.0"},"dependencies":{},"readme":"# relative-line-numbers package\n\nReplaces the regular line numbers with relative numbers.\nAlso has an option to show the true number on the current line.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/rovansteen/atom-relative-line-numbers/issues"},"homepage":"https://github.com/rovansteen/atom-relative-line-numbers","_id":"relative-line-numbers@0.1.5","_shasum":"0ac976da8ee9a717118a60ade739820b9f0af0b4","_resolved":"file:../d-11567-50205-nqln2s/package.tgz","_from":"../d-11567-50205-nqln2s/package.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/rimraf/2.2.8/package.tgz b/atom/.apm/rimraf/2.2.8/package.tgz
new file mode 100644 (file)
index 0000000..a5527de
Binary files /dev/null and b/atom/.apm/rimraf/2.2.8/package.tgz differ
diff --git a/atom/.apm/rimraf/2.2.8/package/package.json b/atom/.apm/rimraf/2.2.8/package/package.json
new file mode 100644 (file)
index 0000000..d35811d
--- /dev/null
@@ -0,0 +1 @@
+{"name":"rimraf","version":"2.2.8","main":"rimraf.js","description":"A deep deletion module for node (like `rm -rf`)","author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"license":{"type":"MIT","url":"https://github.com/isaacs/rimraf/raw/master/LICENSE"},"repository":{"type":"git","url":"git://github.com/isaacs/rimraf.git"},"scripts":{"test":"cd test && bash run.sh"},"bin":{"rimraf":"./bin.js"},"contributors":[{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me"},{"name":"Wayne Larsen","email":"wayne@larsen.st","url":"http://github.com/wvl"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"Marcel Laverdet"},{"name":"Yosef Dinerstein","email":"yosefd@microsoft.com"}],"bugs":{"url":"https://github.com/isaacs/rimraf/issues"},"homepage":"https://github.com/isaacs/rimraf","_id":"rimraf@2.2.8","_shasum":"e439be2aaee327321952730f99a8929e4fc50582","_from":"rimraf@>=2.2.2 <2.3.0","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"e439be2aaee327321952730f99a8929e4fc50582","tarball":"http://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/source-map/0.1.43/package.tgz b/atom/.apm/source-map/0.1.43/package.tgz
new file mode 100644 (file)
index 0000000..ba6c9ac
Binary files /dev/null and b/atom/.apm/source-map/0.1.43/package.tgz differ
diff --git a/atom/.apm/source-map/0.1.43/package/package.json b/atom/.apm/source-map/0.1.43/package/package.json
new file mode 100644 (file)
index 0000000..9167dd7
--- /dev/null
@@ -0,0 +1 @@
+{"name":"source-map","description":"Generates and consumes source maps","version":"0.1.43","homepage":"https://github.com/mozilla/source-map","author":{"name":"Nick Fitzgerald","email":"nfitzgerald@mozilla.com"},"contributors":[{"name":"Tobias Koppers","email":"tobias.koppers@googlemail.com"},{"name":"Duncan Beevers","email":"duncan@dweebd.com"},{"name":"Stephen Crane","email":"scrane@mozilla.com"},{"name":"Ryan Seddon","email":"seddon.ryan@gmail.com"},{"name":"Miles Elam","email":"miles.elam@deem.com"},{"name":"Mihai Bazon","email":"mihai.bazon@gmail.com"},{"name":"Michael Ficarra","email":"github.public.email@michael.ficarra.me"},{"name":"Todd Wolfson","email":"todd@twolfson.com"},{"name":"Alexander Solovyov","email":"alexander@solovyov.net"},{"name":"Felix Gnass","email":"fgnass@gmail.com"},{"name":"Conrad Irwin","email":"conrad.irwin@gmail.com"},{"name":"usrbincc","email":"usrbincc@yahoo.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Chase Douglas","email":"chase@newrelic.com"},{"name":"Evan Wallace","email":"evan.exe@gmail.com"},{"name":"Heather Arthur","email":"fayearthur@gmail.com"},{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com"},{"name":"David Glasser","email":"glasser@davidglasser.net"},{"name":"Simon Lydell","email":"simon.lydell@gmail.com"},{"name":"Jmeas Smith","email":"jellyes2@gmail.com"},{"name":"Michael Z Goddard","email":"mzgoddard@gmail.com"},{"name":"azu","email":"azu@users.noreply.github.com"},{"name":"John Gozde","email":"john@gozde.ca"},{"name":"Adam Kirkton","email":"akirkton@truefitinnovation.com"},{"name":"Chris Montgomery","email":"christopher.montgomery@dowjones.com"},{"name":"J. Ryan Stinnett","email":"jryans@gmail.com"},{"name":"Jack Herrington","email":"jherrington@walmartlabs.com"},{"name":"Chris Truter","email":"jeffpalentine@gmail.com"},{"name":"Daniel Espeset","email":"daniel@danielespeset.com"}],"repository":{"type":"git","url":"http://github.com/mozilla/source-map.git"},"directories":{"lib":"./lib"},"main":"./lib/source-map.js","engines":{"node":">=0.8.0"},"licenses":[{"type":"BSD","url":"http://opensource.org/licenses/BSD-3-Clause"}],"dependencies":{"amdefine":">=0.0.4"},"devDependencies":{"dryice":">=0.4.8"},"scripts":{"test":"node test/run-tests.js","build":"node Makefile.dryice.js"},"bugs":{"url":"https://github.com/mozilla/source-map/issues"},"_id":"source-map@0.1.43","_shasum":"c24bc146ca517c1471f5dacbe2571b2b7f9e3346","_from":"source-map@>=0.1.43 <0.2.0","_npmVersion":"1.4.9","_npmUser":{"name":"nickfitzgerald","email":"fitzgen@gmail.com"},"maintainers":[{"name":"mozilla-devtools","email":"mozilla-developer-tools@googlegroups.com"},{"name":"mozilla","email":"dherman@mozilla.com"},{"name":"nickfitzgerald","email":"fitzgen@gmail.com"}],"dist":{"shasum":"c24bc146ca517c1471f5dacbe2571b2b7f9e3346","tarball":"http://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz"},"_resolved":"https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/space-pen/5.1.1/package.tgz b/atom/.apm/space-pen/5.1.1/package.tgz
new file mode 100644 (file)
index 0000000..00b4e07
Binary files /dev/null and b/atom/.apm/space-pen/5.1.1/package.tgz differ
diff --git a/atom/.apm/space-pen/5.1.1/package/package.json b/atom/.apm/space-pen/5.1.1/package/package.json
new file mode 100644 (file)
index 0000000..9d1106d
--- /dev/null
@@ -0,0 +1 @@
+{"name":"space-pen","version":"5.1.1","description":"Write markup on the final frontier","main":"./lib/space-pen.js","scripts":{"prepublish":"grunt prepublish","test":"grunt test","start":"grunt start"},"licenses":[{"type":"MIT","url":"http://github.com/atom/space-pen/raw/master/LICENSE"}],"repository":{"type":"git","url":"https://github.com/atom/space-pen.git"},"bugs":{"url":"https://github.com/atom/space-pen/issues"},"devDependencies":{"express":"~3.4.0","coffee-script":"~1.6.3","grunt-contrib-coffee":"~0.7.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-coffeelint":"0.0.6","browserify":"~2.34.1","jasmine-focused":"~0.15.0","grunt-shell":"~0.5.0","coffeeify":"~0.5.1","grunt-contrib-connect":"~0.5.0","grunt-atomdoc":"^1.0.0"},"dependencies":{"grim":"^1.0.0","jquery":"^2.1.3","underscore-plus":"1.x"},"gitHead":"c5694286b4faaf07eb1a7fbd03e6ebb8c34fc554","homepage":"https://github.com/atom/space-pen","_id":"space-pen@5.1.1","_shasum":"f7cc61ed3e371718aa05d54608ca7784deb7bc89","_from":"space-pen@>=5.1.1 <6.0.0","_npmVersion":"1.4.28","_npmUser":{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"benogle","email":"ogle.ben@gmail.com"}],"dist":{"shasum":"f7cc61ed3e371718aa05d54608ca7784deb7bc89","tarball":"http://registry.npmjs.org/space-pen/-/space-pen-5.1.1.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/space-pen/-/space-pen-5.1.1.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/underscore-plus/1.6.6/package.tgz b/atom/.apm/underscore-plus/1.6.6/package.tgz
new file mode 100644 (file)
index 0000000..7b3339f
Binary files /dev/null and b/atom/.apm/underscore-plus/1.6.6/package.tgz differ
diff --git a/atom/.apm/underscore-plus/1.6.6/package/package.json b/atom/.apm/underscore-plus/1.6.6/package/package.json
new file mode 100644 (file)
index 0000000..d53fdc0
--- /dev/null
@@ -0,0 +1 @@
+{"name":"underscore-plus","version":"1.6.6","description":"Underscore plus additional utilities","licenses":[{"type":"MIT","url":"http://github.com/atom/underscore-plus/raw/master/LICENSE.md"}],"main":"./lib/underscore-plus.js","scripts":{"prepublish":"grunt clean coffee lint","test":"grunt test"},"repository":{"type":"git","url":"https://github.com/atom/underscore-plus.git"},"bugs":{"url":"https://github.com/atom/underscore-plus/issues"},"homepage":"http://atom.github.io/underscore-plus","keywords":["underscore"],"dependencies":{"underscore":"~1.6.0"},"devDependencies":{"jasmine-focused":"1.x","grunt-contrib-coffee":"~0.9.0","grunt-cli":"~0.1.8","grunt":"~0.4.1","grunt-shell":"~0.2.2","grunt-coffeelint":"0.0.6","temp":"~0.5.0","rimraf":"~2.1.4"},"gitHead":"2046d1562896761e3c38b7a647ac30b87b46ea20","_id":"underscore-plus@1.6.6","_shasum":"65ecde1bdc441a35d89e650fd70dcf13ae439a7d","_from":"underscore-plus@>=1.6.6 <2.0.0","_npmVersion":"2.1.8","_nodeVersion":"0.10.33","_npmUser":{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"},"maintainers":[{"name":"kevinsawicki","email":"kevinsawicki@gmail.com"},{"name":"mcolyer","email":"matt@colyer.name"},{"name":"benogle","email":"ogle.ben@gmail.com"},{"name":"nathansobo","email":"nathansobo@gmail.com"},{"name":"maxbrunsfeld","email":"maxbrunsfeld@gmail.com"}],"dist":{"shasum":"65ecde1bdc441a35d89e650fd70dcf13ae439a7d","tarball":"http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.6.tgz"},"directories":{},"_resolved":"https://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.6.tgz","readme":"ERROR: No README data found!"}
\ No newline at end of file
diff --git a/atom/.apm/underscore/1.6.0/package.tgz b/atom/.apm/underscore/1.6.0/package.tgz
new file mode 100644 (file)
index 0000000..9593f95
Binary files /dev/null and b/atom/.apm/underscore/1.6.0/package.tgz differ
diff --git a/atom/.apm/underscore/1.6.0/package/package.json b/atom/.apm/underscore/1.6.0/package/package.json
new file mode 100644 (file)
index 0000000..c2b6f2e
--- /dev/null
@@ -0,0 +1 @@
+{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.6.0","devDependencies":{"docco":"0.6.x","phantomjs":"1.9.0-1","uglify-js":"2.4.x"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true","build":"uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js","doc":"docco underscore.js"},"licenses":[{"type":"MIT","url":"https://raw.github.com/jashkenas/underscore/master/LICENSE"}],"files":["underscore.js","underscore-min.js","LICENSE"],"bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.6.0","dist":{"shasum":"8b38b10cacdef63337b8b24e4ff86d45aea529a8","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz"},"_from":"underscore@>=1.6.0 <1.7.0","_npmVersion":"1.3.21","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{},"_shasum":"8b38b10cacdef63337b8b24e4ff86d45aea529a8","_resolved":"https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz","readme":"ERROR: No README data found!"}
\ No newline at end of file
diff --git a/atom/.apm/vim-mode-visual-block/0.2.7/package.tgz b/atom/.apm/vim-mode-visual-block/0.2.7/package.tgz
new file mode 100644 (file)
index 0000000..a24b8a6
Binary files /dev/null and b/atom/.apm/vim-mode-visual-block/0.2.7/package.tgz differ
diff --git a/atom/.apm/vim-mode-visual-block/0.2.7/package/package.json b/atom/.apm/vim-mode-visual-block/0.2.7/package/package.json
new file mode 100644 (file)
index 0000000..8fc72f8
--- /dev/null
@@ -0,0 +1 @@
+{"name":"vim-mode-visual-block","main":"./lib/main","version":"0.2.7","description":"Add visual-blockwise feature to vim-mode","repository":{"type":"git","url":"https://github.com/t9md/atom-vim-mode-visual-block"},"license":"MIT","engines":{"atom":">=0.174.0 <2.0.0"},"consumedServices":{"vim-mode":{"versions":{"^0.1.0":"consumeVimMode"}}},"dependencies":{"underscore-plus":"^1.6.6"},"readme":"# vim-mode-visual-block\n\nAdd visual-block operation to [vim-mode](https://atom.io/packages/vim-mode).\n\n![gif](https://raw.githubusercontent.com/t9md/t9md/375d45f661b76cd8fd874dbcacf93602e7d75c99/img/vim-mode-visual-blockwise.gif)\n\n# What's this?\n\n**Temporarily** workaround, until vim-mode support visual block mode natively.\nI'm not intended to complete solution.\n\n# Keymap\n\nFrom version 0.2.5, starting to provide [default keymap](https://github.com/t9md/atom-vim-mode-visual-block/blob/master/keymaps/vim-mode-visual-block.cson).  \n\nFor older version user\n* Remove explicit keymap from `keymap.cson` and use default keymap.\n\n# Limitation\n- Currently yank and paste for block range is not suppoted.\n- No support for non-contiguous multi selection.\n\n# Todo\n* [x] Precise state check when escape from visual-block.\n* [x] Support other insert-mode initiator like `a`, `i`, `C`.\n* [ ] Yank and paste support.\n* [ ] Concatenate undo transaction?.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/t9md/atom-vim-mode-visual-block/issues"},"homepage":"https://github.com/t9md/atom-vim-mode-visual-block","_id":"vim-mode-visual-block@0.2.7","_shasum":"13e1098ad2d14b834a6708c602295b05399147f4","_resolved":"file:../d-11562-87855-1gkfksx/package.tgz","_from":"../d-11562-87855-1gkfksx/package.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/vim-mode/0.54.0/package.tgz b/atom/.apm/vim-mode/0.54.0/package.tgz
new file mode 100644 (file)
index 0000000..8575021
Binary files /dev/null and b/atom/.apm/vim-mode/0.54.0/package.tgz differ
diff --git a/atom/.apm/vim-mode/0.54.0/package/package.json b/atom/.apm/vim-mode/0.54.0/package/package.json
new file mode 100644 (file)
index 0000000..39918b4
--- /dev/null
@@ -0,0 +1 @@
+{"name":"vim-mode","main":"./lib/vim-mode","version":"0.54.0","description":"Add vim modal control","license":"MIT","private":true,"repository":{"type":"git","url":"https://github.com/atom/vim-mode"},"engines":{"atom":">0.151.0"},"dependencies":{"underscore-plus":"1.x","event-kit":"^0.7.2"},"consumedServices":{"status-bar":{"versions":{"^1.0.0":"consumeStatusBar"}}},"providedServices":{"vim-mode":{"description":"","versions":{"0.1.0":"provideVimMode"}}},"devDependencies":{"coffeelint":"^1.10.1"},"readme":"## Vim Mode package [![Build Status](https://travis-ci.org/atom/vim-mode.svg?branch=master)](https://travis-ci.org/atom/vim-mode)\n\nProvides vim modal control for Atom, ideally blending the best of vim\nand Atom.\n\n### Installing\n\nUse the Atom package manager, which can be found in the Settings view or\nrun `apm install vim-mode` from the command line.\n\n### Current Status\n\nSizable portions of Vim's command mode work as you'd expect, including\nmany complex combinations. Even so, this package is far from finished (Vim\nwasn't built in a day).\n\nIf you want the vim ex line (for `:w`, `:s`, etc.), you can try [ex-mode](https://atom.io/packages/ex-mode)\nwhich works in conjuction with this plugin.\n\nCurrently, vim-mode requires soft line wraps to be disabled, and has some issues\nwith international keyboard layouts.\n\nIf there's a feature of Vim you're missing, it might just be that you use it\nmore often than other developers. Adding a feature can be quick and easy. Check\nout the [closed pull requests](https://github.com/atom/vim-mode/pulls?direction=desc&page=1&sort=created&state=closed)\nto see examples of community contributions. We're looking forward to yours, too.\n\n### Documentation\n\n* [Overview](https://github.com/atom/vim-mode/blob/master/docs/overview.md)\n* [Motions](https://github.com/atom/vim-mode/blob/master/docs/motions.md)\n* [Operators](https://github.com/atom/vim-mode/blob/master/docs/operators.md)\n* [Windows](https://github.com/atom/vim-mode/blob/master/docs/windows.md)\n* [Scrolling](https://github.com/atom/vim-mode/blob/master/docs/scrolling.md)\n\n### Development\n\n* Create a branch with your feature/fix.\n* Add a spec (take inspiration from the ones that are already there).\n* If you're adding a command be sure to update the appropriate file in\n  `docs/`\n* Create a PR.\n\nWhen in doubt, open a PR earlier rather than later so that you can receive\nfeedback from the community. We want to get your fix or feature included as much\nas you do.\n\nSee [the contribution guide](https://github.com/atom/vim-mode/blob/master/CONTRIBUTING.md).\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/atom/vim-mode/issues"},"homepage":"https://github.com/atom/vim-mode","_id":"vim-mode@0.54.0","_shasum":"619db8e3fab094d98ed3082c1ae8fe38c3659157","_resolved":"file:../d-11562-87009-1vvfmad/package.tgz","_from":"../d-11562-87009-1vvfmad/package.tgz"}
\ No newline at end of file
diff --git a/atom/.apm/vim-surround/0.7.2/package.tgz b/atom/.apm/vim-surround/0.7.2/package.tgz
new file mode 100644 (file)
index 0000000..8fb5a45
Binary files /dev/null and b/atom/.apm/vim-surround/0.7.2/package.tgz differ
diff --git a/atom/.apm/vim-surround/0.7.2/package/package.json b/atom/.apm/vim-surround/0.7.2/package/package.json
new file mode 100644 (file)
index 0000000..a4640ba
--- /dev/null
@@ -0,0 +1 @@
+{"name":"vim-surround","main":"./lib/vim-surround","version":"0.7.2","description":"vim-surround for Atom!","repository":{"type":"git","url":"https://github.com/gepoch/vim-surround"},"license":"MIT","keywords":["pair","parentheses","quotes","surround","vim"],"engines":{"atom":">0.50.0"},"dependencies":{},"consumedServices":{},"readme":"# Vim Surround for Atom [![Build Status](https://travis-ci.org/gepoch/vim-surround.svg?branch=master)](https://travis-ci.org/gepoch/vim-surround)\n\nSurround is an implementation of vim-surround for the [atom](http://atom.io)\neditor, creating a vim-surround with the power of Atom!\n\nYou should definitely have [vim-mode](https://atom.io/packages/vim-mode) for\nthis package to function properly, of course.\n\nInspiration from and kudos to the wonderful [vim-surround for\nvim](https://github.com/tpope/vim-surround)\n\nSee vim-surround on [github](https://github.com/gepoch/vim-surround) or\n[atom.io](https://atom.io/packages/vim-surround).\n\n## News\n\n* This package supports visual mode's `s )` set of commands for a configurable\n  set of pairs.\n\n* Next on the roadmap are pair deletions with `d )` and friends.\n\n* New in 0.4: Multiple cursors are now supported, and conveniently work just\n  like you think they do.\n\n* New in 0.5: Stable configuration changes and configurable surround key!\n\n* New in 0.7: Change surround and delete surround added.\n\n### Muscle Memory Compatability Note\n\nvim-surround uses a lowercase `s` instead of `S` for surround commands! This is\nconfigurable in the package settings, if you would like to set it to the\noriginal keybinding.\n\n## How to use Surround\n\n### Surrounding\n\nFor double quotes, highlight the string in visual mode and enter `s \"`.\n\n```\nHello world -> \"Hello world\"\n```\n\nFor parentheses there are two options. `s )` will surround as normal. `s (`\nwill pad with a space. All asymmetrical pairs have the secondary space-padded\nform.\n\nFor example:\n\n`s )`\n\n```\nHello world -> (Hello world)\n```\n\n`s (`\n\n```\nHello world -> ( Hello world )\n```\n\n### Changing Surrounding Pairs\n\nSuppose I want to make double quotes into single quotes. To do this, I should\nput my cursor inside the double quotes in question and enter `c s \" '`\n\n```\n\"Hello world\" -> 'Hello world'\n```\n\n### Deleting Surrounding Pairs\n\nTo delete the single quotes, place your cursor inside of them and enter `d s '`\n\n```\n'Hello world' -> Hello world\n```\n### Configuration\n\nCurrently, the following pairs work out of the box!:\n\n- ()\n- []\n- {}\n- \"\"\n- ''\n\nYou can add to the available pairs in atom's settings, and the commands will\nbe dynamically added to your keybindings.\n\nFor example if I'm working on Jinja templates, and I want to add the ability to\nsurround using `{%` and `%}` I would add this in my settings:\n\n```\n(), [], {}, \"\", '', {%%}\n```\n\nThen:\n\n`s % }`\n\n```\nHello world -> {%Hello world%}\n```\n\n`s { %`\n\n```\nHello world -> {% Hello world %}\n```\n\n### TODO\n\n- [x] Implement deleting surrounding pairs with `d s`\n- [x] Implement changing surrounding pairs with `c s`\n- [ ] Intelligent tag surrounding/deleting/replacing with `s <q>` and friends.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/gepoch/vim-surround/issues"},"homepage":"https://github.com/gepoch/vim-surround","_id":"vim-surround@0.7.2","_shasum":"34c0ad724ca6be2fbe6f708455bddc5f5964eb19","_resolved":"file:../d-11562-86965-1746m6m/package.tgz","_from":"../d-11562-86965-1746m6m/package.tgz"}
\ No newline at end of file
diff --git a/atom/.gitignore b/atom/.gitignore
new file mode 100644 (file)
index 0000000..81af3f6
--- /dev/null
@@ -0,0 +1,5 @@
+storage
+compile-cache
+dev
+.npm
+.node-gyp
diff --git a/atom/config.cson b/atom/config.cson
new file mode 100644 (file)
index 0000000..9722e60
--- /dev/null
@@ -0,0 +1,9 @@
+"*":
+  "exception-reporting":
+    userId: "467c762a-5570-76a2-5d1d-1119485c443c"
+  welcome:
+    showOnStartup: false
+  "vim-mode": {}
+  core: {}
+  editor:
+    invisibles: {}
diff --git a/atom/init.coffee b/atom/init.coffee
new file mode 100644 (file)
index 0000000..09dab00
--- /dev/null
@@ -0,0 +1,11 @@
+# Your init script
+#
+# Atom will evaluate this file each time a new window is opened. It is run
+# after packages are loaded/activated and after the previous editor state
+# has been restored.
+#
+# An example hack to log to the console when each text editor is saved.
+#
+# atom.workspace.observeTextEditors (editor) ->
+#   editor.onDidSave ->
+#     console.log "Saved! #{editor.getPath()}"
diff --git a/atom/keymap.cson b/atom/keymap.cson
new file mode 100644 (file)
index 0000000..dea689c
--- /dev/null
@@ -0,0 +1,25 @@
+# Your keymap
+#
+# Atom keymaps work similarly to style sheets. Just as style sheets use
+# selectors to apply styles to elements, Atom keymaps use selectors to associate
+# keystrokes with events in specific contexts.
+#
+# You can create a new keybinding in this file by typing "key" and then hitting
+# tab.
+#
+# Here's an example taken from Atom's built-in keymap:
+#
+# 'atom-text-editor':
+#   'enter': 'editor:newline'
+#
+# 'atom-workspace':
+#   'ctrl-shift-p': 'core:move-up'
+#   'ctrl-p': 'core:move-down'
+#
+# You can find more information about keymaps in these guides:
+# * https://atom.io/docs/latest/using-atom-basic-customization#customizing-key-bindings
+# * https://atom.io/docs/latest/behind-atom-keymaps-in-depth
+#
+# This file uses CoffeeScript Object Notation (CSON).
+# If you are unfamiliar with CSON, you can read more about it here:
+# https://github.com/bevry/cson#what-is-cson
diff --git a/atom/packages/README.md b/atom/packages/README.md
new file mode 100644 (file)
index 0000000..540b694
--- /dev/null
@@ -0,0 +1 @@
+All packages in this directory will be automatically loaded
diff --git a/atom/packages/ex-mode/.npmignore b/atom/packages/ex-mode/.npmignore
new file mode 100644 (file)
index 0000000..ade14b9
--- /dev/null
@@ -0,0 +1,3 @@
+.DS_Store
+npm-debug.log
+node_modules
diff --git a/atom/packages/ex-mode/CHANGELOG.md b/atom/packages/ex-mode/CHANGELOG.md
new file mode 100644 (file)
index 0000000..ad57372
--- /dev/null
@@ -0,0 +1,22 @@
+## 0.5.0
+* Comply with upcoming Atom API 1.0
+* Added `:d`
+* Fixes
+
+## 0.4.1 - C-C-C-Combo Edition
+* Added ex command parser, including ranges
+* Added `:wq`
+* Added `:s`
+* Alert on unknown or invalid command
+
+## 0.3.0 - Extrovert Edition
+* Register new commands from the outside world
+* Added `:tabn`, `:tabp`, `:e`, `:enew`, and a few aliases
+
+## 0.2.0 - NotAOneTrickPony Edition
+* Added `:quit`, `:tabedit`, `:wa`, `:split`, `:vsplit`
+* Commands can take arguments
+
+## 0.1.0 - First Release
+* Every feature added
+* Every bug fixed
diff --git a/atom/packages/ex-mode/LICENSE.md b/atom/packages/ex-mode/LICENSE.md
new file mode 100644 (file)
index 0000000..d8a9d9c
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2014 Loic Nageleisen
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+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/atom/packages/ex-mode/README.md b/atom/packages/ex-mode/README.md
new file mode 100644 (file)
index 0000000..b3084de
--- /dev/null
@@ -0,0 +1,29 @@
+# ex-mode package
+
+ex-mode for Atom's vim-mode
+
+## Use
+
+Install both [vim-mode](https://github.com/atom/vim-mode) and ex-mode. Type `:` in command mode. Enter `w` or `write`.
+
+## Extend
+
+Use the service to register commands, from your own package, or straight from `init.coffee`:
+
+```coffee
+# in Atom's init.coffee
+atom.packages.onDidActivatePackage (pack) ->
+  if pack.name == 'ex-mode'
+    Ex = pack.mainModule.provideEx()
+    Ex.registerCommand 'z', -> console.log("Zzzzzz...")
+```
+
+See `lib/ex.coffee` for some examples commands. Contributions are very welcome!
+
+## Status
+
+Groundwork is done. More ex commands are easy to add and will be coming as time permits and contributions come in.
+
+## License
+
+MIT
diff --git a/atom/packages/ex-mode/keymaps/ex-mode.cson b/atom/packages/ex-mode/keymaps/ex-mode.cson
new file mode 100644 (file)
index 0000000..5abddd0
--- /dev/null
@@ -0,0 +1,11 @@
+# Keybindings require three things to be fully defined: A selector that is
+# matched against the focused element, the keystroke and the command to
+# execute.
+#
+# Below is a basic keybinding which registers on all platforms by applying to
+# the root workspace element.
+
+# For more detailed documentation see
+# https://atom.io/docs/latest/advanced/keymaps
+'atom-text-editor.vim-mode:not(.insert-mode)':
+  ':': 'ex-mode:open'
diff --git a/atom/packages/ex-mode/lib/command-error.coffee b/atom/packages/ex-mode/lib/command-error.coffee
new file mode 100644 (file)
index 0000000..c9861e9
--- /dev/null
@@ -0,0 +1,5 @@
+class CommandError
+  constructor: (@message) ->
+    @name = 'Command Error'
+
+module.exports = CommandError
diff --git a/atom/packages/ex-mode/lib/command.coffee b/atom/packages/ex-mode/lib/command.coffee
new file mode 100644 (file)
index 0000000..115b273
--- /dev/null
@@ -0,0 +1,169 @@
+ExViewModel = require './ex-view-model'
+Ex = require './ex'
+Find = require './find'
+CommandError = require './command-error'
+
+class Command
+  constructor: (@editor, @exState) ->
+    @viewModel = new ExViewModel(@)
+
+  parseAddr: (str, curPos) ->
+    if str is '.'
+      addr = curPos.row
+    else if str is '$'
+      # Lines are 0-indexed in Atom, but 1-indexed in vim.
+      addr = @editor.getBuffer().lines.length - 1
+    else if str[0] in ["+", "-"]
+      addr = curPos.row + @parseOffset(str)
+    else if not isNaN(str)
+      addr = parseInt(str) - 1
+    else if str[0] is "'" # Parse Mark...
+      unless @vimState?
+        throw new CommandError("Couldn't get access to vim-mode.")
+      mark = @vimState.marks[str[1]]
+      unless mark?
+        throw new CommandError("Mark #{str} not set.")
+      addr = mark.bufferMarker.range.end.row
+    else if str[0] is "/"
+      addr = Find.findNextInBuffer(@editor.buffer, curPos, str[1...-1])
+      unless addr?
+        throw new CommandError("Pattern not found: #{str[1...-1]}")
+    else if str[0] is "?"
+      addr = Find.findPreviousInBuffer(@editor.buffer, curPos, str[1...-1])
+      unless addr?
+        throw new CommandError("Pattern not found: #{str[1...-1]}")
+
+    return addr
+
+  parseOffset: (str) ->
+    if str.length is 0
+      return 0
+    if str.length is 1
+      o = 1
+    else
+      o = parseInt(str[1..])
+    if str[0] is '+'
+      return o
+    else
+      return -o
+
+  execute: (input) ->
+    @vimState = @exState.globalExState.vim?.getEditorState(@editor)
+    # Command line parsing (mostly) following the rules at
+    # http://pubs.opengroup.org/onlinepubs/9699919799/utilities
+    # /ex.html#tag_20_40_13_03
+
+    # Steps 1/2: Leading blanks and colons are ignored.
+    cl = input.characters
+    cl = cl.replace(/^(:|\s)*/, '')
+    return unless cl.length > 0
+
+    # Step 3: If the first character is a ", ignore the rest of the line
+    if cl[0] is '"'
+      return
+
+    # Step 4: Address parsing
+    lastLine = @editor.getBuffer().lines.length - 1
+    if cl[0] is '%'
+      range = [0, lastLine]
+      cl = cl[1..]
+    else
+      addrPattern = ///^
+        (?:                               # First address
+        (
+        \.|                               # Current line
+        \$|                               # Last line
+        \d+|                              # n-th line
+        '[\[\]<>'`"^.(){}a-zA-Z]|         # Marks
+        /.*?[^\\]/|                       # Regex
+        \?.*?[^\\]\?|                     # Backwards search
+        [+-]\d*                           # Current line +/- a number of lines
+        )((?:\s*[+-]\d*)*)                # Line offset
+        )?
+        (?:,                              # Second address
+        (                                 # Same as first address
+        \.|
+        \$|
+        \d+|
+        '[\[\]<>'`"^.(){}a-zA-Z]|
+        /.*?[^\\]/|
+        \?.*?[^\\]\?|
+        [+-]\d*
+        )((?:\s*[+-]\d*)*)
+        )?
+      ///
+
+      [match, addr1, off1, addr2, off2] = cl.match(addrPattern)
+
+      curPos = @editor.getCursorBufferPosition()
+
+      if addr1?
+        address1 = @parseAddr(addr1, curPos)
+      else
+        # If no addr1 is given (,+3), assume it is '.'
+        address1 = curPos.row
+      if off1?
+        address1 += @parseOffset(off1)
+
+      address1 = 0 if address1 is -1
+
+      if address1 < 0 or address1 > lastLine
+        throw new CommandError('Invalid range')
+
+      if addr2?
+        address2 = @parseAddr(addr2, curPos)
+      if off2?
+        address2 += @parseOffset(off2)
+
+      if address2 < 0 or address2 > lastLine
+        throw new CommandError('Invalid range')
+
+      if address2 < address1
+        throw new CommandError('Backwards range given')
+
+      range = [address1, if address2? then address2 else address1]
+      cl = cl[match?.length..]
+
+    # Step 5: Leading blanks are ignored
+    cl = cl.trimLeft()
+
+    # Step 6a: If no command is specified, go to the last specified address
+    if cl.length is 0
+      @editor.setCursorBufferPosition([range[1], 0])
+      return
+
+    # Ignore steps 6b and 6c since they only make sense for print commands and
+    # print doesn't make sense
+
+    # Ignore step 7a since flags are only useful for print
+
+    # Step 7b: :k<valid mark> is equal to :mark <valid mark> - only a-zA-Z is
+    # in vim-mode for now
+    if cl.length is 2 and cl[0] is 'k' and /[a-z]/i.test(cl[1])
+      command = 'mark'
+      args = cl[1]
+    else if not /[a-z]/i.test(cl[0])
+      command = cl[0]
+      args = cl[1..]
+    else
+      [m, command, args] = cl.match(/^(\w+)(.*)/)
+
+    # If the command matches an existing one exactly, execute that one
+    if (func = Ex.singleton()[command])?
+      func(range, args)
+    else
+      # Step 8: Match command against existing commands
+      matching = (name for name, val of Ex.singleton() when \
+        name.indexOf(command) is 0)
+
+      matching.sort()
+
+      command = matching[0]
+
+      func = Ex.singleton()[command]
+      if func?
+        func(range, args)
+      else
+        throw new CommandError("Not an editor command: #{input.characters}")
+
+module.exports = Command
diff --git a/atom/packages/ex-mode/lib/ex-command-mode-input-element.coffee b/atom/packages/ex-mode/lib/ex-command-mode-input-element.coffee
new file mode 100644 (file)
index 0000000..91e0eb2
--- /dev/null
@@ -0,0 +1,64 @@
+class ExCommandModeInputElement extends HTMLDivElement
+  createdCallback: ->
+    @className = "command-mode-input"
+
+    @editorContainer = document.createElement("div")
+    @editorContainer.className = "editor-container"
+
+    @appendChild(@editorContainer)
+
+  initialize: (@viewModel, opts = {}) ->
+    if opts.class?
+      @editorContainer.classList.add(opts.class)
+
+    if opts.hidden
+      @editorContainer.style.height = "0px"
+
+    @editorElement = document.createElement "atom-text-editor"
+    @editorElement.classList.add('editor')
+    @editorElement.getModel().setMini(true)
+    @editorElement.setAttribute('mini', '')
+    @editorContainer.appendChild(@editorElement)
+
+    @singleChar = opts.singleChar
+    @defaultText = opts.defaultText ? ''
+
+    @panel = atom.workspace.addBottomPanel(item: this, priority: 100)
+
+    @focus()
+    @handleEvents()
+
+    this
+
+  handleEvents: ->
+    if @singleChar?
+      @editorElement.getModel().getBuffer().onDidChange (e) =>
+        @confirm() if e.newText
+    else
+      atom.commands.add(@editorElement, 'editor:newline', @confirm.bind(this))
+
+    atom.commands.add(@editorElement, 'core:confirm', @confirm.bind(this))
+    atom.commands.add(@editorElement, 'core:cancel', @cancel.bind(this))
+    atom.commands.add(@editorElement, 'blur', @cancel.bind(this))
+
+  confirm: ->
+    @value = @editorElement.getModel().getText() or @defaultText
+    @viewModel.confirm(this)
+    @removePanel()
+
+  focus: ->
+    @editorElement.focus()
+
+  cancel: (e) ->
+    @viewModel.cancel(this)
+    @removePanel()
+
+  removePanel: ->
+    atom.workspace.getActivePane().activate()
+    @panel.destroy()
+
+module.exports =
+document.registerElement("ex-command-mode-input"
+  extends: "div",
+  prototype: ExCommandModeInputElement.prototype
+)
diff --git a/atom/packages/ex-mode/lib/ex-mode.coffee b/atom/packages/ex-mode/lib/ex-mode.coffee
new file mode 100644 (file)
index 0000000..1a4979d
--- /dev/null
@@ -0,0 +1,36 @@
+GlobalExState = require './global-ex-state'
+ExState = require './ex-state'
+Ex = require './ex'
+{Disposable, CompositeDisposable} = require 'event-kit'
+
+module.exports = ExMode =
+  activate: (state) ->
+    @globalExState = new GlobalExState
+    @disposables = new CompositeDisposable
+    @exStates = new WeakMap
+
+    @disposables.add atom.workspace.observeTextEditors (editor) =>
+      return if editor.mini
+
+      element = atom.views.getView(editor)
+
+      if not @exStates.get(editor)
+        exState = new ExState(
+          element,
+          @globalExState
+        )
+
+        @exStates.set(editor, exState)
+
+        @disposables.add new Disposable =>
+          exState.destroy()
+
+  deactivate: ->
+    @disposables.dispose()
+
+  provideEx: ->
+    registerCommand: Ex.registerCommand.bind(Ex)
+
+  consumeVim: (vim) ->
+    @vim = vim
+    @globalExState.setVim(vim)
diff --git a/atom/packages/ex-mode/lib/ex-state.coffee b/atom/packages/ex-mode/lib/ex-state.coffee
new file mode 100644 (file)
index 0000000..b676535
--- /dev/null
@@ -0,0 +1,59 @@
+{Emitter, Disposable, CompositeDisposable} = require 'event-kit'
+
+Command = require './command'
+CommandError = require './command-error'
+
+class ExState
+  constructor: (@editorElement, @globalExState) ->
+    @emitter = new Emitter
+    @subscriptions = new CompositeDisposable
+    @editor = @editorElement.getModel()
+    @opStack = []
+    @history = []
+
+    @registerOperationCommands
+      open: (e) => new Command(@editor, @)
+
+  destroy: ->
+    @subscriptions.dispose()
+
+  getExHistoryItem: (index) ->
+    @globalExState.commandHistory[index]
+
+  pushExHistory: (command) ->
+    @globalExState.commandHistory.unshift command
+
+  registerOperationCommands: (commands) ->
+    for commandName, fn of commands
+      do (fn) =>
+        pushFn = (e) => @pushOperations(fn(e))
+        @subscriptions.add(
+          atom.commands.add(@editorElement, "ex-mode:#{commandName}", pushFn)
+        )
+
+  onDidFailToExecute: (fn) ->
+    @emitter.on('failed-to-execute', fn)
+
+  pushOperations: (operations) ->
+    @opStack.push operations
+
+    @processOpStack() if @opStack.length == 2
+
+  clearOpStack: ->
+    @opStack = []
+
+  processOpStack: ->
+    [command, input] = @opStack
+    if input.characters.length > 0
+      @history.unshift command
+      try
+        command.execute(input)
+      catch e
+        if (e instanceof CommandError)
+          atom.notifications.addError("Command error: #{e.message}")
+          @emitter.emit('failed-to-execute')
+        else
+          throw e
+    @clearOpStack()
+
+module.exports = ExState
diff --git a/atom/packages/ex-mode/lib/ex-view-model.coffee b/atom/packages/ex-mode/lib/ex-view-model.coffee
new file mode 100644 (file)
index 0000000..0c99be9
--- /dev/null
@@ -0,0 +1,35 @@
+{ViewModel, Input} = require './view-model'
+
+module.exports =
+class ExViewModel extends ViewModel
+  constructor: (@exCommand) ->
+    super(@exCommand, class: 'command')
+    @historyIndex = -1
+
+    atom.commands.add(@view.editorElement, 'core:move-up', @increaseHistoryEx)
+    atom.commands.add(@view.editorElement, 'core:move-down', @decreaseHistoryEx)
+
+  restoreHistory: (index) ->
+    @view.editorElement.getModel().setText(@history(index).value)
+
+  history: (index) ->
+    @exState.getExHistoryItem(index)
+
+  increaseHistoryEx: =>
+    if @history(@historyIndex + 1)?
+      @historyIndex += 1
+      @restoreHistory(@historyIndex)
+
+  decreaseHistoryEx: =>
+    if @historyIndex <= 0
+      # get us back to a clean slate
+      @historyIndex = -1
+      @view.editorElement.getModel().setText('')
+    else
+      @historyIndex -= 1
+      @restoreHistory(@historyIndex)
+
+  confirm: (view) =>
+    @value = @view.value
+    @exState.pushExHistory(@)
+    super(view)
diff --git a/atom/packages/ex-mode/lib/ex.coffee b/atom/packages/ex-mode/lib/ex.coffee
new file mode 100644 (file)
index 0000000..c159534
--- /dev/null
@@ -0,0 +1,231 @@
+path = require 'path'
+CommandError = require './command-error'
+
+trySave = (func) ->
+  deferred = Promise.defer()
+
+  try
+    func()
+    deferred.resolve()
+  catch error
+    if error.message.endsWith('is a directory')
+      atom.notifications.addWarning("Unable to save file: #{error.message}")
+    else if error.path?
+      if error.code is 'EACCES'
+        atom.notifications
+          .addWarning("Unable to save file: Permission denied '#{error.path}'")
+      else if error.code in ['EPERM', 'EBUSY', 'UNKNOWN', 'EEXIST']
+        atom.notifications.addWarning("Unable to save file '#{error.path}'",
+          detail: error.message)
+      else if error.code is 'EROFS'
+        atom.notifications.addWarning(
+          "Unable to save file: Read-only file system '#{error.path}'")
+    else if (errorMatch =
+        /ENOTDIR, not a directory '([^']+)'/.exec(error.message))
+      fileName = errorMatch[1]
+      atom.notifications.addWarning("Unable to save file: A directory in the "+
+        "path '#{fileName}' could not be written to")
+    else
+      throw error
+
+  deferred.promise
+
+getFullPath = (filePath) ->
+  return filePath if path.isAbsolute(filePath)
+  return path.join(atom.project.getPath(), filePath)
+
+replaceGroups = (groups, replString) ->
+  arr = replString.split('')
+  offset = 0
+  cdiff = 0
+
+  while (m = replString.match(/(?:[^\\]|^)\\(\d)/))?
+    group = groups[m[1]] or ''
+    i = replString.indexOf(m[0])
+    l = m[0].length
+    replString = replString.slice(i + l)
+    arr[i + offset...i + offset + l] = (if l is 2 then '' else m[0][0]) +
+      group
+    arr = arr.join('').split ''
+    offset += i + l - group.length
+
+  return arr.join('').replace(/\\\\(\d)/, '\\$1')
+
+class Ex
+  @singleton: =>
+    @ex ||= new Ex
+
+  @registerCommand: (name, func) =>
+    @singleton()[name] = func
+
+  quit: ->
+    atom.workspace.getActivePane().destroyActiveItem()
+
+  q: => @quit()
+
+  tabedit: (range, args) ->
+    args = args.trim()
+    filePaths = args.split(' ')
+    pane = atom.workspace.getActivePane()
+    if filePaths? and filePaths.length > 0
+      for file in filePaths
+        do -> atom.workspace.openURIInPane file, pane
+    else
+      atom.workspace.openURIInPane('', pane)
+
+  tabe: (args...) => @tabedit(args...)
+
+  tabnew: (args...) => @tabedit(args...)
+
+  tabclose: => @quit()
+
+  tabc: => @tabclose()
+
+  tabnext: ->
+    pane = atom.workspace.getActivePane()
+    pane.activateNextItem()
+
+  tabn: => @tabnext()
+
+  tabprevious: ->
+    pane = atom.workspace.getActivePane()
+    pane.activatePreviousItem()
+
+  tabp: => @tabprevious()
+
+  edit: (range, filePath) ->
+    filePath = filePath.trim()
+    if filePath.indexOf(' ') isnt -1
+      throw new CommandError('Only one file name allowed')
+    buffer = atom.workspace.getActiveTextEditor().buffer
+    filePath = buffer.getPath() if filePath is ''
+    buffer.setPath(getFullPath(filePath))
+    buffer.load()
+
+  e: (args...) => @edit(args...)
+
+  enew: ->
+    buffer = atom.workspace.getActiveTextEditor().buffer
+    buffer.setPath(undefined)
+    buffer.load()
+
+  write: (range, filePath) ->
+    filePath = filePath.trim()
+    deferred = Promise.defer()
+
+    pane = atom.workspace.getActivePane()
+    editor = atom.workspace.getActiveTextEditor()
+    if atom.workspace.getActiveTextEditor().getPath() isnt undefined
+      if filePath.length > 0
+        editorPath = editor.getPath()
+        fullPath = getFullPath(filePath)
+        trySave(-> editor.saveAs(fullPath))
+          .then ->
+            deferred.resolve()
+        editor.buffer.setPath(editorPath)
+      else
+        trySave(-> editor.save())
+          .then deferred.resolve
+    else
+      if filePath.length > 0
+        fullPath = getFullPath(filePath)
+        trySave(-> editor.saveAs(fullPath))
+          .then deferred.resolve
+      else
+        fullPath = atom.showSaveDialogSync()
+        if fullPath?
+          trySave(-> editor.saveAs(fullPath))
+            .then deferred.resolve
+
+    deferred.promise
+
+  w: (args...) =>
+    @write(args...)
+
+  wq: (args...) =>
+    @write(args...).then => @quit()
+
+  x: (args...) => @wq(args...)
+
+  wa: ->
+    atom.workspace.saveAll()
+
+  split: (range, args) ->
+    args = args.trim()
+    filePaths = args.split(' ')
+    filePaths = undefined if filePaths.length is 1 and filePaths[0] is ''
+    pane = atom.workspace.getActivePane()
+    if filePaths? and filePaths.length > 0
+      newPane = pane.splitUp()
+      for file in filePaths
+        do ->
+          atom.workspace.openURIInPane file, newPane
+    else
+      pane.splitUp(copyActiveItem: true)
+
+  sp: (args...) => @split(args...)
+
+  substitute: (range, args) ->
+    args = args.trimLeft()
+    delim = args[0]
+    if /[a-z]/i.test(delim)
+      throw new CommandError(
+        "Regular expressions can't be delimited by letters")
+    delimRE = new RegExp("[^\\\\]#{delim}")
+    spl = []
+    args_ = args[1..]
+    while (i = args_.search(delimRE)) isnt -1
+      spl.push args_[..i]
+      args_ = args_[i + 2..]
+    if args_.length is 0 and spl.length is 3
+      throw new CommandError('Trailing characters')
+    else if args_.length isnt 0
+      spl.push args_
+    if spl.length > 3
+      throw new CommandError('Trailing characters')
+    spl[1] ?= ''
+    spl[2] ?= ''
+
+    try
+      pattern = new RegExp(spl[0], spl[2])
+    catch e
+      if e.message.indexOf('Invalid flags supplied to RegExp constructor') is 0
+        # vim only says 'Trailing characters', but let's be more descriptive
+        throw new CommandError("Invalid flags: #{e.message[45..]}")
+      else if e.message.indexOf('Invalid regular expression: ') is 0
+        throw new CommandError("Invalid RegEx: #{e.message[27..]}")
+      else
+        throw e
+
+    buffer = atom.workspace.getActiveTextEditor().buffer
+    cp = buffer.history.createCheckpoint()
+    for line in [range[0]..range[1]]
+      buffer.scanInRange(pattern,
+        [[line, 0], [line, buffer.lines[line].length]],
+        ({match, matchText, range, stop, replace}) ->
+          replace(replaceGroups(match[..], spl[1]))
+      )
+    buffer.history.groupChangesSinceCheckpoint(cp)
+
+  s: (args...) => @substitute(args...)
+
+  vsplit: (range, args) ->
+    args = args.trim()
+    filePaths = args.split(' ')
+    filePaths = undefined if filePaths.length is 1 and filePaths[0] is ''
+    pane = atom.workspace.getActivePane()
+    if filePaths? and filePaths.length > 0
+      newPane = pane.splitLeft()
+      for file in filePaths
+        do ->
+          atom.workspace.openURIInPane file, newPane
+    else
+      pane.splitLeft(copyActiveItem: true)
+
+  vsp: (args...) => @vsplit(args...)
+
+  delete: (range) ->
+    range = [[range[0], 0], [range[1] + 1, 0]]
+    atom.workspace.getActiveTextEditor().buffer.setTextInRange(range, '')
+
+module.exports = Ex
diff --git a/atom/packages/ex-mode/lib/find.coffee b/atom/packages/ex-mode/lib/find.coffee
new file mode 100644 (file)
index 0000000..53dffc5
--- /dev/null
@@ -0,0 +1,26 @@
+module.exports = {
+  findInBuffer : (buffer, pattern) ->
+    found = []
+    buffer.scan(new RegExp(pattern, 'g'), (obj) -> found.push obj.range)
+    return found
+
+  findNextInBuffer : (buffer, curPos, pattern) ->
+    found = @findInBuffer(buffer, pattern)
+    more = (i for i in found when i.compare([curPos, curPos]) is 1)
+    if more.length > 0
+      return more[0].start.row
+    else if found.length > 0
+      return found[0].start.row
+    else
+      return null
+
+  findPreviousInBuffer : (buffer, curPos, pattern) ->
+    found = @findInBuffer(buffer, pattern)
+    less = (i for i in found when i.compare([curPos, curPos]) is -1)
+    if less.length > 0
+      return less[less.length - 1].start.row
+    else if found.length > 0
+      return found[found.length - 1].start.row
+    else
+      return null
+}
diff --git a/atom/packages/ex-mode/lib/global-ex-state.coffee b/atom/packages/ex-mode/lib/global-ex-state.coffee
new file mode 100644 (file)
index 0000000..be51b85
--- /dev/null
@@ -0,0 +1,5 @@
+class GlobalExState
+  commandHistory: []
+  setVim: (@vim) ->
+
+module.exports = GlobalExState
diff --git a/atom/packages/ex-mode/lib/view-model.coffee b/atom/packages/ex-mode/lib/view-model.coffee
new file mode 100644 (file)
index 0000000..af96e77
--- /dev/null
@@ -0,0 +1,26 @@
+ExCommandModeInputElement = require './ex-command-mode-input-element'
+
+class ViewModel
+  constructor: (@command, opts={}) ->
+    {@editor, @exState} = @command
+
+    @view = new ExCommandModeInputElement().initialize(@, opts)
+    @editor.commandModeInputView = @view
+    @exState.onDidFailToExecute => @view.remove()
+    @done = false
+
+  confirm: (view) ->
+    @exState.pushOperations(new Input(@view.value))
+    @done = true
+
+  cancel: (view) ->
+    unless @done
+      @exState.pushOperations(new Input(''))
+      @done = true
+
+class Input
+  constructor: (@characters) ->
+
+module.exports = {
+  ViewModel, Input
+}
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/LICENSE.md b/atom/packages/ex-mode/node_modules/atom-space-pen-views/LICENSE.md
new file mode 100644 (file)
index 0000000..4d231b4
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2014 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/README.md b/atom/packages/ex-mode/node_modules/atom-space-pen-views/README.md
new file mode 100644 (file)
index 0000000..4f8b31a
--- /dev/null
@@ -0,0 +1,215 @@
+# Atom SpacePen Views [![Build Status](https://travis-ci.org/atom/atom-space-pen-views.svg?branch=master)](https://travis-ci.org/atom/atom-space-pen-views)
+
+This library contains SpacePen views that used to be provided as part of Atom
+Core. `TextEditorView`, `SelectListView`, and `ScrollView` exports from the
+`atom` module are now deprecated will soon be removed, but can still be used in
+packages by depending on this library in your `package.json`.
+
+## TextEditorView
+
+A text editor can now be created in Atom by inserting an `<atom-text-editor>`
+tag in any location you want an editor. However, if you still want to use the
+SpacePen view in order to conveniently convert packages off the deprecated
+export, you can use this class.
+
+### Example
+
+```coffee
+{View} = require 'space-pen'
+{TextEditorView} = require 'atom-space-pen-views'
+
+class MyView extends View
+  @content: ->
+    @div =>
+      @div "Type your answer:"
+      @subview 'answer', new TextEditorView(mini: true)
+```
+
+### Constructor Params
+
+Pass an optional params object to the constructor with the following keys:
+
+* `mini` If `true`, will construct a single-line editor for use as an input
+    field.
+* `placeholderText` A string of placeholder text to appear in the editor when
+    empty
+
+### Methods
+
+#### `::getModel`
+
+Returns the underlying `TextEditor` model instance.
+
+## ScrollView
+
+ Handles several core events to update scroll position:
+
+ * `core:move-up` Scrolls the view up
+ * `core:move-down` Scrolls the view down
+ * `core:page-up` Scrolls the view up by the height of the page
+ * `core:page-down` Scrolls the view down by the height of the page
+ * `core:move-to-top` Scrolls the editor to the top
+ * `core:move-to-bottom` Scroll the editor to the bottom
+
+ Subclasses must call `super` if overriding the `initialize` method.
+
+### Example
+
+ ```coffee
+ {ScrollView} = require 'atom-space-pen-views'
+
+ class MyView extends ScrollView
+   @content: ->
+     @div()
+
+   initialize: ->
+     super
+     @text('super long content that will scroll')
+ ```
+
+## SelectListView
+
+Essential: Provides a view that renders a list of items with an editor that
+filters the items. Used by many packages such as the fuzzy-finder,
+command-palette, symbols-view and autocomplete.
+
+
+### Example
+
+```coffee
+{SelectListView} = require 'atom-space-pen-views'
+
+class MySelectListView extends SelectListView
+ initialize: ->
+   super
+   @addClass('overlay from-top')
+   @setItems(['Hello', 'World'])
+   atom.workspaceView.append(this)
+   @focusFilterEditor()
+
+ viewForItem: (item) ->
+   "<li>#{item}</li>"
+
+ confirmed: (item) ->
+   console.log("#{item} was selected")
+```
+
+## Methods
+
+### Subclasses Must Implement
+
+#### `::viewForItem`
+
+Create a view for the given model item. This method must be overridden by
+subclasses. Called when the item is about to appended to the list view.
+
+* `item` The model item being rendered. This will always be one of the items
+  previously passed to `::setItems`.
+
+Returns a String of HTML, DOM element, jQuery object, or View.
+
+#### `::confirmed`
+
+Callback function for when an item is selected. This method must
+be overridden by subclasses.
+
+* `item` The selected model item. This will always be one of the items
+  previously passed to `::setItems`.
+
+Returns a DOM element, jQuery object, or {View}.
+
+### Managing the list of items
+
+#### `::setItems`
+
+Set the array of items to display in the list. This should be
+model items, not actual views. `::viewForItem` will be called to render the
+item when it is being appended to the list view.
+
+* `items` The array of model items to display in the list (default: []).
+
+#### `::getSelectedItem`
+
+Get the model item that is currently selected in the list view.
+
+#### `::getFilterKey`
+
+Get the property name to use when filtering items.
+
+This method may be overridden by classes to allow fuzzy filtering based
+on a specific property of the item objects.
+
+For example if the objects you pass to {::setItems} are of the type
+`{"id": 3, "name": "Atom"}` then you would return `"name"` from this method
+to fuzzy filter by that property when text is entered into this view's
+editor.
+
+
+#### `::getFilterQuery`
+
+Get the filter query to use when fuzzy filtering the visible elements.
+
+By default this method returns the text in the mini editor but it can be
+overridden by subclasses if needed.
+
+Returns a {String} to use when fuzzy filtering the elements to display.
+
+
+#### `::setMaxItems`
+
+Set the maximum numbers of items to display in the list.
+
+This should be called before `setItems` is called or else the first time the
+list displays it will include all the items.
+
+* `maxItems` The maximum {Number} of items to display.
+
+#### `::populateList`
+
+Extended: Populate the list view with the model items previously set by calling
+{::setItems}.
+
+Subclasses may override this method but should always call `super`.
+
+### Messages
+
+#### `::setError`
+
+Set the error message to display.
+
+* `message` A string with an error message (default: '').
+
+#### `::setLoading`
+
+Set the loading message to display.
+
+* `message` A string with a loading message (default: '').
+
+#### `::getEmptyMessage`
+
+Get the message to display when there are no items.
+
+Subclasses may override this method to customize the message.
+
+* `itemCount` The {Number} of items in the array specified to {::setItems}
+* `filteredItemCount` The {Number} of items that pass the fuzzy filter test.
+
+Returns a {String} message (default: 'No matches found').
+
+### View Actions
+
+#### `::cancel`
+
+Cancel and close this select list view.
+
+This restores focus to the previously focused element if `::storeFocusedElement`
+was called prior to this view being attached.
+
+#### `::focusFilterEditor`
+
+Focus the fuzzy filter editor view.
+
+#### `::storeFocusedElement`
+
+Store the currently focused element. This element will be given back focus when
+`::cancel` is called.
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/main.js b/atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/main.js
new file mode 100644 (file)
index 0000000..ebdf364
--- /dev/null
@@ -0,0 +1,22 @@
+(function() {
+  var $, $$, $$$, View, jQuery, _ref;
+
+  _ref = require('space-pen'), View = _ref.View, jQuery = _ref.jQuery, $ = _ref.$, $$ = _ref.$$, $$$ = _ref.$$$;
+
+  exports.View = View;
+
+  exports.jQuery = jQuery;
+
+  exports.$ = $;
+
+  exports.$$ = $$;
+
+  exports.$$$ = $$$;
+
+  exports.TextEditorView = require('./text-editor-view');
+
+  exports.SelectListView = require('./select-list-view');
+
+  exports.ScrollView = require('./scroll-view');
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/scroll-view.js b/atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/scroll-view.js
new file mode 100644 (file)
index 0000000..b77ad49
--- /dev/null
@@ -0,0 +1,54 @@
+(function() {
+  var ScrollView, View,
+    __hasProp = {}.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; };
+
+  View = require('space-pen').View;
+
+  module.exports = ScrollView = (function(_super) {
+    __extends(ScrollView, _super);
+
+    function ScrollView() {
+      return ScrollView.__super__.constructor.apply(this, arguments);
+    }
+
+    ScrollView.prototype.initialize = function() {
+      return atom.commands.add(this.element, {
+        'core:move-up': (function(_this) {
+          return function() {
+            return _this.scrollUp();
+          };
+        })(this),
+        'core:move-down': (function(_this) {
+          return function() {
+            return _this.scrollDown();
+          };
+        })(this),
+        'core:page-up': (function(_this) {
+          return function() {
+            return _this.pageUp();
+          };
+        })(this),
+        'core:page-down': (function(_this) {
+          return function() {
+            return _this.pageDown();
+          };
+        })(this),
+        'core:move-to-top': (function(_this) {
+          return function() {
+            return _this.scrollToTop();
+          };
+        })(this),
+        'core:move-to-bottom': (function(_this) {
+          return function() {
+            return _this.scrollToBottom();
+          };
+        })(this)
+      });
+    };
+
+    return ScrollView;
+
+  })(View);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/select-list-view.js b/atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/select-list-view.js
new file mode 100644 (file)
index 0000000..152702a
--- /dev/null
@@ -0,0 +1,361 @@
+(function() {
+  var $, SelectListView, TextEditorView, View, fuzzyFilter, _ref,
+    __hasProp = {}.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; };
+
+  _ref = require('space-pen'), $ = _ref.$, View = _ref.View;
+
+  TextEditorView = require('./text-editor-view');
+
+  fuzzyFilter = null;
+
+  atom.themes.requireStylesheet(require.resolve('../stylesheets/select-list.less'));
+
+  module.exports = SelectListView = (function(_super) {
+    __extends(SelectListView, _super);
+
+    function SelectListView() {
+      return SelectListView.__super__.constructor.apply(this, arguments);
+    }
+
+    SelectListView.content = function() {
+      return this.div({
+        "class": 'select-list'
+      }, (function(_this) {
+        return function() {
+          _this.subview('filterEditorView', new TextEditorView({
+            mini: true
+          }));
+          _this.div({
+            "class": 'error-message',
+            outlet: 'error'
+          });
+          _this.div({
+            "class": 'loading',
+            outlet: 'loadingArea'
+          }, function() {
+            _this.span({
+              "class": 'loading-message',
+              outlet: 'loading'
+            });
+            return _this.span({
+              "class": 'badge',
+              outlet: 'loadingBadge'
+            });
+          });
+          return _this.ol({
+            "class": 'list-group',
+            outlet: 'list'
+          });
+        };
+      })(this));
+    };
+
+    SelectListView.prototype.maxItems = Infinity;
+
+    SelectListView.prototype.scheduleTimeout = null;
+
+    SelectListView.prototype.inputThrottle = 50;
+
+    SelectListView.prototype.cancelling = false;
+
+
+    /*
+    Section: Construction
+     */
+
+    SelectListView.prototype.initialize = function() {
+      this.filterEditorView.getModel().getBuffer().onDidChange((function(_this) {
+        return function() {
+          return _this.schedulePopulateList();
+        };
+      })(this));
+      this.filterEditorView.on('blur', (function(_this) {
+        return function(e) {
+          if (!_this.cancelling) {
+            return _this.cancel();
+          }
+        };
+      })(this));
+      atom.commands.add(this.element, {
+        'core:move-up': (function(_this) {
+          return function(event) {
+            _this.selectPreviousItemView();
+            return event.stopPropagation();
+          };
+        })(this),
+        'core:move-down': (function(_this) {
+          return function(event) {
+            _this.selectNextItemView();
+            return event.stopPropagation();
+          };
+        })(this),
+        'core:move-to-top': (function(_this) {
+          return function(event) {
+            _this.selectItemView(_this.list.find('li:first'));
+            _this.list.scrollToTop();
+            return event.stopPropagation();
+          };
+        })(this),
+        'core:move-to-bottom': (function(_this) {
+          return function(event) {
+            _this.selectItemView(_this.list.find('li:last'));
+            _this.list.scrollToBottom();
+            return event.stopPropagation();
+          };
+        })(this),
+        'core:confirm': (function(_this) {
+          return function(event) {
+            _this.confirmSelection();
+            return event.stopPropagation();
+          };
+        })(this),
+        'core:cancel': (function(_this) {
+          return function(event) {
+            _this.cancel();
+            return event.stopPropagation();
+          };
+        })(this)
+      });
+      this.list.on('mousedown', (function(_this) {
+        return function(_arg) {
+          var target;
+          target = _arg.target;
+          if (target === _this.list[0]) {
+            return false;
+          }
+        };
+      })(this));
+      this.list.on('mousedown', 'li', (function(_this) {
+        return function(e) {
+          _this.selectItemView($(e.target).closest('li'));
+          e.preventDefault();
+          return false;
+        };
+      })(this));
+      return this.list.on('mouseup', 'li', (function(_this) {
+        return function(e) {
+          if ($(e.target).closest('li').hasClass('selected')) {
+            _this.confirmSelection();
+          }
+          e.preventDefault();
+          return false;
+        };
+      })(this));
+    };
+
+
+    /*
+    Section: Methods that must be overridden
+     */
+
+    SelectListView.prototype.viewForItem = function(item) {
+      throw new Error("Subclass must implement a viewForItem(item) method");
+    };
+
+    SelectListView.prototype.confirmed = function(item) {
+      throw new Error("Subclass must implement a confirmed(item) method");
+    };
+
+
+    /*
+    Section: Managing the list of items
+     */
+
+    SelectListView.prototype.setItems = function(items) {
+      this.items = items != null ? items : [];
+      this.populateList();
+      return this.setLoading();
+    };
+
+    SelectListView.prototype.getSelectedItem = function() {
+      return this.getSelectedItemView().data('select-list-item');
+    };
+
+    SelectListView.prototype.getFilterKey = function() {};
+
+    SelectListView.prototype.getFilterQuery = function() {
+      return this.filterEditorView.getText();
+    };
+
+    SelectListView.prototype.setMaxItems = function(maxItems) {
+      this.maxItems = maxItems;
+    };
+
+    SelectListView.prototype.populateList = function() {
+      var filterQuery, filteredItems, i, item, itemView, _i, _ref1;
+      if (this.items == null) {
+        return;
+      }
+      filterQuery = this.getFilterQuery();
+      if (filterQuery.length) {
+        if (fuzzyFilter == null) {
+          fuzzyFilter = require('fuzzaldrin').filter;
+        }
+        filteredItems = fuzzyFilter(this.items, filterQuery, {
+          key: this.getFilterKey()
+        });
+      } else {
+        filteredItems = this.items;
+      }
+      this.list.empty();
+      if (filteredItems.length) {
+        this.setError(null);
+        for (i = _i = 0, _ref1 = Math.min(filteredItems.length, this.maxItems); 0 <= _ref1 ? _i < _ref1 : _i > _ref1; i = 0 <= _ref1 ? ++_i : --_i) {
+          item = filteredItems[i];
+          itemView = $(this.viewForItem(item));
+          itemView.data('select-list-item', item);
+          this.list.append(itemView);
+        }
+        return this.selectItemView(this.list.find('li:first'));
+      } else {
+        return this.setError(this.getEmptyMessage(this.items.length, filteredItems.length));
+      }
+    };
+
+
+    /*
+    Section: Messages to the user
+     */
+
+    SelectListView.prototype.setError = function(message) {
+      if (message == null) {
+        message = '';
+      }
+      if (message.length === 0) {
+        return this.error.text('').hide();
+      } else {
+        this.setLoading();
+        return this.error.text(message).show();
+      }
+    };
+
+    SelectListView.prototype.setLoading = function(message) {
+      if (message == null) {
+        message = '';
+      }
+      if (message.length === 0) {
+        this.loading.text("");
+        this.loadingBadge.text("");
+        return this.loadingArea.hide();
+      } else {
+        this.setError();
+        this.loading.text(message);
+        return this.loadingArea.show();
+      }
+    };
+
+    SelectListView.prototype.getEmptyMessage = function(itemCount, filteredItemCount) {
+      return 'No matches found';
+    };
+
+
+    /*
+    Section: View Actions
+     */
+
+    SelectListView.prototype.cancel = function() {
+      var filterEditorViewFocused;
+      this.list.empty();
+      this.cancelling = true;
+      filterEditorViewFocused = this.filterEditorView.hasFocus();
+      if (typeof this.cancelled === "function") {
+        this.cancelled();
+      }
+      this.filterEditorView.setText('');
+      if (filterEditorViewFocused) {
+        this.restoreFocus();
+      }
+      this.cancelling = false;
+      return clearTimeout(this.scheduleTimeout);
+    };
+
+    SelectListView.prototype.focusFilterEditor = function() {
+      return this.filterEditorView.focus();
+    };
+
+    SelectListView.prototype.storeFocusedElement = function() {
+      return this.previouslyFocusedElement = $(document.activeElement);
+    };
+
+
+    /*
+    Section: Private
+     */
+
+    SelectListView.prototype.selectPreviousItemView = function() {
+      var view;
+      view = this.getSelectedItemView().prev();
+      if (!view.length) {
+        view = this.list.find('li:last');
+      }
+      return this.selectItemView(view);
+    };
+
+    SelectListView.prototype.selectNextItemView = function() {
+      var view;
+      view = this.getSelectedItemView().next();
+      if (!view.length) {
+        view = this.list.find('li:first');
+      }
+      return this.selectItemView(view);
+    };
+
+    SelectListView.prototype.selectItemView = function(view) {
+      if (!view.length) {
+        return;
+      }
+      this.list.find('.selected').removeClass('selected');
+      view.addClass('selected');
+      return this.scrollToItemView(view);
+    };
+
+    SelectListView.prototype.scrollToItemView = function(view) {
+      var desiredBottom, desiredTop, scrollTop;
+      scrollTop = this.list.scrollTop();
+      desiredTop = view.position().top + scrollTop;
+      desiredBottom = desiredTop + view.outerHeight();
+      if (desiredTop < scrollTop) {
+        return this.list.scrollTop(desiredTop);
+      } else if (desiredBottom > this.list.scrollBottom()) {
+        return this.list.scrollBottom(desiredBottom);
+      }
+    };
+
+    SelectListView.prototype.restoreFocus = function() {
+      var _ref1;
+      return (_ref1 = this.previouslyFocusedElement) != null ? _ref1.focus() : void 0;
+    };
+
+    SelectListView.prototype.getSelectedItemView = function() {
+      return this.list.find('li.selected');
+    };
+
+    SelectListView.prototype.confirmSelection = function() {
+      var item;
+      item = this.getSelectedItem();
+      if (item != null) {
+        return this.confirmed(item);
+      } else {
+        return this.cancel();
+      }
+    };
+
+    SelectListView.prototype.schedulePopulateList = function() {
+      var populateCallback;
+      clearTimeout(this.scheduleTimeout);
+      populateCallback = (function(_this) {
+        return function() {
+          if (_this.isOnDom()) {
+            return _this.populateList();
+          }
+        };
+      })(this);
+      return this.scheduleTimeout = setTimeout(populateCallback, this.inputThrottle);
+    };
+
+    return SelectListView;
+
+  })(View);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/text-editor-view.js b/atom/packages/ex-mode/node_modules/atom-space-pen-views/lib/text-editor-view.js
new file mode 100644 (file)
index 0000000..e957a2b
--- /dev/null
@@ -0,0 +1,63 @@
+(function() {
+  var $, TextEditorView, View, _ref,
+    __hasProp = {}.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; };
+
+  _ref = require('space-pen'), View = _ref.View, $ = _ref.$;
+
+  module.exports = TextEditorView = (function(_super) {
+    __extends(TextEditorView, _super);
+
+    function TextEditorView(params) {
+      var attributes, mini, name, placeholderText, value;
+      if (params == null) {
+        params = {};
+      }
+      mini = params.mini, placeholderText = params.placeholderText, attributes = params.attributes;
+      if (attributes == null) {
+        attributes = {};
+      }
+      if (mini != null) {
+        attributes['mini'] = mini;
+      }
+      if (placeholderText != null) {
+        attributes['placeholder-text'] = placeholderText;
+      }
+      this.element = document.createElement('atom-text-editor');
+      for (name in attributes) {
+        value = attributes[name];
+        this.element.setAttribute(name, value);
+      }
+      if (this.element.__spacePenView != null) {
+        this.element.__spacePenView = this;
+        this.element.__allowViewAccess = true;
+      }
+      TextEditorView.__super__.constructor.apply(this, arguments);
+      this.setModel(this.element.getModel());
+    }
+
+    TextEditorView.prototype.setModel = function(model) {
+      this.model = model;
+    };
+
+    TextEditorView.prototype.getModel = function() {
+      return this.model;
+    };
+
+    TextEditorView.prototype.getText = function() {
+      return this.model.getText();
+    };
+
+    TextEditorView.prototype.setText = function(text) {
+      return this.model.setText(text);
+    };
+
+    TextEditorView.prototype.hasFocus = function() {
+      return this.element.hasFocus();
+    };
+
+    return TextEditorView;
+
+  })(View);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/LICENSE.md b/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/LICENSE.md
new file mode 100644 (file)
index 0000000..fbe20d2
--- /dev/null
@@ -0,0 +1,21 @@
+Copyright (c) 2009-2011 Joshaven Potter <yourtech@gmail.com>
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/README.md b/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/README.md
new file mode 100644 (file)
index 0000000..a50867b
--- /dev/null
@@ -0,0 +1,77 @@
+# fuzzaldrin
+
+[![Build Status](https://travis-ci.org/atom/fuzzaldrin.svg?branch=master)](https://travis-ci.org/atom/fuzzaldrin)
+[![Build status](https://ci.appveyor.com/api/projects/status/0ig71rjdgfm7y9c1/branch/master)](https://ci.appveyor.com/project/kevinsawicki/fuzzaldrin/branch/master)
+
+Fuzzy filtering and string scoring.
+
+This library is used by [Atom](http://atom.io) and so its focus will be on
+scoring and filtering paths, methods, and other things common when writing code.
+It therefore will specialize in handling common patterns in these types of
+strings such as characters like `/`, `-`, and `_`, and also handling of
+camel cased text.
+
+## Using
+
+```sh
+npm install fuzzaldrin
+```
+
+### filter(candidates, query, [options])
+
+Sort and filter the given candidates by matching them against the given query.
+
+* `candidates` - An array of strings or objects.
+* `query` - A string query to match each candidate against.
+* `options` - An optional object with the following keys:
+  * `key` - The property to use for scoring if the candidates are objects.
+  * `maxResults` - The maximum numbers of results to return.
+
+Returns an array of candidates sorted by best match against the query.
+
+```coffee
+{filter} = require 'fuzzaldrin'
+
+# With an array of strings
+candidates = ['Call', 'Me', 'Maybe']
+results = filter(candidates, 'me')
+console.log(results) # ['Me', 'Maybe']
+
+# With an array of objects
+candidates = [
+  {name: 'Call', id: 1}
+  {name: 'Me', id: 2}
+  {name: 'Maybe', id: 3}
+]
+results = filter(candidates, 'me', key: 'name')
+console.log(results) # [{name: 'Me', id: 2}, {name: 'Maybe', id: 3}]
+```
+
+### score(string, query)
+
+Score the given string against the given query.
+
+* `string` - The string the score.
+* `query` - The query to score the string against.
+
+```coffee
+{score} = require 'fuzzaldrin'
+
+score('Me', 'me')    # 0.17099999999999999
+score('Maybe', 'me') # 0.0693
+```
+
+## Developing
+
+```sh
+git clone https://github.com/atom/fuzzaldrin.git
+cd fuzzaldrin
+npm install
+npm test
+```
+
+You can run the benchmarks using:
+
+```sh
+npm run benchmark
+```
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/filter.js b/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/filter.js
new file mode 100644 (file)
index 0000000..55d928a
--- /dev/null
@@ -0,0 +1,45 @@
+(function() {
+  var pluckCandidates, scorer, sortCandidates;
+
+  scorer = require('./scorer');
+
+  pluckCandidates = function(a) {
+    return a.candidate;
+  };
+
+  sortCandidates = function(a, b) {
+    return b.score - a.score;
+  };
+
+  module.exports = function(candidates, query, queryHasSlashes, _arg) {
+    var candidate, key, maxResults, score, scoredCandidates, string, _i, _len, _ref;
+    _ref = _arg != null ? _arg : {}, key = _ref.key, maxResults = _ref.maxResults;
+    if (query) {
+      scoredCandidates = [];
+      for (_i = 0, _len = candidates.length; _i < _len; _i++) {
+        candidate = candidates[_i];
+        string = key != null ? candidate[key] : candidate;
+        if (!string) {
+          continue;
+        }
+        score = scorer.score(string, query, queryHasSlashes);
+        if (!queryHasSlashes) {
+          score = scorer.basenameScore(string, query, score);
+        }
+        if (score > 0) {
+          scoredCandidates.push({
+            candidate: candidate,
+            score: score
+          });
+        }
+      }
+      scoredCandidates.sort(sortCandidates);
+      candidates = scoredCandidates.map(pluckCandidates);
+    }
+    if (maxResults != null) {
+      candidates = candidates.slice(0, maxResults);
+    }
+    return candidates;
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/fuzzaldrin.js b/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/fuzzaldrin.js
new file mode 100644 (file)
index 0000000..41755d2
--- /dev/null
@@ -0,0 +1,80 @@
+(function() {
+  var PathSeparator, SpaceRegex, filter, matcher, scorer;
+
+  scorer = require('./scorer');
+
+  filter = require('./filter');
+
+  matcher = require('./matcher');
+
+  PathSeparator = require('path').sep;
+
+  SpaceRegex = /\ /g;
+
+  module.exports = {
+    filter: function(candidates, query, options) {
+      var queryHasSlashes;
+      if (query) {
+        queryHasSlashes = query.indexOf(PathSeparator) !== -1;
+        query = query.replace(SpaceRegex, '');
+      }
+      return filter(candidates, query, queryHasSlashes, options);
+    },
+    score: function(string, query) {
+      var queryHasSlashes, score;
+      if (!string) {
+        return 0;
+      }
+      if (!query) {
+        return 0;
+      }
+      if (string === query) {
+        return 2;
+      }
+      queryHasSlashes = query.indexOf(PathSeparator) !== -1;
+      query = query.replace(SpaceRegex, '');
+      score = scorer.score(string, query);
+      if (!queryHasSlashes) {
+        score = scorer.basenameScore(string, query, score);
+      }
+      return score;
+    },
+    match: function(string, query) {
+      var baseMatches, index, matches, queryHasSlashes, seen, _i, _ref, _results;
+      if (!string) {
+        return [];
+      }
+      if (!query) {
+        return [];
+      }
+      if (string === query) {
+        return (function() {
+          _results = [];
+          for (var _i = 0, _ref = string.length; 0 <= _ref ? _i < _ref : _i > _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); }
+          return _results;
+        }).apply(this);
+      }
+      queryHasSlashes = query.indexOf(PathSeparator) !== -1;
+      query = query.replace(SpaceRegex, '');
+      matches = matcher.match(string, query);
+      if (!queryHasSlashes) {
+        baseMatches = matcher.basenameMatch(string, query);
+        matches = matches.concat(baseMatches).sort(function(a, b) {
+          return a - b;
+        });
+        seen = null;
+        index = 0;
+        while (index < matches.length) {
+          if (index && seen === matches[index]) {
+            matches.splice(index, 1);
+          } else {
+            seen = matches[index];
+            index++;
+          }
+        }
+      }
+      return matches;
+    }
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/matcher.js b/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/matcher.js
new file mode 100644 (file)
index 0000000..57edff4
--- /dev/null
@@ -0,0 +1,73 @@
+(function() {
+  var PathSeparator;
+
+  PathSeparator = require('path').sep;
+
+  exports.basenameMatch = function(string, query) {
+    var base, index, lastCharacter, slashCount;
+    index = string.length - 1;
+    while (string[index] === PathSeparator) {
+      index--;
+    }
+    slashCount = 0;
+    lastCharacter = index;
+    base = null;
+    while (index >= 0) {
+      if (string[index] === PathSeparator) {
+        slashCount++;
+        if (base == null) {
+          base = string.substring(index + 1, lastCharacter + 1);
+        }
+      } else if (index === 0) {
+        if (lastCharacter < string.length - 1) {
+          if (base == null) {
+            base = string.substring(0, lastCharacter + 1);
+          }
+        } else {
+          if (base == null) {
+            base = string;
+          }
+        }
+      }
+      index--;
+    }
+    return exports.match(base, query, string.length - base.length);
+  };
+
+  exports.match = function(string, query, stringOffset) {
+    var character, indexInQuery, indexInString, lowerCaseIndex, matches, minIndex, queryLength, stringLength, upperCaseIndex, _i, _ref, _results;
+    if (stringOffset == null) {
+      stringOffset = 0;
+    }
+    if (string === query) {
+      return (function() {
+        _results = [];
+        for (var _i = stringOffset, _ref = stringOffset + string.length; stringOffset <= _ref ? _i < _ref : _i > _ref; stringOffset <= _ref ? _i++ : _i--){ _results.push(_i); }
+        return _results;
+      }).apply(this);
+    }
+    queryLength = query.length;
+    stringLength = string.length;
+    indexInQuery = 0;
+    indexInString = 0;
+    matches = [];
+    while (indexInQuery < queryLength) {
+      character = query[indexInQuery++];
+      lowerCaseIndex = string.indexOf(character.toLowerCase());
+      upperCaseIndex = string.indexOf(character.toUpperCase());
+      minIndex = Math.min(lowerCaseIndex, upperCaseIndex);
+      if (minIndex === -1) {
+        minIndex = Math.max(lowerCaseIndex, upperCaseIndex);
+      }
+      indexInString = minIndex;
+      if (indexInString === -1) {
+        return [];
+      }
+      matches.push(stringOffset + indexInString);
+      stringOffset += indexInString + 1;
+      string = string.substring(indexInString + 1, stringLength);
+    }
+    return matches;
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/scorer.js b/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/scorer.js
new file mode 100644 (file)
index 0000000..c9198ed
--- /dev/null
@@ -0,0 +1,92 @@
+(function() {
+  var PathSeparator, queryIsLastPathSegment;
+
+  PathSeparator = require('path').sep;
+
+  exports.basenameScore = function(string, query, score) {
+    var base, depth, index, lastCharacter, segmentCount, slashCount;
+    index = string.length - 1;
+    while (string[index] === PathSeparator) {
+      index--;
+    }
+    slashCount = 0;
+    lastCharacter = index;
+    base = null;
+    while (index >= 0) {
+      if (string[index] === PathSeparator) {
+        slashCount++;
+        if (base == null) {
+          base = string.substring(index + 1, lastCharacter + 1);
+        }
+      } else if (index === 0) {
+        if (lastCharacter < string.length - 1) {
+          if (base == null) {
+            base = string.substring(0, lastCharacter + 1);
+          }
+        } else {
+          if (base == null) {
+            base = string;
+          }
+        }
+      }
+      index--;
+    }
+    if (base === string) {
+      score *= 2;
+    } else if (base) {
+      score += exports.score(base, query);
+    }
+    segmentCount = slashCount + 1;
+    depth = Math.max(1, 10 - segmentCount);
+    score *= depth * 0.01;
+    return score;
+  };
+
+  exports.score = function(string, query) {
+    var character, characterScore, indexInQuery, indexInString, lowerCaseIndex, minIndex, queryLength, queryScore, stringLength, totalCharacterScore, upperCaseIndex, _ref;
+    if (string === query) {
+      return 1;
+    }
+    if (queryIsLastPathSegment(string, query)) {
+      return 1;
+    }
+    totalCharacterScore = 0;
+    queryLength = query.length;
+    stringLength = string.length;
+    indexInQuery = 0;
+    indexInString = 0;
+    while (indexInQuery < queryLength) {
+      character = query[indexInQuery++];
+      lowerCaseIndex = string.indexOf(character.toLowerCase());
+      upperCaseIndex = string.indexOf(character.toUpperCase());
+      minIndex = Math.min(lowerCaseIndex, upperCaseIndex);
+      if (minIndex === -1) {
+        minIndex = Math.max(lowerCaseIndex, upperCaseIndex);
+      }
+      indexInString = minIndex;
+      if (indexInString === -1) {
+        return 0;
+      }
+      characterScore = 0.1;
+      if (string[indexInString] === character) {
+        characterScore += 0.1;
+      }
+      if (indexInString === 0 || string[indexInString - 1] === PathSeparator) {
+        characterScore += 0.8;
+      } else if ((_ref = string[indexInString - 1]) === '-' || _ref === '_' || _ref === ' ') {
+        characterScore += 0.7;
+      }
+      string = string.substring(indexInString + 1, stringLength);
+      totalCharacterScore += characterScore;
+    }
+    queryScore = totalCharacterScore / queryLength;
+    return ((queryScore * (queryLength / stringLength)) + queryScore) / 2;
+  };
+
+  queryIsLastPathSegment = function(string, query) {
+    if (string[string.length - query.length - 1] === PathSeparator) {
+      return string.lastIndexOf(query) === string.length - query.length;
+    }
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/package.json b/atom/packages/ex-mode/node_modules/atom-space-pen-views/node_modules/fuzzaldrin/package.json
new file mode 100644 (file)
index 0000000..297615c
--- /dev/null
@@ -0,0 +1,71 @@
+{
+  "name": "fuzzaldrin",
+  "version": "2.1.0",
+  "description": "Fuzzy filtering and string scoring",
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/fuzzaldrin/raw/master/LICENSE.md"
+    }
+  ],
+  "main": "./lib/fuzzaldrin.js",
+  "scripts": {
+    "prepublish": "grunt prepublish",
+    "test": "grunt test",
+    "benchmark": "coffee benchmark/benchmark.coffee"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/fuzzaldrin.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/fuzzaldrin/issues"
+  },
+  "homepage": "http://atom.github.io/fuzzaldrin",
+  "keywords": [
+    "fuzzy",
+    "filter",
+    "stringscore"
+  ],
+  "devDependencies": {
+    "jasmine-focused": "1.x",
+    "grunt-contrib-coffee": "~0.9.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "coffee-script": "~1.7"
+  },
+  "_id": "fuzzaldrin@2.1.0",
+  "dist": {
+    "shasum": "90204c3e2fdaa6941bb28d16645d418063a90e9b",
+    "tarball": "http://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-2.1.0.tgz"
+  },
+  "_from": "fuzzaldrin@>=2.1.0 <3.0.0",
+  "_npmVersion": "1.4.4",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "probablycorey",
+      "email": "probablycorey@gmail.com"
+    },
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    }
+  ],
+  "directories": {},
+  "_shasum": "90204c3e2fdaa6941bb28d16645d418063a90e9b",
+  "_resolved": "https://registry.npmjs.org/fuzzaldrin/-/fuzzaldrin-2.1.0.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/package.json b/atom/packages/ex-mode/node_modules/atom-space-pen-views/package.json
new file mode 100644 (file)
index 0000000..c5be504
--- /dev/null
@@ -0,0 +1,71 @@
+{
+  "name": "atom-space-pen-views",
+  "version": "2.0.5",
+  "description": "Atom SpacePen views that used to live in core.",
+  "main": "./lib/main",
+  "scripts": {
+    "prepublish": "grunt clean lint coffee"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/atom-space-pen-views.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/atom-space-pen-views/issues"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/atom-space-pen-views/raw/master/LICENSE.md"
+    }
+  ],
+  "dependencies": {
+    "fuzzaldrin": "^2.1.0",
+    "space-pen": "^5.0.1"
+  },
+  "devDependencies": {
+    "coffee-script": "^1.7.0",
+    "jasmine-focused": "^1.0.4",
+    "grunt-contrib-coffee": "^0.9.0",
+    "grunt-cli": "^0.1.8",
+    "grunt": "^0.4.1",
+    "grunt-coffeelint": "^0.0.6",
+    "rimraf": "^2.2.2",
+    "coffee-cache": "^0.2.0",
+    "temp": "^0.6.0"
+  },
+  "gitHead": "0e5fc262cc62d453bbd6dce9ecaec5caddc553f9",
+  "homepage": "https://github.com/atom/atom-space-pen-views",
+  "_id": "atom-space-pen-views@2.0.5",
+  "_shasum": "4ef545a6ef396c8342717b0d9d2569577a2651f4",
+  "_from": "atom-space-pen-views@>=2.0.4 <3.0.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathan@github.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "maxbrunsfeld",
+      "email": "maxbrunsfeld@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "4ef545a6ef396c8342717b0d9d2569577a2651f4",
+    "tarball": "http://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.5.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/atom-space-pen-views/-/atom-space-pen-views-2.0.5.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/atom-space-pen-views/stylesheets/select-list.less b/atom/packages/ex-mode/node_modules/atom-space-pen-views/stylesheets/select-list.less
new file mode 100644 (file)
index 0000000..a9c43b8
--- /dev/null
@@ -0,0 +1,40 @@
+@import "ui-variables";
+@import "octicon-mixins";
+
+.select-list {
+  .loading {
+    .loading-message {
+      .octicon(hourglass);
+
+      &:before {
+        font-size: 1.1em;
+        width: 1.1em;
+        height: 1.1em;
+        margin-right: 5px;
+      }
+    }
+
+    .badge {
+      margin-left: 10px;
+    }
+  }
+
+  ol.list-group {
+    position: relative;
+    overflow-y: auto;
+    max-height: 312px;
+    margin: @component-padding 0 0 0;
+    padding: 0;
+
+    li {
+      display: block;
+
+      .primary-line,
+      .secondary-line {
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        overflow: hidden;
+      }
+    }
+  }
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/LICENSE.md b/atom/packages/ex-mode/node_modules/event-kit/LICENSE.md
new file mode 100644 (file)
index 0000000..4d231b4
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2014 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/event-kit/README.md b/atom/packages/ex-mode/node_modules/event-kit/README.md
new file mode 100644 (file)
index 0000000..0dc343d
--- /dev/null
@@ -0,0 +1,68 @@
+# event-kit
+
+This is a simple library for implementing event subscription APIs.
+
+## Implementing Event Subscription APIs
+
+```coffee
+{Emitter} = require 'event-kit'
+
+class User
+  constructor: ->
+     @emitter = new Emitter
+
+  onDidChangeName: (callback) ->
+     @emitter.on 'did-change-name', callback
+
+  setName: (name) ->
+     if name isnt @name
+       @name = name
+       @emitter.emit 'did-change-name', name
+     @name
+
+  destroy: ->
+    @emitter.dispose()
+```
+
+In the example above, we implement `::onDidChangeName` on the user object, which
+will register callbacks to be invoked whenever the user's name changes. To do
+so, we make use of an internal `Emitter` instance. We use `::on` to subscribe
+the given callback in `::onDidChangeName`, and `::emit` in `::setName` to notify
+subscribers. Finally, when the `User` instance is destroyed we call `::dispose`
+on the emitter to unsubscribe all subscribers.
+
+## Consuming Event Subscription APIs
+
+`Emitter::on` returns a `Disposable` instance, which has a `::dispose` method.
+To unsubscribe, simply call dispose on the returned object.
+
+```coffee
+subscription = user.onDidChangeName (name) -> console.log("My name is #{name}")
+# Later, to unsubscribe...
+subscription.dispose()
+```
+
+You can also use `CompositeDisposable` to combine disposable instances together.
+
+```coffee
+{CompositeDisposable} = require 'event-kit'
+
+subscriptions = new CompositeDisposable
+subscriptions.add user1.onDidChangeName (name) -> console.log("User 1: #{name}")
+subscriptions.add user2.onDidChangeName (name) -> console.log("User 2: #{name}")
+
+# Later, to unsubscribe from *both*...
+subscriptions.dispose()
+```
+
+## Creating Your Own Disposables
+
+Disposables are convenient ways to represent a resource you will no longer
+need at some point. You can instantiate a disposable with an action to take when
+no longer needed.
+
+```coffee
+{Disposable} = require 'event-kit'
+
+disposable = new Disposable => @destroyResource()
+```
diff --git a/atom/packages/ex-mode/node_modules/event-kit/api.json b/atom/packages/ex-mode/node_modules/event-kit/api.json
new file mode 100644 (file)
index 0000000..7a96959
--- /dev/null
@@ -0,0 +1,219 @@
+{
+  "classes": {
+    "CompositeDisposable": {
+      "name": "CompositeDisposable",
+      "filename": "src/composite-disposable.coffee",
+      "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L4",
+      "sections": [
+        {
+          "name": "Construction and Destruction",
+          "description": ""
+        },
+        {
+          "name": "Managing Disposables",
+          "description": ""
+        }
+      ],
+      "classMethods": [],
+      "instanceMethods": [
+        {
+          "name": "constructor",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L12",
+          "visibility": "Public",
+          "summary": "Construct an instance, optionally with one or more ",
+          "description": "Construct an instance, optionally with one or more "
+        },
+        {
+          "name": "dispose",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L19",
+          "visibility": "Public",
+          "summary": "Dispose all disposables added to this composite disposable.",
+          "description": "Dispose all disposables added to this composite disposable.\n\nIf this object has already been disposed, this method has no effect. "
+        },
+        {
+          "name": "add",
+          "sectionName": "Managing Disposables",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L35",
+          "visibility": "Public",
+          "summary": "Add a disposable to be disposed when the composite is disposed.",
+          "description": "Add a disposable to be disposed when the composite is disposed.\n\nIf this object has already been disposed, this method has no effect.",
+          "arguments": [
+            {
+              "name": "disposable",
+              "description": "{Disposable} instance or any object with a `.dispose()` method. ",
+              "type": "Disposable",
+              "isOptional": false
+            }
+          ]
+        },
+        {
+          "name": "remove",
+          "sectionName": "Managing Disposables",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L43",
+          "visibility": "Public",
+          "summary": "Remove a previously added disposable.",
+          "description": "Remove a previously added disposable.",
+          "arguments": [
+            {
+              "name": "disposable",
+              "description": "{Disposable} instance or any object with a `.dispose()` method. ",
+              "type": "Disposable",
+              "isOptional": false
+            }
+          ]
+        },
+        {
+          "name": "clear",
+          "sectionName": "Managing Disposables",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L49",
+          "visibility": "Public",
+          "summary": "Clear all disposables. They will not be disposed by the next call\nto dispose. ",
+          "description": "Clear all disposables. They will not be disposed by the next call\nto dispose. "
+        }
+      ],
+      "classProperties": [],
+      "instanceProperties": [],
+      "visibility": "Essential",
+      "summary": "An object that aggregates multiple {Disposable} instances together\ninto a single disposable, so they can all be disposed as a group. ",
+      "description": "An object that aggregates multiple {Disposable} instances together\ninto a single disposable, so they can all be disposed as a group. "
+    },
+    "Disposable": {
+      "name": "Disposable",
+      "filename": "src/disposable.coffee",
+      "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/disposable.coffee#L6",
+      "sections": [
+        {
+          "name": "Construction and Destruction",
+          "description": ""
+        }
+      ],
+      "classMethods": [],
+      "instanceMethods": [
+        {
+          "name": "constructor",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/disposable.coffee#L17",
+          "visibility": "Public",
+          "summary": "Construct a Disposable",
+          "description": "Construct a Disposable",
+          "arguments": [
+            {
+              "name": "disposalAction",
+              "description": "An action to perform when {::dispose} is called for the first time. ",
+              "type": null,
+              "isOptional": false
+            }
+          ]
+        },
+        {
+          "name": "dispose",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/disposable.coffee#L24",
+          "visibility": "Public",
+          "summary": "Perform the disposal action, indicating that the resource associated\nwith this disposable is no longer needed.",
+          "description": "Perform the disposal action, indicating that the resource associated\nwith this disposable is no longer needed.\n\nYou can call this method more than once, but the disposal action will only\nbe performed the first time. "
+        }
+      ],
+      "classProperties": [],
+      "instanceProperties": [],
+      "visibility": "Essential",
+      "summary": "A handle to a resource that can be disposed. For example,\n{Emitter::on} returns disposables representing subscriptions. ",
+      "description": "A handle to a resource that can be disposed. For example,\n{Emitter::on} returns disposables representing subscriptions. "
+    },
+    "Emitter": {
+      "name": "Emitter",
+      "filename": "src/emitter.coffee",
+      "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/emitter.coffee#L25",
+      "sections": [
+        {
+          "name": "Construction and Destruction",
+          "description": ""
+        },
+        {
+          "name": "Event Subscription",
+          "description": ""
+        },
+        {
+          "name": "Event Emission",
+          "description": ""
+        }
+      ],
+      "classMethods": [],
+      "instanceMethods": [
+        {
+          "name": "constructor",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/emitter.coffee#L37",
+          "visibility": "Public",
+          "summary": "Construct an emitter.",
+          "description": "Construct an emitter.\n\n```coffee\n@emitter = new Emitter()\n```"
+        },
+        {
+          "name": "dispose",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/emitter.coffee#L41",
+          "visibility": "Public",
+          "summary": "Unsubscribe all handlers. ",
+          "description": "Unsubscribe all handlers. "
+        },
+        {
+          "name": "on",
+          "sectionName": "Event Subscription",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/emitter.coffee#L58",
+          "visibility": "Public",
+          "summary": "Register the given handler function to be invoked whenever events by\nthe given name are emitted via {::emit}.",
+          "description": "Register the given handler function to be invoked whenever events by\nthe given name are emitted via {::emit}.",
+          "arguments": [
+            {
+              "name": "eventName",
+              "description": "{String} naming the event that you want to invoke the handler when emitted.",
+              "type": "String",
+              "isOptional": false
+            },
+            {
+              "name": "handler",
+              "description": "{Function} to invoke when {::emit} is called with the given event name.",
+              "type": "Function",
+              "isOptional": false
+            }
+          ],
+          "returnValues": [
+            {
+              "type": "Disposable",
+              "description": "Returns a {Disposable} on which `.dispose()` can be called to unsubscribe."
+            }
+          ]
+        },
+        {
+          "name": "emit",
+          "sectionName": "Event Emission",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/emitter.coffee#L91",
+          "visibility": "Public",
+          "summary": "Invoke handlers registered via {::on} for the given event name.",
+          "description": "Invoke handlers registered via {::on} for the given event name.",
+          "arguments": [
+            {
+              "name": "eventName",
+              "description": "The name of the event to emit. Handlers registered with {::on} for the same name will be invoked.",
+              "type": null,
+              "isOptional": false
+            },
+            {
+              "name": "value",
+              "description": "Callbacks will be invoked with this value as an argument. ",
+              "type": null,
+              "isOptional": false
+            }
+          ]
+        }
+      ],
+      "classProperties": [],
+      "instanceProperties": [],
+      "visibility": "Essential",
+      "summary": "Utility class to be used when implementing event-based APIs that\nallows for handlers registered via `::on` to be invoked with calls to\n`::emit`. Instances of this class are intended to be used internally by\nclasses that expose an event-based API.",
+      "description": "Utility class to be used when implementing event-based APIs that\nallows for handlers registered via `::on` to be invoked with calls to\n`::emit`. Instances of this class are intended to be used internally by\nclasses that expose an event-based API.\n\nFor example:\n\n```coffee\nclass User\n  constructor: ->\n    @emitter = new Emitter\n\n  onDidChangeName: (callback) ->\n    @emitter.on 'did-change-name', callback\n\n  setName: (name) ->\n    if name isnt @name\n      @name = name\n      @emitter.emit 'did-change-name', name\n    @name\n```"
+    }
+  }
+}
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/event-kit/lib/composite-disposable.js b/atom/packages/ex-mode/node_modules/event-kit/lib/composite-disposable.js
new file mode 100644 (file)
index 0000000..4235b96
--- /dev/null
@@ -0,0 +1,61 @@
+(function() {
+  var CompositeDisposable;
+
+  module.exports = CompositeDisposable = (function() {
+    CompositeDisposable.prototype.disposed = false;
+
+
+    /*
+    Section: Construction and Destruction
+     */
+
+    function CompositeDisposable() {
+      var disposable, _i, _len;
+      this.disposables = [];
+      for (_i = 0, _len = arguments.length; _i < _len; _i++) {
+        disposable = arguments[_i];
+        this.add(disposable);
+      }
+    }
+
+    CompositeDisposable.prototype.dispose = function() {
+      var disposable, _i, _len, _ref;
+      if (!this.disposed) {
+        this.disposed = true;
+        _ref = this.disposables;
+        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+          disposable = _ref[_i];
+          disposable.dispose();
+        }
+        return this.clear();
+      }
+    };
+
+
+    /*
+    Section: Managing Disposables
+     */
+
+    CompositeDisposable.prototype.add = function(disposable) {
+      if (!this.disposed) {
+        return this.disposables.push(disposable);
+      }
+    };
+
+    CompositeDisposable.prototype.remove = function(disposable) {
+      var index;
+      index = this.disposables.indexOf(disposable);
+      if (index !== -1) {
+        return this.disposables.splice(index, 1);
+      }
+    };
+
+    CompositeDisposable.prototype.clear = function() {
+      return this.disposables.length = 0;
+    };
+
+    return CompositeDisposable;
+
+  })();
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/lib/disposable.js b/atom/packages/ex-mode/node_modules/event-kit/lib/disposable.js
new file mode 100644 (file)
index 0000000..4ccb3da
--- /dev/null
@@ -0,0 +1,34 @@
+(function() {
+  var Disposable, Grim;
+
+  Grim = require('grim');
+
+  module.exports = Disposable = (function() {
+    Disposable.prototype.disposed = false;
+
+
+    /*
+    Section: Construction and Destruction
+     */
+
+    function Disposable(disposalAction) {
+      this.disposalAction = disposalAction;
+    }
+
+    Disposable.prototype.dispose = function() {
+      if (!this.disposed) {
+        this.disposed = true;
+        return typeof this.disposalAction === "function" ? this.disposalAction() : void 0;
+      }
+    };
+
+    Disposable.prototype.off = function() {
+      Grim.deprecate("Use ::dispose to cancel subscriptions instead of ::off");
+      return this.dispose();
+    };
+
+    return Disposable;
+
+  })();
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/lib/emitter.js b/atom/packages/ex-mode/node_modules/event-kit/lib/emitter.js
new file mode 100644 (file)
index 0000000..1c8336a
--- /dev/null
@@ -0,0 +1,80 @@
+(function() {
+  var Disposable, Emitter;
+
+  Disposable = require('./disposable');
+
+  module.exports = Emitter = (function() {
+    Emitter.prototype.isDisposed = false;
+
+
+    /*
+    Section: Construction and Destruction
+     */
+
+    function Emitter() {
+      this.handlersByEventName = {};
+    }
+
+    Emitter.prototype.dispose = function() {
+      this.handlersByEventName = null;
+      return this.isDisposed = true;
+    };
+
+
+    /*
+    Section: Event Subscription
+     */
+
+    Emitter.prototype.on = function(eventName, handler) {
+      var currentHandlers;
+      if (this.isDisposed) {
+        throw new Error("Emitter has been disposed");
+      }
+      if (typeof handler !== 'function') {
+        throw new Error("Handler must be a function");
+      }
+      if (currentHandlers = this.handlersByEventName[eventName]) {
+        this.handlersByEventName[eventName] = currentHandlers.concat(handler);
+      } else {
+        this.handlersByEventName[eventName] = [handler];
+      }
+      return new Disposable(this.off.bind(this, eventName, handler));
+    };
+
+    Emitter.prototype.off = function(eventName, handlerToRemove) {
+      var handler, newHandlers, oldHandlers, _i, _len;
+      if (this.isDisposed) {
+        return;
+      }
+      if (oldHandlers = this.handlersByEventName[eventName]) {
+        newHandlers = [];
+        for (_i = 0, _len = oldHandlers.length; _i < _len; _i++) {
+          handler = oldHandlers[_i];
+          if (handler !== handlerToRemove) {
+            newHandlers.push(handler);
+          }
+        }
+        return this.handlersByEventName[eventName] = newHandlers;
+      }
+    };
+
+
+    /*
+    Section: Event Emission
+     */
+
+    Emitter.prototype.emit = function(eventName, value) {
+      var handler, handlers, _i, _len, _ref;
+      if (handlers = (_ref = this.handlersByEventName) != null ? _ref[eventName] : void 0) {
+        for (_i = 0, _len = handlers.length; _i < _len; _i++) {
+          handler = handlers[_i];
+          handler(value);
+        }
+      }
+    };
+
+    return Emitter;
+
+  })();
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/lib/event-kit.js b/atom/packages/ex-mode/node_modules/event-kit/lib/event-kit.js
new file mode 100644 (file)
index 0000000..8250ea0
--- /dev/null
@@ -0,0 +1,8 @@
+(function() {
+  exports.Emitter = require('./emitter');
+
+  exports.Disposable = require('./disposable');
+
+  exports.CompositeDisposable = require('./composite-disposable');
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/LICENSE.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/LICENSE.md
new file mode 100644 (file)
index 0000000..4d231b4
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2014 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/README.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/README.md
new file mode 100644 (file)
index 0000000..c7a023c
--- /dev/null
@@ -0,0 +1,21 @@
+# Grim [![Build Status](https://travis-ci.org/atom/grim.svg)](https://travis-ci.org/atom/grim)
+
+Log deprecate calls
+
+## Installing
+
+```sh
+npm install grim
+```
+
+## Usage
+
+```javascript
+Grim = require('grim')
+
+function someOldMethod() {
+  Grim.deprecate("Use theNewMethod instead.")
+}
+```
+
+To view all calls to deprecated methods use `Grim.logDeprecations()` or get direct access to the deprecated calls by using `Grim.getDeprecations()`
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/lib/deprecation.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/lib/deprecation.js
new file mode 100644 (file)
index 0000000..c366d1a
--- /dev/null
@@ -0,0 +1,122 @@
+(function() {
+  var Deprecation, _;
+
+  _ = require('underscore-plus');
+
+  module.exports = Deprecation = (function() {
+    Deprecation.generateStack = function() {
+      var error, originalPrepareStackTrace, stack;
+      originalPrepareStackTrace = Error.prepareStackTrace;
+      Error.prepareStackTrace = function(error, stack) {
+        return stack;
+      };
+      error = new Error();
+      Error.captureStackTrace(error);
+      stack = error.stack.slice(1);
+      Error.prepareStackTrace = originalPrepareStackTrace;
+      return stack;
+    };
+
+    Deprecation.getFunctionNameFromCallsite = function(callsite) {
+      var _ref, _ref1, _ref2;
+      if (callsite.isToplevel()) {
+        return (_ref = callsite.getFunctionName()) != null ? _ref : '<unknown>';
+      } else {
+        if (callsite.isConstructor()) {
+          return "new " + (callsite.getFunctionName());
+        } else if (callsite.getMethodName() && !callsite.getFunctionName()) {
+          return callsite.getMethodName();
+        } else {
+          return "" + (callsite.getTypeName()) + "." + ((_ref1 = (_ref2 = callsite.getMethodName()) != null ? _ref2 : callsite.getFunctionName()) != null ? _ref1 : '<anonymous>');
+        }
+      }
+    };
+
+    function Deprecation(message) {
+      this.message = message;
+      this.callCount = 0;
+      this.stacks = [];
+    }
+
+    Deprecation.prototype.getFunctionNameFromCallsite = function(callsite) {
+      return Deprecation.getFunctionNameFromCallsite(callsite);
+    };
+
+    Deprecation.prototype.getLocationFromCallsite = function(callsite) {
+      if (callsite.isNative()) {
+        return "native";
+      } else if (callsite.isEval()) {
+        return "eval at " + (this.getLocationFromCallsite(callsite.getEvalOrigin()));
+      } else {
+        return "" + (callsite.getFileName()) + ":" + (callsite.getLineNumber()) + ":" + (callsite.getColumnNumber());
+      }
+    };
+
+    Deprecation.prototype.getOriginName = function() {
+      return this.originName;
+    };
+
+    Deprecation.prototype.getMessage = function() {
+      return this.message;
+    };
+
+    Deprecation.prototype.getStacks = function() {
+      return _.clone(this.stacks);
+    };
+
+    Deprecation.prototype.getCallCount = function() {
+      return this.callCount;
+    };
+
+    Deprecation.prototype.addStack = function(stack) {
+      var existingStack;
+      if (this.originName == null) {
+        this.originName = this.getFunctionNameFromCallsite(stack[0]);
+      }
+      stack = this.parseStack(stack);
+      if (existingStack = this.isStackUnique(stack)) {
+        existingStack.callCount++;
+      } else {
+        this.stacks.push(stack);
+      }
+      return this.callCount++;
+    };
+
+    Deprecation.prototype.parseStack = function(stack) {
+      stack = stack.map((function(_this) {
+        return function(callsite) {
+          return {
+            functionName: _this.getFunctionNameFromCallsite(callsite),
+            location: _this.getLocationFromCallsite(callsite),
+            fileName: callsite.getFileName()
+          };
+        };
+      })(this));
+      stack.callCount = 1;
+      return stack;
+    };
+
+    Deprecation.prototype.isStackUnique = function(stack) {
+      var stacks;
+      stacks = this.stacks.filter(function(s) {
+        var callsite, functionName, i, location, _i, _len, _ref;
+        if (s.length !== stack.length) {
+          return false;
+        }
+        for (i = _i = 0, _len = s.length; _i < _len; i = ++_i) {
+          _ref = s[i], functionName = _ref.functionName, location = _ref.location;
+          callsite = stack[i];
+          if (!(functionName === callsite.functionName && location === callsite.location)) {
+            return false;
+          }
+        }
+        return true;
+      });
+      return stacks[0];
+    };
+
+    return Deprecation;
+
+  })();
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/lib/grim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/lib/grim.js
new file mode 100644 (file)
index 0000000..eee1d91
--- /dev/null
@@ -0,0 +1,61 @@
+(function() {
+  var Deprecation, Emitter, grim, _;
+
+  _ = require('underscore-plus');
+
+  Emitter = require('emissary').Emitter;
+
+  Deprecation = require('./deprecation');
+
+  if (global.__grim__ == null) {
+    grim = global.__grim__ = {
+      grimDeprecations: [],
+      maxDeprecationCallCount: function() {
+        return 250;
+      },
+      getDeprecations: function() {
+        return _.clone(grim.grimDeprecations);
+      },
+      getDeprecationsLength: function() {
+        return grim.grimDeprecations.length;
+      },
+      clearDeprecations: function() {
+        return grim.grimDeprecations = [];
+      },
+      logDeprecations: function() {
+        var deprecation, deprecations, _i, _len, _results;
+        deprecations = grim.getDeprecations();
+        deprecations.sort(function(a, b) {
+          return b.getCallCount() - a.getCallCount();
+        });
+        console.warn("\nCalls to deprecated functions\n-----------------------------");
+        _results = [];
+        for (_i = 0, _len = deprecations.length; _i < _len; _i++) {
+          deprecation = deprecations[_i];
+          _results.push(console.warn("(" + (deprecation.getCallCount()) + ") " + (deprecation.getOriginName()) + " : " + (deprecation.getMessage()), deprecation));
+        }
+        return _results;
+      },
+      deprecate: function(message) {
+        var deprecation, deprecations, methodName, stack;
+        stack = Deprecation.generateStack().slice(1);
+        methodName = Deprecation.getFunctionNameFromCallsite(stack[0]);
+        deprecations = grim.grimDeprecations;
+        if (!(deprecation = _.find(deprecations, function(d) {
+          return d.getOriginName() === methodName;
+        }))) {
+          deprecation = new Deprecation(message);
+          grim.grimDeprecations.push(deprecation);
+        }
+        if (deprecation.getCallCount() < grim.maxDeprecationCallCount()) {
+          deprecation.addStack(stack);
+          return grim.emit("updated", deprecation);
+        }
+      }
+    };
+    Emitter.extend(grim);
+  }
+
+  module.exports = global.__grim__;
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/LICENSE.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/README.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/README.md
new file mode 100644 (file)
index 0000000..9415c13
--- /dev/null
@@ -0,0 +1,49 @@
+# Emissary – Mixins for Events [![Build Status](https://travis-ci.org/atom/emissary.svg?branch=master)](https://travis-ci.org/atom/emissary)
+
+**Achtung!** This library is currently used in Atom and various Atom dependencies, but our long-term plan is to transition away from it in favor of the simpler [event-kit](https://github.com/atom/event-kit) library. Don't depend on supporting this library forever.
+
+**Achtung Again!** The Subscriber mixin requires ES6 Harmony WeakMaps. To enable them, run your program with the  `node --harmony_collections` flag. If you're using it in a node framework such as jasmine, run its script with the flag enabled as follows: `node --harmony-collections .bin/jasmine-node specs`.
+
+## Emitter
+
+Emitter is backward-compatible with Node's event emitter, but offers more functionality. You can construct standalone `Emitter` instances or use it as a mixin.
+
+* `Emitter.extend(object)`
+  Turns the given object into an emitter by adding the appropriate methods.
+
+* `Emitter.includeInto(class)`
+  Turns the class into an emitter by extending its prototype.
+
+* `::on(eventNames, handler)`
+  Subscribe to one or more events. Events names are separated by spaces, and can optionally be namespaced with a dot-suffix. E.g. `event1 event2.namespace`.
+
+* `::once(eventName, handler)`
+  Like `::on`, but only fires the handler once before unsubscribing automatically.
+
+* `::off(eventNames[, handler])`
+  Unsubscribe to one or more events. Event names are separated by spaces. Passing a non-namespaced event name unsubscribes from every namespace for that event. Passing only a namespace unsubscribes from that entire namespace. Passing a handler removes only a subscription corresponding to the given event name(s) and that handler.
+
+* `::emit(eventName[, data...])`
+  Emit an event with the given name. If the event name is namespaced, only calls handlers for the event associated with the namespace, otherwise it fires all handlers. Handlers are called with zero or more data arguments provided after the event name.
+
+* `::pauseEvents()`
+  Buffers events instead of emitting them until `::resumeEvents` is called.
+
+* `::resumeEvents()`
+  Emits all events buffered since pausing and resumes normal emitting behavior.
+
+* `::getSubscriptionCount()`
+  Get the total number of handlers registered on the emitter.
+
+## Subscriber
+
+Subscriber works in partnership with an emitter or any object supporting subscription cancellation with `.off`. This includes standard Node event emitters and jQuery objects.
+
+* `::subscribe(object, eventNames, handler)`
+  Subscribe to the given event name(s) on the given object.
+
+* `::subscribeWith(object, methodName, eventNames, handler)`
+  Subscribe to the given object with a method other than `.on`.
+
+* `::unsubscribe([object])`
+  Cancel subscriptions previously registered with `::subscribe`. If an object is given, only unsubscribe from that object. If called without an object, unsubscribe from everything.
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/behavior.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/behavior.js
new file mode 100644 (file)
index 0000000..863c2f2
--- /dev/null
@@ -0,0 +1,120 @@
+(function() {
+  var Behavior, PropertyAccessors, Signal, helpers, isEqual,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  isEqual = require('underscore-plus').isEqual;
+
+  PropertyAccessors = require('property-accessors');
+
+  Signal = require('./signal');
+
+  module.exports = Behavior = (function(_super) {
+    __extends(Behavior, _super);
+
+    PropertyAccessors.includeInto(Behavior);
+
+    function Behavior() {
+      var args, subscribeCallback, _ref;
+      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+      if (typeof ((_ref = args[0]) != null ? _ref.call : void 0) !== 'function') {
+        this.value = args.shift();
+      }
+      Behavior.__super__.constructor.call(this, subscribeCallback = args.shift());
+    }
+
+    Behavior.prototype.retained = function() {
+      var _this = this;
+      this.subscribe(this, 'value-internal', function(value) {
+        return _this.value = value;
+      });
+      this.subscribe(this, 'value-subscription-added', function(handler) {
+        return handler(_this.value);
+      });
+      return typeof this.subscribeCallback === "function" ? this.subscribeCallback() : void 0;
+    };
+
+    Behavior.prototype.emit = function() {
+      var args, name;
+      name = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      if (name === 'value') {
+        this.emit.apply(this, ['value-internal'].concat(__slice.call(args)));
+      }
+      return Behavior.__super__.emit.apply(this, arguments);
+    };
+
+    Behavior.prototype.getValue = function() {
+      if (!(this.retainCount > 0)) {
+        throw new Error("Subscribe to or retain this behavior before calling getValue");
+      }
+      return this.value;
+    };
+
+    Behavior.prototype.and = function(right) {
+      return helpers.combine(this, right, (function(leftValue, rightValue) {
+        return leftValue && rightValue;
+      })).distinctUntilChanged();
+    };
+
+    Behavior.prototype.or = function(right) {
+      return helpers.combine(this, right, (function(leftValue, rightValue) {
+        return leftValue || rightValue;
+      })).distinctUntilChanged();
+    };
+
+    Behavior.prototype.toBehavior = function() {
+      return this;
+    };
+
+    Behavior.prototype.lazyAccessor('changes', function() {
+      var source;
+      source = this;
+      return new Signal(function() {
+        var gotFirst,
+          _this = this;
+        gotFirst = false;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          if (gotFirst) {
+            _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+          }
+          return gotFirst = true;
+        });
+      });
+    });
+
+    Behavior.prototype.becomes = function(predicateOrTargetValue) {
+      var predicate, targetValue;
+      if (typeof predicateOrTargetValue !== 'function') {
+        targetValue = predicateOrTargetValue;
+        return this.becomes(function(value) {
+          return isEqual(value, targetValue);
+        });
+      }
+      predicate = predicateOrTargetValue;
+      return this.map(function(value) {
+        return !!predicate(value);
+      }).distinctUntilChanged().changes;
+    };
+
+    Behavior.prototype.becomesLessThan = function(targetValue) {
+      return this.becomes(function(value) {
+        return value < targetValue;
+      });
+    };
+
+    Behavior.prototype.becomesGreaterThan = function(targetValue) {
+      return this.becomes(function(value) {
+        return value > targetValue;
+      });
+    };
+
+    return Behavior;
+
+  })(Signal);
+
+  helpers = require('./helpers');
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emissary.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emissary.js
new file mode 100644 (file)
index 0000000..9ba21f4
--- /dev/null
@@ -0,0 +1,14 @@
+(function() {
+  var combine;
+
+  combine = require('./helpers').combine;
+
+  module.exports = {
+    Emitter: require('./emitter'),
+    Subscriber: require('./subscriber'),
+    Signal: require('./signal'),
+    Behavior: require('./behavior'),
+    combine: combine
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emitter.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emitter.js
new file mode 100644 (file)
index 0000000..0e999db
--- /dev/null
@@ -0,0 +1,384 @@
+(function() {
+  var Emitter, Mixin, Signal, Subscription, removeFromArray, subscriptionRemovedPattern, _ref,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  Mixin = require('mixto');
+
+  Signal = null;
+
+  Subscription = null;
+
+  subscriptionRemovedPattern = /^(last-)?.+-subscription-removed$/;
+
+  module.exports = Emitter = (function(_super) {
+    __extends(Emitter, _super);
+
+    function Emitter() {
+      _ref = Emitter.__super__.constructor.apply(this, arguments);
+      return _ref;
+    }
+
+    Emitter.prototype.eventHandlersByEventName = null;
+
+    Emitter.prototype.eventHandlersByNamespace = null;
+
+    Emitter.prototype.subscriptionCounts = null;
+
+    Emitter.prototype.pauseCountsByEventName = null;
+
+    Emitter.prototype.queuedEventsByEventName = null;
+
+    Emitter.prototype.globalPauseCount = null;
+
+    Emitter.prototype.globalQueuedEvents = null;
+
+    Emitter.prototype.signalsByEventName = null;
+
+    Emitter.prototype.on = function(eventNames, handler) {
+      var eventName, namespace, _base, _base1, _base2, _i, _len, _ref1, _ref2;
+      _ref1 = eventNames.split(/\s+/);
+      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+        eventName = _ref1[_i];
+        if (!(eventName !== '')) {
+          continue;
+        }
+        _ref2 = eventName.split('.'), eventName = _ref2[0], namespace = _ref2[1];
+        this.emit("" + eventName + "-subscription-will-be-added", handler);
+        if (this.incrementSubscriptionCount(eventName) === 1) {
+          this.emit("first-" + eventName + "-subscription-will-be-added", handler);
+        }
+        if (this.eventHandlersByEventName == null) {
+          this.eventHandlersByEventName = {};
+        }
+        if ((_base = this.eventHandlersByEventName)[eventName] == null) {
+          _base[eventName] = [];
+        }
+        this.eventHandlersByEventName[eventName].push(handler);
+        if (namespace) {
+          if (this.eventHandlersByNamespace == null) {
+            this.eventHandlersByNamespace = {};
+          }
+          if ((_base1 = this.eventHandlersByNamespace)[namespace] == null) {
+            _base1[namespace] = {};
+          }
+          if ((_base2 = this.eventHandlersByNamespace[namespace])[eventName] == null) {
+            _base2[eventName] = [];
+          }
+          this.eventHandlersByNamespace[namespace][eventName].push(handler);
+        }
+        this.emit("" + eventName + "-subscription-added", handler);
+      }
+      if (Subscription == null) {
+        Subscription = require('./subscription');
+      }
+      return new Subscription(this, eventNames, handler);
+    };
+
+    Emitter.prototype.once = function(eventName, handler) {
+      var subscription;
+      return subscription = this.on(eventName, function() {
+        var args;
+        args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+        subscription.off();
+        return handler.apply(null, args);
+      });
+    };
+
+    Emitter.prototype.signal = function(eventName) {
+      var _base;
+      if (Signal == null) {
+        Signal = require('./signal');
+      }
+      if (this.signalsByEventName == null) {
+        this.signalsByEventName = {};
+      }
+      return (_base = this.signalsByEventName)[eventName] != null ? (_base = this.signalsByEventName)[eventName] : _base[eventName] = Signal.fromEmitter(this, eventName);
+    };
+
+    Emitter.prototype.behavior = function(eventName, initialValue) {
+      return this.signal(eventName).toBehavior(initialValue);
+    };
+
+    Emitter.prototype.emit = function(eventName, payload) {
+      var handler, handlers, queuedEvents, _i, _len, _ref1, _ref2, _ref3;
+      if (arguments.length > 2 || /\s|\./.test(eventName)) {
+        return this.emitSlow.apply(this, arguments);
+      } else {
+        if (this.globalQueuedEvents != null) {
+          return this.globalQueuedEvents.push([eventName, payload]);
+        } else {
+          if (queuedEvents = (_ref1 = this.queuedEventsByEventName) != null ? _ref1[eventName] : void 0) {
+            return queuedEvents.push([eventName, payload]);
+          } else if (handlers = (_ref2 = this.eventHandlersByEventName) != null ? _ref2[eventName] : void 0) {
+            _ref3 = handlers.slice();
+            for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
+              handler = _ref3[_i];
+              handler(payload);
+            }
+            return this.emit("after-" + eventName, payload);
+          }
+        }
+      }
+    };
+
+    Emitter.prototype.emitSlow = function() {
+      var args, eventName, handlers, namespace, queuedEvents, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6;
+      eventName = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      if (this.globalQueuedEvents) {
+        return this.globalQueuedEvents.push([eventName].concat(__slice.call(args)));
+      } else {
+        _ref1 = eventName.split('.'), eventName = _ref1[0], namespace = _ref1[1];
+        if (namespace) {
+          if (queuedEvents = (_ref2 = this.queuedEventsByEventName) != null ? _ref2[eventName] : void 0) {
+            return queuedEvents.push(["" + eventName + "." + namespace].concat(__slice.call(args)));
+          } else if (handlers = (_ref3 = this.eventHandlersByNamespace) != null ? (_ref4 = _ref3[namespace]) != null ? _ref4[eventName] : void 0 : void 0) {
+            (function(func, args, ctor) {
+              ctor.prototype = func.prototype;
+              var child = new ctor, result = func.apply(child, args);
+              return Object(result) === result ? result : child;
+            })(Array, handlers, function(){}).forEach(function(handler) {
+              return handler.apply(null, args);
+            });
+            return this.emit.apply(this, ["after-" + eventName].concat(__slice.call(args)));
+          }
+        } else {
+          if (queuedEvents = (_ref5 = this.queuedEventsByEventName) != null ? _ref5[eventName] : void 0) {
+            return queuedEvents.push([eventName].concat(__slice.call(args)));
+          } else if (handlers = (_ref6 = this.eventHandlersByEventName) != null ? _ref6[eventName] : void 0) {
+            (function(func, args, ctor) {
+              ctor.prototype = func.prototype;
+              var child = new ctor, result = func.apply(child, args);
+              return Object(result) === result ? result : child;
+            })(Array, handlers, function(){}).forEach(function(handler) {
+              return handler.apply(null, args);
+            });
+            return this.emit.apply(this, ["after-" + eventName].concat(__slice.call(args)));
+          }
+        }
+      }
+    };
+
+    Emitter.prototype.off = function(eventNames, handler) {
+      var eventHandlers, eventName, handlers, namespace, namespaceHandlers, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref1, _ref10, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9;
+      if (eventNames) {
+        _ref1 = eventNames.split(/\s+/);
+        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+          eventName = _ref1[_i];
+          if (!(eventName !== '')) {
+            continue;
+          }
+          _ref2 = eventName.split('.'), eventName = _ref2[0], namespace = _ref2[1];
+          if (eventName === '') {
+            eventName = void 0;
+          }
+          if (namespace) {
+            if (eventName) {
+              handlers = (_ref3 = (_ref4 = this.eventHandlersByNamespace) != null ? (_ref5 = _ref4[namespace]) != null ? _ref5[eventName] : void 0 : void 0) != null ? _ref3 : [];
+              if (handler != null) {
+                removeFromArray(handlers, handler);
+                this.off(eventName, handler);
+              } else {
+                _ref6 = (function(func, args, ctor) {
+                  ctor.prototype = func.prototype;
+                  var child = new ctor, result = func.apply(child, args);
+                  return Object(result) === result ? result : child;
+                })(Array, handlers, function(){});
+                for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
+                  handler = _ref6[_j];
+                  removeFromArray(handlers, handler);
+                  this.off(eventName, handler);
+                }
+              }
+            } else {
+              namespaceHandlers = (_ref7 = (_ref8 = this.eventHandlersByNamespace) != null ? _ref8[namespace] : void 0) != null ? _ref7 : {};
+              if (handler != null) {
+                for (eventName in namespaceHandlers) {
+                  handlers = namespaceHandlers[eventName];
+                  removeFromArray(handlers, handler);
+                  this.off(eventName, handler);
+                }
+              } else {
+                for (eventName in namespaceHandlers) {
+                  handlers = namespaceHandlers[eventName];
+                  _ref9 = (function(func, args, ctor) {
+                    ctor.prototype = func.prototype;
+                    var child = new ctor, result = func.apply(child, args);
+                    return Object(result) === result ? result : child;
+                  })(Array, handlers, function(){});
+                  for (_k = 0, _len2 = _ref9.length; _k < _len2; _k++) {
+                    handler = _ref9[_k];
+                    removeFromArray(handlers, handler);
+                    this.off(eventName, handler);
+                  }
+                }
+              }
+            }
+          } else {
+            eventHandlers = (_ref10 = this.eventHandlersByEventName) != null ? _ref10[eventName] : void 0;
+            if (eventHandlers == null) {
+              return;
+            }
+            if (handler == null) {
+              for (_l = 0, _len3 = eventHandlers.length; _l < _len3; _l++) {
+                handler = eventHandlers[_l];
+                this.off(eventName, handler);
+              }
+              return;
+            }
+            if (removeFromArray(eventHandlers, handler)) {
+              this.decrementSubscriptionCount(eventName);
+              this.emit("" + eventName + "-subscription-removed", handler);
+              if (this.getSubscriptionCount(eventName) === 0) {
+                this.emit("last-" + eventName + "-subscription-removed", handler);
+                delete this.eventHandlersByEventName[eventName];
+              }
+            }
+          }
+        }
+      } else {
+        for (eventName in this.eventHandlersByEventName) {
+          if (!subscriptionRemovedPattern.test(eventName)) {
+            this.off(eventName);
+          }
+        }
+        for (eventName in this.eventHandlersByEventName) {
+          this.off(eventName);
+        }
+        return this.eventHandlersByNamespace = {};
+      }
+    };
+
+    Emitter.prototype.pauseEvents = function(eventNames) {
+      var eventName, _base, _base1, _i, _len, _ref1, _results;
+      if (eventNames) {
+        _ref1 = eventNames.split(/\s+/);
+        _results = [];
+        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+          eventName = _ref1[_i];
+          if (!(eventName !== '')) {
+            continue;
+          }
+          if (this.pauseCountsByEventName == null) {
+            this.pauseCountsByEventName = {};
+          }
+          if (this.queuedEventsByEventName == null) {
+            this.queuedEventsByEventName = {};
+          }
+          if ((_base = this.pauseCountsByEventName)[eventName] == null) {
+            _base[eventName] = 0;
+          }
+          this.pauseCountsByEventName[eventName]++;
+          _results.push((_base1 = this.queuedEventsByEventName)[eventName] != null ? (_base1 = this.queuedEventsByEventName)[eventName] : _base1[eventName] = []);
+        }
+        return _results;
+      } else {
+        if (this.globalPauseCount == null) {
+          this.globalPauseCount = 0;
+        }
+        if (this.globalQueuedEvents == null) {
+          this.globalQueuedEvents = [];
+        }
+        return this.globalPauseCount++;
+      }
+    };
+
+    Emitter.prototype.resumeEvents = function(eventNames) {
+      var event, eventName, queuedEvents, _i, _j, _len, _len1, _ref1, _ref2, _results, _results1;
+      if (eventNames) {
+        _ref1 = eventNames.split(/\s+/);
+        _results = [];
+        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+          eventName = _ref1[_i];
+          if (eventName !== '') {
+            if (((_ref2 = this.pauseCountsByEventName) != null ? _ref2[eventName] : void 0) > 0 && --this.pauseCountsByEventName[eventName] === 0) {
+              queuedEvents = this.queuedEventsByEventName[eventName];
+              this.queuedEventsByEventName[eventName] = null;
+              _results.push((function() {
+                var _j, _len1, _results1;
+                _results1 = [];
+                for (_j = 0, _len1 = queuedEvents.length; _j < _len1; _j++) {
+                  event = queuedEvents[_j];
+                  _results1.push(this.emit.apply(this, event));
+                }
+                return _results1;
+              }).call(this));
+            } else {
+              _results.push(void 0);
+            }
+          }
+        }
+        return _results;
+      } else {
+        for (eventName in this.pauseCountsByEventName) {
+          this.resumeEvents(eventName);
+        }
+        if (this.globalPauseCount > 0 && --this.globalPauseCount === 0) {
+          queuedEvents = this.globalQueuedEvents;
+          this.globalQueuedEvents = null;
+          _results1 = [];
+          for (_j = 0, _len1 = queuedEvents.length; _j < _len1; _j++) {
+            event = queuedEvents[_j];
+            _results1.push(this.emit.apply(this, event));
+          }
+          return _results1;
+        }
+      }
+    };
+
+    Emitter.prototype.incrementSubscriptionCount = function(eventName) {
+      var _base;
+      if (this.subscriptionCounts == null) {
+        this.subscriptionCounts = {};
+      }
+      if ((_base = this.subscriptionCounts)[eventName] == null) {
+        _base[eventName] = 0;
+      }
+      return ++this.subscriptionCounts[eventName];
+    };
+
+    Emitter.prototype.decrementSubscriptionCount = function(eventName) {
+      var count;
+      count = --this.subscriptionCounts[eventName];
+      if (count === 0) {
+        delete this.subscriptionCounts[eventName];
+      }
+      return count;
+    };
+
+    Emitter.prototype.getSubscriptionCount = function(eventName) {
+      var count, name, total, _ref1, _ref2, _ref3;
+      if (eventName != null) {
+        return (_ref1 = (_ref2 = this.subscriptionCounts) != null ? _ref2[eventName] : void 0) != null ? _ref1 : 0;
+      } else {
+        total = 0;
+        _ref3 = this.subscriptionCounts;
+        for (name in _ref3) {
+          count = _ref3[name];
+          total += count;
+        }
+        return total;
+      }
+    };
+
+    Emitter.prototype.hasSubscriptions = function(eventName) {
+      return this.getSubscriptionCount(eventName) > 0;
+    };
+
+    return Emitter;
+
+  })(Mixin);
+
+  removeFromArray = function(array, element) {
+    var index;
+    index = array.indexOf(element);
+    if (index > -1) {
+      array.splice(index, 1);
+      return true;
+    } else {
+      return false;
+    }
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/helpers.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/helpers.js
new file mode 100644 (file)
index 0000000..89df58c
--- /dev/null
@@ -0,0 +1,55 @@
+(function() {
+  var Behavior, combineArray, combineWithFunction,
+    __slice = [].slice;
+
+  Behavior = require('./behavior');
+
+  exports.combine = function() {
+    var args;
+    args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+    if (args.length === 1 && Array.isArray(args[0])) {
+      return combineArray(args[0]);
+    } else if (typeof args[args.length - 1] === 'function') {
+      return combineWithFunction(args);
+    } else {
+      throw new Error("Invalid object type");
+    }
+  };
+
+  combineArray = function(array) {
+    var behavior;
+    return behavior = new Behavior(function() {
+      var element, i, outputArray, ready, _i, _len,
+        _this = this;
+      outputArray = array.slice();
+      ready = false;
+      for (i = _i = 0, _len = array.length; _i < _len; i = ++_i) {
+        element = array[i];
+        if (element.constructor.name === 'Behavior') {
+          (function(element, i) {
+            return _this.subscribe(element.onValue(function(value, metadata) {
+              if (ready) {
+                outputArray = outputArray.slice();
+              }
+              outputArray[i] = value;
+              if (ready) {
+                return _this.emitValue(outputArray, metadata);
+              }
+            }));
+          })(element, i);
+        }
+      }
+      ready = true;
+      return this.emitValue(outputArray);
+    });
+  };
+
+  combineWithFunction = function(args) {
+    var fn;
+    fn = args.pop();
+    return combineArray(args).map(function(argsArray) {
+      return fn.apply(null, argsArray);
+    });
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/signal.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/signal.js
new file mode 100644 (file)
index 0000000..368f63a
--- /dev/null
@@ -0,0 +1,292 @@
+(function() {
+  var Behavior, Emitter, Signal, Subscriber, isEqual,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  isEqual = require('underscore-plus').isEqual;
+
+  Emitter = require('./emitter');
+
+  Subscriber = require('./subscriber');
+
+  Behavior = null;
+
+  module.exports = Signal = (function(_super) {
+    __extends(Signal, _super);
+
+    Subscriber.includeInto(Signal);
+
+    Signal.fromEmitter = function(emitter, eventName) {
+      return new Signal(function() {
+        var _this = this;
+        return this.subscribe(emitter, eventName, function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    function Signal(subscribeCallback) {
+      var _this = this;
+      this.subscribeCallback = subscribeCallback;
+      this.retainCount = 0;
+      this.on('value-subscription-will-be-added', function() {
+        return _this.retain();
+      });
+      this.on('value-subscription-removed', function() {
+        return _this.release();
+      });
+    }
+
+    Signal.prototype.isSignal = true;
+
+    Signal.prototype.retained = function() {
+      return typeof this.subscribeCallback === "function" ? this.subscribeCallback() : void 0;
+    };
+
+    Signal.prototype.released = function() {
+      return this.unsubscribe();
+    };
+
+    Signal.prototype.retain = function() {
+      if (++this.retainCount === 1) {
+        if (typeof this.retained === "function") {
+          this.retained();
+        }
+      }
+      return this;
+    };
+
+    Signal.prototype.release = function() {
+      if (--this.retainCount === 0) {
+        if (typeof this.released === "function") {
+          this.released();
+        }
+      }
+      return this;
+    };
+
+    Signal.prototype.onValue = function(handler) {
+      return this.on('value', handler);
+    };
+
+    Signal.prototype.emitValue = function(value, metadata) {
+      if (metadata == null) {
+        metadata = {};
+      }
+      if (metadata.source == null) {
+        metadata.source = this;
+      }
+      return this.emit('value', value, metadata);
+    };
+
+    Signal.prototype.toBehavior = function(initialValue) {
+      var source;
+      source = this;
+      return this.buildBehavior(initialValue, function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype.changes = function() {
+      return this;
+    };
+
+    Signal.prototype.injectMetadata = function(fn) {
+      var source;
+      source = this;
+      return new this.constructor(function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function(value, metadata) {
+          var k, newMetadata, v;
+          newMetadata = fn(value, metadata);
+          for (k in newMetadata) {
+            v = newMetadata[k];
+            metadata[k] = v;
+          }
+          return _this.emitValue(value, metadata);
+        });
+      });
+    };
+
+    Signal.prototype.filter = function(predicate) {
+      var source;
+      source = this;
+      return new this.constructor(function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          if (predicate.call(value, value)) {
+            return _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+          }
+        });
+      });
+    };
+
+    Signal.prototype.filterDefined = function() {
+      return this.filter(function(value) {
+        return value != null;
+      });
+    };
+
+    Signal.prototype.map = function(fn) {
+      var property, source;
+      if (typeof fn === 'string') {
+        property = fn;
+        fn = function(value) {
+          return value != null ? value[property] : void 0;
+        };
+      }
+      source = this;
+      return new this.constructor(function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [fn.call(value, value)].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype["switch"] = function(fn) {
+      var source;
+      source = this.map(fn);
+      return new this.constructor(function() {
+        var currentSignal,
+          _this = this;
+        currentSignal = null;
+        return this.subscribe(source, 'value', function(newSignal, outerMetadata) {
+          if (currentSignal != null) {
+            _this.unsubscribe(currentSignal);
+          }
+          currentSignal = newSignal;
+          if (currentSignal != null) {
+            return _this.subscribe(currentSignal, 'value', function(value, innerMetadata) {
+              return _this.emitValue(value, innerMetadata);
+            });
+          } else {
+            return _this.emitValue(void 0, outerMetadata);
+          }
+        });
+      });
+    };
+
+    Signal.prototype.skipUntil = function(predicateOrTargetValue) {
+      var doneSkipping, predicate, targetValue;
+      if (typeof predicateOrTargetValue !== 'function') {
+        targetValue = predicateOrTargetValue;
+        return this.skipUntil(function(value) {
+          return isEqual(value, targetValue);
+        });
+      }
+      predicate = predicateOrTargetValue;
+      doneSkipping = false;
+      return this.filter(function(value) {
+        if (doneSkipping) {
+          return true;
+        }
+        if (predicate(value)) {
+          return doneSkipping = true;
+        } else {
+          return false;
+        }
+      });
+    };
+
+    Signal.prototype.scan = function(initialValue, fn) {
+      var source;
+      source = this;
+      return this.buildBehavior(initialValue, function() {
+        var oldValue,
+          _this = this;
+        oldValue = initialValue;
+        return this.subscribe(source, 'value', function() {
+          var metadata, newValue;
+          newValue = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [(oldValue = fn(oldValue, newValue))].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype.diff = function(initialValue, fn) {
+      var source;
+      source = this;
+      return this.buildBehavior(function() {
+        var oldValue,
+          _this = this;
+        oldValue = initialValue;
+        return this.subscribe(source, 'value', function() {
+          var fnOldValue, metadata, newValue;
+          newValue = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          fnOldValue = oldValue;
+          oldValue = newValue;
+          return _this.emitValue.apply(_this, [fn(fnOldValue, newValue)].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype.distinctUntilChanged = function() {
+      var source;
+      source = this;
+      return new this.constructor(function() {
+        var oldValue, receivedValue,
+          _this = this;
+        receivedValue = false;
+        oldValue = void 0;
+        return this.subscribe(source, 'value', function() {
+          var metadata, newValue;
+          newValue = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          if (receivedValue) {
+            if (isEqual(oldValue, newValue)) {
+              return oldValue = newValue;
+            } else {
+              oldValue = newValue;
+              return _this.emitValue.apply(_this, [newValue].concat(__slice.call(metadata)));
+            }
+          } else {
+            receivedValue = true;
+            oldValue = newValue;
+            return _this.emitValue.apply(_this, [newValue].concat(__slice.call(metadata)));
+          }
+        });
+      });
+    };
+
+    Signal.prototype.equals = function(expected) {
+      return this.map(function(actual) {
+        return isEqual(actual, expected);
+      }).distinctUntilChanged();
+    };
+
+    Signal.prototype.isDefined = function() {
+      return this.map(function(value) {
+        return value != null;
+      }).distinctUntilChanged();
+    };
+
+    Signal.prototype.buildBehavior = function() {
+      var args;
+      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+      if (Behavior == null) {
+        Behavior = require('./behavior');
+      }
+      return (function(func, args, ctor) {
+        ctor.prototype = func.prototype;
+        var child = new ctor, result = func.apply(child, args);
+        return Object(result) === result ? result : child;
+      })(Behavior, args, function(){});
+    };
+
+    return Signal;
+
+  })(Emitter);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscriber.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscriber.js
new file mode 100644 (file)
index 0000000..25016be
--- /dev/null
@@ -0,0 +1,109 @@
+(function() {
+  var Mixin, Signal, Subscriber, Subscription, WeakMap, _ref, _ref1,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  Mixin = require('mixto');
+
+  Signal = null;
+
+  WeakMap = (_ref = global.WeakMap) != null ? _ref : require('es6-weak-map');
+
+  Subscription = require('./subscription');
+
+  module.exports = Subscriber = (function(_super) {
+    __extends(Subscriber, _super);
+
+    function Subscriber() {
+      _ref1 = Subscriber.__super__.constructor.apply(this, arguments);
+      return _ref1;
+    }
+
+    Subscriber.prototype.subscribeWith = function(eventEmitter, methodName, args) {
+      var callback, eventNames;
+      if (eventEmitter[methodName] == null) {
+        throw new Error("Object does not have method '" + methodName + "' with which to subscribe");
+      }
+      eventEmitter[methodName].apply(eventEmitter, args);
+      eventNames = args[0];
+      callback = args[args.length - 1];
+      return this.addSubscription(new Subscription(eventEmitter, eventNames, callback));
+    };
+
+    Subscriber.prototype.addSubscription = function(subscription) {
+      var emitter;
+      if (this._subscriptions == null) {
+        this._subscriptions = [];
+      }
+      this._subscriptions.push(subscription);
+      emitter = subscription.emitter;
+      if (emitter != null) {
+        if (this._subscriptionsByObject == null) {
+          this._subscriptionsByObject = new WeakMap;
+        }
+        if (this._subscriptionsByObject.has(emitter)) {
+          this._subscriptionsByObject.get(emitter).push(subscription);
+        } else {
+          this._subscriptionsByObject.set(emitter, [subscription]);
+        }
+      }
+      return subscription;
+    };
+
+    Subscriber.prototype.subscribe = function() {
+      var args, eventEmitterOrSubscription;
+      eventEmitterOrSubscription = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      if (args.length === 0) {
+        return this.addSubscription(eventEmitterOrSubscription);
+      } else {
+        if (args.length === 1 && eventEmitterOrSubscription.isSignal) {
+          args.unshift('value');
+        }
+        return this.subscribeWith(eventEmitterOrSubscription, 'on', args);
+      }
+    };
+
+    Subscriber.prototype.subscribeToCommand = function() {
+      var args, eventEmitter;
+      eventEmitter = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      return this.subscribeWith(eventEmitter, 'command', args);
+    };
+
+    Subscriber.prototype.unsubscribe = function(object) {
+      var index, subscription, _i, _j, _len, _len1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7;
+      if (object != null) {
+        _ref4 = (_ref2 = (_ref3 = this._subscriptionsByObject) != null ? _ref3.get(object) : void 0) != null ? _ref2 : [];
+        for (_i = 0, _len = _ref4.length; _i < _len; _i++) {
+          subscription = _ref4[_i];
+          if (typeof subscription.dispose === 'function') {
+            subscription.dispose();
+          } else {
+            subscription.off();
+          }
+          index = this._subscriptions.indexOf(subscription);
+          if (index >= 0) {
+            this._subscriptions.splice(index, 1);
+          }
+        }
+        return (_ref5 = this._subscriptionsByObject) != null ? _ref5["delete"](object) : void 0;
+      } else {
+        _ref7 = (_ref6 = this._subscriptions) != null ? _ref6 : [];
+        for (_j = 0, _len1 = _ref7.length; _j < _len1; _j++) {
+          subscription = _ref7[_j];
+          if (typeof subscription.dispose === 'function') {
+            subscription.dispose();
+          } else {
+            subscription.off();
+          }
+        }
+        this._subscriptions = null;
+        return this._subscriptionsByObject = null;
+      }
+    };
+
+    return Subscriber;
+
+  })(Mixin);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscription.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscription.js
new file mode 100644 (file)
index 0000000..b1d749f
--- /dev/null
@@ -0,0 +1,40 @@
+(function() {
+  var Emitter, Subscription,
+    __hasProp = {}.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; };
+
+  Emitter = require('./emitter');
+
+  module.exports = Subscription = (function(_super) {
+    __extends(Subscription, _super);
+
+    Subscription.prototype.cancelled = false;
+
+    function Subscription(emitter, eventNames, handler) {
+      this.emitter = emitter;
+      this.eventNames = eventNames;
+      this.handler = handler;
+    }
+
+    Subscription.prototype.off = function() {
+      return this.dispose();
+    };
+
+    Subscription.prototype.dispose = function() {
+      var unsubscribe, _ref;
+      if (this.cancelled) {
+        return;
+      }
+      unsubscribe = (_ref = this.emitter.off) != null ? _ref : this.emitter.removeListener;
+      unsubscribe.call(this.emitter, this.eventNames, this.handler);
+      this.emitter = null;
+      this.handler = null;
+      this.cancelled = true;
+      return this.emit('cancelled');
+    };
+
+    return Subscription;
+
+  })(Emitter);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.lint b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.lint
new file mode 100644 (file)
index 0000000..cf54d81
--- /dev/null
@@ -0,0 +1,11 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.npmignore b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.travis.yml b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.travis.yml
new file mode 100644 (file)
index 0000000..08f04a1
--- /dev/null
@@ -0,0 +1,10 @@
+sudo: false # use faster docker infrastructure
+language: node_js
+node_js:
+  - 0.10
+  - 0.12
+  - iojs
+
+notifications:
+  email:
+    - medikoo+es6-weak-map@medikoo.com
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/CHANGES b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/CHANGES
new file mode 100644 (file)
index 0000000..3394408
--- /dev/null
@@ -0,0 +1,24 @@
+v0.1.4  --  2015.04.13
+* Republish v0.1.2 as v0.1.4 due to breaking changes
+  (v0.1.3 should have been published as next major)
+
+v0.1.3  --  2015.04.12
+* Update up to changes in specification (require new, remove clear method)
+* Improve native implementation validation
+* Configure lint scripts
+* Rename LICENCE to LICENSE
+
+v0.1.2  --  2014.09.01
+* Use internal random and unique id generator instead of external (time-uuid based).
+  Global uniqueness is not needed in scope of this module. Fixes #1
+
+v0.1.1  --  2014.05.15
+* Improve valid WeakMap detection
+
+v0.1.0  --  2014.04.29
+* Assure to depend only npm hosted dependencies
+* Update to use latest versions of dependencies
+* Use ES6 symbols internally
+
+v0.0.0  --  2013.10.24
+Initial (dev version)
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/LICENCE b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/LICENCE
new file mode 100644 (file)
index 0000000..aaf3528
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013 Mariusz Nowak (www.medikoo.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/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/README.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/README.md
new file mode 100644 (file)
index 0000000..dd91b46
--- /dev/null
@@ -0,0 +1,65 @@
+# es6-weak-map
+## WeakMap collection as specified in ECMAScript6
+
+_Roughly inspired by Mark Miller's and Kris Kowal's [WeakMap implementation](https://github.com/drses/weak-map)_.
+
+Differences are:
+- Assumes compliant ES5 environment (no weird ES3 workarounds or hacks)
+- Well modularized CJS style
+- Based on one solution.
+
+### Limitations
+
+- Will fail on non extensible objects provided as keys
+- While `clear` method is provided, it's not perfectly spec compliant. If some objects were saved as _values_, they need to be removed via `delete`. Otherwise they'll remain infinitely attached to _key_ object (that means, they'll be free for GC only if _key_ object was collected as well).
+
+### Installation
+
+       $ npm install es6-weak-map
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+### Usage
+
+If you want to make sure your environment implements `WeakMap`, do:
+
+```javascript
+require('es6-weak-map/implement');
+```
+
+If you'd like to use native version when it exists and fallback to polyfill if it doesn't, but without implementing `WeakMap` on global scope, do:
+
+```javascript
+var WeakMap = require('es6-weak-map');
+```
+
+If you strictly want to use polyfill even if native `WeakMap` exists, do:
+
+```javascript
+var WeakMap = require('es6-weak-map/polyfill');
+```
+
+#### API
+
+Best is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-weakmap-objects). Still if you want quick look, follow example:
+
+```javascript
+var WeakMap = require('es6-weak-map');
+
+var map = new WeakMap();
+var obj = {};
+
+map.set(obj, 'foo'); // map
+map.get(obj);        // 'foo'
+map.has(obj);        // true
+map.delete(obj);     // true
+map.get(obj);        // undefined
+map.has(obj);        // false
+map.set(obj, 'bar'); // map
+map.clear();         // undefined
+map.has(obj);        // false
+```
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/es6-weak-map.png)](https://travis-ci.org/medikoo/es6-weak-map)
+
+       $ npm test
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js
new file mode 100644 (file)
index 0000000..6c3f306
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(require('es5-ext/global'), 'WeakMap',
+               { value: require('./polyfill'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js
new file mode 100644 (file)
index 0000000..5edc4cc
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               WeakMap : require('./polyfill');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js
new file mode 100644 (file)
index 0000000..455ff81
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function () {
+       var map;
+       if (typeof WeakMap !== 'function') return false;
+       map = new WeakMap();
+       if (typeof map.set !== 'function') return false;
+       if (map.set({}, 1) !== map) return false;
+       if (typeof map.clear !== 'function') return false;
+       if (typeof map.delete !== 'function') return false;
+       if (typeof map.has !== 'function') return false;
+
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js
new file mode 100644 (file)
index 0000000..b3fe5a5
--- /dev/null
@@ -0,0 +1,10 @@
+// Exports true if environment provides native `WeakMap` implementation,
+// whatever that is.
+
+'use strict';
+
+module.exports = (function () {
+       if (typeof WeakMap === 'undefined') return false;
+       return (Object.prototype.toString.call(WeakMap.prototype) ===
+                       '[object WeakMap]');
+}());
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js
new file mode 100644 (file)
index 0000000..10bb2a1
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var toStringTagSymbol = require('es6-symbol').toStringTag
+
+  , toString = Object.prototype.toString
+  , id = '[object WeakMap]'
+  , Global = (typeof WeakMap === 'undefined') ? null : WeakMap;
+
+module.exports = function (x) {
+       return (x && ((Global && (x instanceof Global)) ||
+                       (toString.call(x) === id) || (x[toStringTagSymbol] === 'WeakMap'))) ||
+                       false;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.lint b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.lint
new file mode 100644 (file)
index 0000000..858b753
--- /dev/null
@@ -0,0 +1,12 @@
+@root
+
+es5
+module
+
+tabs
+indent 2
+maxlen 80
+
+ass
+nomen
+plusplus
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.npmignore b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.travis.yml b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.travis.yml
new file mode 100644 (file)
index 0000000..50008b2
--- /dev/null
@@ -0,0 +1,9 @@
+language: node_js
+node_js:
+  - 0.8
+  - 0.10
+  - 0.11
+
+notifications:
+  email:
+    - medikoo+d@medikoo.com
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/CHANGES b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/CHANGES
new file mode 100644 (file)
index 0000000..45233f7
--- /dev/null
@@ -0,0 +1,7 @@
+v0.1.1  --  2014.04.24
+- Add `autoBind` and `lazy` utilities
+- Allow to pass other options to be merged onto created descriptor.
+  Useful when used with other custom utilties
+
+v0.1.0  --  2013.06.20
+Initial (derived from es5-ext project)
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/LICENCE b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/LICENCE
new file mode 100644 (file)
index 0000000..aaf3528
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013 Mariusz Nowak (www.medikoo.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/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/README.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/README.md
new file mode 100644 (file)
index 0000000..872d493
--- /dev/null
@@ -0,0 +1,108 @@
+# D - Property descriptor factory
+
+_Originally derived from [es5-ext](https://github.com/medikoo/es5-ext) package._
+
+Defining properties with descriptors is very verbose:
+
+```javascript
+var Account = function () {};
+Object.defineProperties(Account.prototype, {
+  deposit: { value: function () {
+      /* ... */
+    }, configurable: true, enumerable: false, writable: true },
+  whithdraw: { value: function () {
+      /* ... */
+    }, configurable: true, enumerable: false, writable: true },
+  balance: { get: function () {
+      /* ... */
+    }, configurable: true, enumerable: false }
+});
+```
+
+D cuts that to:
+
+```javascript
+var d = require('d');
+
+var Account = function () {};
+Object.defineProperties(Account.prototype, {
+  deposit: d(function () {
+    /* ... */
+  }),
+  whithdraw: d(function () {
+    /* ... */
+  }),
+  balance: d.gs(function () {
+    /* ... */
+  })
+});
+```
+
+By default, created descriptor follow characteristics of native ES5 properties, and defines values as:
+
+```javascript
+{ configurable: true, enumerable: false, writable: true }
+```
+
+You can overwrite it by preceding _value_ argument with instruction:
+```javascript
+d('c', value); // { configurable: true, enumerable: false, writable: false }
+d('ce', value); // { configurable: true, enumerable: true, writable: false }
+d('e', value); // { configurable: false, enumerable: true, writable: false }
+
+// Same way for get/set:
+d.gs('e', value); // { configurable: false, enumerable: true }
+```
+
+### Other utilities
+
+#### autoBind(obj, props) _(d/auto-bind)_
+
+Define methods which will be automatically bound to its instances
+
+```javascript
+var d = require('d');
+var autoBind = require('d/auto-bind');
+
+var Foo = function () { this._count = 0; };
+autoBind(Foo.prototype, {
+  increment: d(function () { ++this._count; });
+});
+
+var foo = new Foo();
+
+// Increment foo counter on each domEl click
+domEl.addEventListener('click', foo.increment, false);
+```
+
+#### lazy(obj, props) _(d/lazy)_
+
+Define lazy properties, which will be resolved on first access
+
+```javascript
+var d = require('d');
+var lazy = require('d/lazy');
+
+var Foo = function () {};
+lazy(Foo.prototype, {
+  items: d(function () { return []; })
+});
+
+var foo = new Foo();
+foo.items.push(1, 2); // foo.items array created
+```
+
+## Installation
+### NPM
+
+In your project path:
+
+       $ npm install d
+
+### Browser
+
+You can easily bundle _D_ for browser with [modules-webmake](https://github.com/medikoo/modules-webmake)
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/d.png)](https://travis-ci.org/medikoo/d)
+
+       $ npm test
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js
new file mode 100644 (file)
index 0000000..1b00dba
--- /dev/null
@@ -0,0 +1,31 @@
+'use strict';
+
+var copy       = require('es5-ext/object/copy')
+  , map        = require('es5-ext/object/map')
+  , callable   = require('es5-ext/object/valid-callable')
+  , validValue = require('es5-ext/object/valid-value')
+
+  , bind = Function.prototype.bind, defineProperty = Object.defineProperty
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , define;
+
+define = function (name, desc, bindTo) {
+       var value = validValue(desc) && callable(desc.value), dgs;
+       dgs = copy(desc);
+       delete dgs.writable;
+       delete dgs.value;
+       dgs.get = function () {
+               if (hasOwnProperty.call(this, name)) return value;
+               desc.value = bind.call(value, (bindTo == null) ? this : this[bindTo]);
+               defineProperty(this, name, desc);
+               return this[name];
+       };
+       return dgs;
+};
+
+module.exports = function (props/*, bindTo*/) {
+       var bindTo = arguments[1];
+       return map(props, function (desc, name) {
+               return define(name, desc, bindTo);
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js
new file mode 100644 (file)
index 0000000..076ae46
--- /dev/null
@@ -0,0 +1,63 @@
+'use strict';
+
+var assign        = require('es5-ext/object/assign')
+  , normalizeOpts = require('es5-ext/object/normalize-options')
+  , isCallable    = require('es5-ext/object/is-callable')
+  , contains      = require('es5-ext/string/#/contains')
+
+  , d;
+
+d = module.exports = function (dscr, value/*, options*/) {
+       var c, e, w, options, desc;
+       if ((arguments.length < 2) || (typeof dscr !== 'string')) {
+               options = value;
+               value = dscr;
+               dscr = null;
+       } else {
+               options = arguments[2];
+       }
+       if (dscr == null) {
+               c = w = true;
+               e = false;
+       } else {
+               c = contains.call(dscr, 'c');
+               e = contains.call(dscr, 'e');
+               w = contains.call(dscr, 'w');
+       }
+
+       desc = { value: value, configurable: c, enumerable: e, writable: w };
+       return !options ? desc : assign(normalizeOpts(options), desc);
+};
+
+d.gs = function (dscr, get, set/*, options*/) {
+       var c, e, options, desc;
+       if (typeof dscr !== 'string') {
+               options = set;
+               set = get;
+               get = dscr;
+               dscr = null;
+       } else {
+               options = arguments[3];
+       }
+       if (get == null) {
+               get = undefined;
+       } else if (!isCallable(get)) {
+               options = get;
+               get = set = undefined;
+       } else if (set == null) {
+               set = undefined;
+       } else if (!isCallable(set)) {
+               options = set;
+               set = undefined;
+       }
+       if (dscr == null) {
+               c = true;
+               e = false;
+       } else {
+               c = contains.call(dscr, 'c');
+               e = contains.call(dscr, 'e');
+       }
+
+       desc = { get: get, set: set, configurable: c, enumerable: e };
+       return !options ? desc : assign(normalizeOpts(options), desc);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js
new file mode 100644 (file)
index 0000000..61e4665
--- /dev/null
@@ -0,0 +1,111 @@
+'use strict';
+
+var map        = require('es5-ext/object/map')
+  , isCallable = require('es5-ext/object/is-callable')
+  , validValue = require('es5-ext/object/valid-value')
+  , contains   = require('es5-ext/string/#/contains')
+
+  , call = Function.prototype.call
+  , defineProperty = Object.defineProperty
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+  , getPrototypeOf = Object.getPrototypeOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , cacheDesc = { configurable: false, enumerable: false, writable: false,
+               value: null }
+  , define;
+
+define = function (name, options) {
+       var value, dgs, cacheName, desc, writable = false, resolvable
+         , flat;
+       options = Object(validValue(options));
+       cacheName = options.cacheName;
+       flat = options.flat;
+       if (cacheName == null) cacheName = name;
+       delete options.cacheName;
+       value = options.value;
+       resolvable = isCallable(value);
+       delete options.value;
+       dgs = { configurable: Boolean(options.configurable),
+               enumerable: Boolean(options.enumerable) };
+       if (name !== cacheName) {
+               dgs.get = function () {
+                       if (hasOwnProperty.call(this, cacheName)) return this[cacheName];
+                       cacheDesc.value = resolvable ? call.call(value, this, options) : value;
+                       cacheDesc.writable = writable;
+                       defineProperty(this, cacheName, cacheDesc);
+                       cacheDesc.value = null;
+                       if (desc) defineProperty(this, name, desc);
+                       return this[cacheName];
+               };
+       } else if (!flat) {
+               dgs.get = function self() {
+                       var ownDesc;
+                       if (hasOwnProperty.call(this, name)) {
+                               ownDesc = getOwnPropertyDescriptor(this, name);
+                               // It happens in Safari, that getter is still called after property
+                               // was defined with a value, following workarounds that
+                               if (ownDesc.hasOwnProperty('value')) return ownDesc.value;
+                               if ((typeof ownDesc.get === 'function') && (ownDesc.get !== self)) {
+                                       return ownDesc.get.call(this);
+                               }
+                               return value;
+                       }
+                       desc.value = resolvable ? call.call(value, this, options) : value;
+                       defineProperty(this, name, desc);
+                       desc.value = null;
+                       return this[name];
+               };
+       } else {
+               dgs.get = function self() {
+                       var base = this, ownDesc;
+                       if (hasOwnProperty.call(this, name)) {
+                               // It happens in Safari, that getter is still called after property
+                               // was defined with a value, following workarounds that
+                               ownDesc = getOwnPropertyDescriptor(this, name);
+                               if (ownDesc.hasOwnProperty('value')) return ownDesc.value;
+                               if ((typeof ownDesc.get === 'function') && (ownDesc.get !== self)) {
+                                       return ownDesc.get.call(this);
+                               }
+                       }
+                       while (!hasOwnProperty.call(base, name)) base = getPrototypeOf(base);
+                       desc.value = resolvable ? call.call(value, base, options) : value;
+                       defineProperty(base, name, desc);
+                       desc.value = null;
+                       return base[name];
+               };
+       }
+       dgs.set = function (value) {
+               dgs.get.call(this);
+               this[cacheName] = value;
+       };
+       if (options.desc) {
+               desc = {
+                       configurable: contains.call(options.desc, 'c'),
+                       enumerable: contains.call(options.desc, 'e')
+               };
+               if (cacheName === name) {
+                       desc.writable = contains.call(options.desc, 'w');
+                       desc.value = null;
+               } else {
+                       writable = contains.call(options.desc, 'w');
+                       desc.get = dgs.get;
+                       desc.set = dgs.set;
+               }
+               delete options.desc;
+       } else if (cacheName === name) {
+               desc = {
+                       configurable: Boolean(options.configurable),
+                       enumerable: Boolean(options.enumerable),
+                       writable: Boolean(options.writable),
+                       value: null
+               };
+       }
+       delete options.configurable;
+       delete options.enumerable;
+       delete options.writable;
+       return dgs;
+};
+
+module.exports = function (props) {
+       return map(props, function (desc, name) { return define(name, desc); });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json
new file mode 100644 (file)
index 0000000..03d81db
--- /dev/null
@@ -0,0 +1,59 @@
+{
+  "name": "d",
+  "version": "0.1.1",
+  "description": "Property descriptor factory",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "scripts": {
+    "test": "node node_modules/tad/bin/tad"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/d.git"
+  },
+  "keywords": [
+    "descriptor",
+    "es",
+    "ecmascript",
+    "ecma",
+    "property",
+    "descriptors",
+    "meta",
+    "properties"
+  ],
+  "dependencies": {
+    "es5-ext": "~0.10.2"
+  },
+  "devDependencies": {
+    "tad": "~0.1.21"
+  },
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/medikoo/d/issues"
+  },
+  "homepage": "https://github.com/medikoo/d",
+  "_id": "d@0.1.1",
+  "dist": {
+    "shasum": "da184c535d18d8ee7ba2aa229b914009fae11309",
+    "tarball": "http://registry.npmjs.org/d/-/d-0.1.1.tgz"
+  },
+  "_from": "d@>=0.1.1 <0.2.0",
+  "_npmVersion": "1.4.3",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "directories": {},
+  "_shasum": "da184c535d18d8ee7ba2aa229b914009fae11309",
+  "_resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/auto-bind.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/auto-bind.js
new file mode 100644 (file)
index 0000000..89edfb8
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var d = require('../');
+
+module.exports = function (t, a) {
+       var o = Object.defineProperties({}, t({
+               bar: d(function () { return this === o; }),
+               bar2: d(function () { return this; })
+       }));
+
+       a.deep([(o.bar)(), (o.bar2)()], [true, o]);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/index.js
new file mode 100644 (file)
index 0000000..3db0af1
--- /dev/null
@@ -0,0 +1,182 @@
+'use strict';
+
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+module.exports = function (t, a) {
+       var o, c, cg, cs, ce, ceg, ces, cew, cw, e, eg, es, ew, v, vg, vs, w, df, dfg
+         , dfs;
+
+       o = Object.create(Object.prototype, {
+               c: t('c', c = {}),
+               cgs: t.gs('c', cg = function () {}, cs = function () {}),
+               ce: t('ce', ce = {}),
+               cegs: t.gs('ce', ceg = function () {}, ces = function () {}),
+               cew: t('cew', cew = {}),
+               cw: t('cw', cw = {}),
+               e: t('e', e = {}),
+               egs: t.gs('e', eg = function () {}, es = function () {}),
+               ew: t('ew', ew = {}),
+               v: t('', v = {}),
+               vgs: t.gs('', vg = function () {}, vs = function () {}),
+               w: t('w', w = {}),
+
+               df: t(df = {}),
+               dfgs: t.gs(dfg = function () {}, dfs = function () {})
+       });
+
+       return {
+               c: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'c');
+                       a(d.value, c, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'cgs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, cg, "GS Get");
+                       a(d.set, cs, "GS Set");
+                       a(d.configurable, true, "GS Configurable");
+                       a(d.enumerable, false, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               ce: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'ce');
+                       a(d.value, ce, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'cegs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, ceg, "GS Get");
+                       a(d.set, ces, "GS Set");
+                       a(d.configurable, true, "GS Configurable");
+                       a(d.enumerable, true, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               cew: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'cew');
+                       a(d.value, cew, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               cw: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'cw');
+                       a(d.value, cw, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               e: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'e');
+                       a(d.value, e, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'egs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, eg, "GS Get");
+                       a(d.set, es, "GS Set");
+                       a(d.configurable, false, "GS Configurable");
+                       a(d.enumerable, true, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               ew: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'ew');
+                       a(d.value, ew, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               v: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'v');
+                       a(d.value, v, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'vgs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, vg, "GS Get");
+                       a(d.set, vs, "GS Set");
+                       a(d.configurable, false, "GS Configurable");
+                       a(d.enumerable, false, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               w: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'w');
+                       a(d.value, w, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               d: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'df');
+                       a(d.value, df, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, true, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'dfgs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, dfg, "GS Get");
+                       a(d.set, dfs, "GS Set");
+                       a(d.configurable, true, "GS Configurable");
+                       a(d.enumerable, false, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               Options: {
+                       v: function (a) {
+                               var x = {}, d = t(x, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, writable: true,
+                                       value: x, foo: true }, "No descriptor");
+                               d = t('c', 'foo', { marko: 'elo' });
+                               a.deep(d, { configurable: true, enumerable: false, writable: false,
+                                       value: 'foo', marko: 'elo' }, "Descriptor");
+                       },
+                       gs: function (a) {
+                               var gFn = function () {}, sFn = function () {}, d;
+                               d = t.gs(gFn, sFn, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, get: gFn, set: sFn,
+                                       foo: true }, "No descriptor");
+                               d = t.gs(null, sFn, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, get: undefined,
+                                       set: sFn, foo: true }, "No descriptor: Just set");
+                               d = t.gs(gFn, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, get: gFn,
+                                       set: undefined, foo: true }, "No descriptor: Just get");
+
+                               d = t.gs('e', gFn, sFn, { bar: true });
+                               a.deep(d, { configurable: false, enumerable: true, get: gFn, set: sFn,
+                                       bar: true }, "Descriptor");
+                               d = t.gs('e', null, sFn, { bar: true });
+                               a.deep(d, { configurable: false, enumerable: true, get: undefined,
+                                       set: sFn, bar: true }, "Descriptor: Just set");
+                               d = t.gs('e', gFn, { bar: true });
+                               a.deep(d, { configurable: false, enumerable: true, get: gFn,
+                                       set: undefined, bar: true }, "Descriptor: Just get");
+                       }
+               }
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/lazy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/lazy.js
new file mode 100644 (file)
index 0000000..8266deb
--- /dev/null
@@ -0,0 +1,77 @@
+'use strict';
+
+var d = require('../')
+
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+module.exports = function (t, a) {
+       var Foo = function () {}, i = 1, o, o2, desc;
+       Object.defineProperties(Foo.prototype, t({
+               bar: d(function () { return ++i; }),
+               bar2: d(function () { return this.bar + 23; }),
+               bar3: d(function () { return this.bar2 + 34; }, { desc: 'ew' }),
+               bar4: d(function () { return this.bar3 + 12; }, { cacheName: '_bar4_' }),
+               bar5: d(function () { return this.bar4 + 3; },
+                       { cacheName: '_bar5_', desc: 'e' })
+       }));
+
+       desc = getOwnPropertyDescriptor(Foo.prototype, 'bar');
+       a(desc.configurable, true, "Configurable: default");
+       a(desc.enumerable, false, "Enumerable: default");
+
+       o = new Foo();
+       a.deep([o.bar, o.bar2, o.bar3, o.bar4, o.bar5], [2, 25, 59, 71, 74],
+               "Values");
+
+       a.deep(getOwnPropertyDescriptor(o, 'bar3'), { configurable: false,
+               enumerable: true, writable: true, value: 59 }, "Desc");
+       a(o.hasOwnProperty('bar4'), false, "Cache not exposed");
+       desc = getOwnPropertyDescriptor(o, 'bar5');
+       a.deep(desc, { configurable: false,
+               enumerable: true, get: desc.get, set: desc.set }, "Cache & Desc: desc");
+
+       o2 = Object.create(o);
+       o2.bar = 30;
+       o2.bar3 = 100;
+
+       a.deep([o2.bar, o2.bar2, o2.bar3, o2.bar4, o2.bar5], [30, 25, 100, 112, 115],
+               "Extension Values");
+
+       Foo = function () {};
+       Object.defineProperties(Foo.prototype, t({
+               test: d('w', function () { return 'raz'; }),
+               test2: d('', function () { return 'raz'; }, { desc: 'w' }),
+               test3: d('', function () { return 'raz'; },
+                       { cacheName: '__test3__', desc: 'w' }),
+               test4: d('w', 'bar')
+       }));
+
+       o = new Foo();
+       o.test = 'marko';
+       a.deep(getOwnPropertyDescriptor(o, 'test'),
+               { configurable: false, enumerable: false, writable: true, value: 'marko' },
+               "Set before get");
+       o.test2 = 'marko2';
+       a.deep(getOwnPropertyDescriptor(o, 'test2'),
+               { configurable: false, enumerable: false, writable: true, value: 'marko2' },
+               "Set before get: Custom desc");
+       o.test3 = 'marko3';
+       a.deep(getOwnPropertyDescriptor(o, '__test3__'),
+               { configurable: false, enumerable: false, writable: true, value: 'marko3' },
+               "Set before get: Custom cache name");
+       a(o.test4, 'bar', "Resolve by value");
+
+       a.h1("Flat");
+       Object.defineProperties(Foo.prototype, t({
+               flat: d(function () { return 'foo'; }, { flat: true }),
+               flat2: d(function () { return 'bar'; }, { flat: true })
+       }));
+
+       a.h2("Instance");
+       a(o.flat, 'foo', "Value");
+       a(o.hasOwnProperty('flat'), false, "Instance");
+       a(Foo.prototype.flat, 'foo', "Prototype");
+
+       a.h2("Direct");
+       a(Foo.prototype.flat2, 'bar');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lint b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lint
new file mode 100644 (file)
index 0000000..d1da610
--- /dev/null
@@ -0,0 +1,38 @@
+@root
+
+module
+
+indent 2
+maxlen 100
+tabs
+
+ass
+continue
+forin
+nomen
+plusplus
+vars
+
+./global.js
+./function/_define-length.js
+./function/#/copy.js
+./object/unserialize.js
+./test/function/valid-function.js
+evil
+
+./math/_pack-ieee754.js
+./math/_unpack-ieee754.js
+./math/clz32/shim.js
+./math/imul/shim.js
+./number/to-uint32.js
+./string/#/at.js
+bitwise
+
+./math/fround/shim.js
+predef+ Float32Array
+
+./object/first-key.js
+forin
+
+./test/reg-exp/#/index.js
+predef+ __dirname
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lintignore b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lintignore
new file mode 100644 (file)
index 0000000..ed703ed
--- /dev/null
@@ -0,0 +1,8 @@
+/string/#/normalize/_data.js
+/test/boolean/is-boolean.js
+/test/date/is-date.js
+/test/number/is-number.js
+/test/object/is-copy.js
+/test/object/is-object.js
+/test/reg-exp/is-reg-exp.js
+/test/string/is-string.js
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.npmignore b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.npmignore
new file mode 100644 (file)
index 0000000..eb09b50
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/.lintcache
+/npm-debug.log
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.travis.yml b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.travis.yml
new file mode 100644 (file)
index 0000000..a183dbc
--- /dev/null
@@ -0,0 +1,15 @@
+sudo: false # http://docs.travis-ci.com/user/workers/container-based-infrastructure/
+language: node_js
+node_js:
+  - 0.10
+  - 0.12
+  - iojs
+
+before_install:
+  - mkdir node_modules; ln -s ../ node_modules/es5-ext
+
+notifications:
+  email:
+    - medikoo+es5-ext@medikoo.com
+
+script: "npm test && npm run lint"
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/CHANGES b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/CHANGES
new file mode 100644 (file)
index 0000000..5d0ace5
--- /dev/null
@@ -0,0 +1,611 @@
+v0.10.7  --  2015.04.22
+* New utlitities. They're convention differs from v0.10, as they were supposed to land in v1.
+  Still they're non breaking and start the conventions to be used in v1
+  * Object.validateArrayLike
+  * Object.validateArrayLikeObject
+  * Object.validateStringifiable
+  * Object.validateStringifiableValue
+  * Universal utilities for array-like/iterable objects
+    * Iterable.is
+    * Iterable.validate
+    * Iterable.validateObject
+    * Iterable.forEach
+* Fix camelToHyphen resolution, it must be absolutely reversable by hyphenToCamel
+* Fix calculations of large numbers in Math.tanh
+* Fix algorithm of Math.sinh
+* Fix indexes to not use real symbols
+* Fix length of String.fromCodePoint
+* Fix tests of Array#copyWithin
+* Update Travis CI configuration
+
+v0.10.6  --  2015.02.02
+* Fix handling of infinite values in Math.trunc
+* Fix handling of getters in Object.normalizeOptions
+
+v0.10.5  --  2015.01.20
+* Add Function#toStringTokens
+* Add Object.serialize and Object.unserialize
+* Add String.randomUniq
+* Fix Strin#camelToHyphen issue with tokens that end with digit
+* Optimise Number.isInteger logic
+* Improve documentation
+* Configure lint scripts
+* Fix spelling of LICENSE
+
+v0.10.4  --  2014.04.30
+* Assure maximum spec compliance of Array.of and Array.from (thanks @mathiasbynens)
+* Improve documentations
+
+v0.10.3  --  2014.04.29
+Provide accurate iterators handling:
+* Array.from improvements:
+  * Assure right unicode symbols resolution when processing strings in Array.from
+  * Rely on ES6 symbol shim and use native @@iterator Symbol if provided by environment
+* Add methods:
+  * Array.prototype.entries
+  * Array.prototype.keys
+  * Array.prototype.values
+  * Array.prototype[@@iterator]
+  * String.prototype[@@iterator]
+
+Improve documentation
+
+v0.10.2  --  2014.04.24
+- Simplify and deprecate `isCallable`. It seems in ES5 based engines there are
+  no callable objects which are `typeof obj !== 'function'`
+- Update Array.from map callback signature (up to latest resolution of TC39)
+- Improve documentation
+
+v0.10.1  --  2014.04.14
+Bump version for npm
+(Workaround for accidental premature publish & unpublish of v0.10.0 a while ago)
+
+v0.10.0  --  2014.04.13
+Major update:
+- All methods and function specified for ECMAScript 6 are now introduced as
+  shims accompanied with functions through which (optionally) they can be
+  implementend on native objects
+- Filename convention was changed to shorter and strictly lower case names. e.g.
+  `lib/String/prototype/starts-with` became `string/#/starts-with`
+- Generated functions are guaranteed to have expected length
+- Objects with null prototype (created via `Object.create(null)`) are widely
+  supported (older version have crashed due to implied `obj.hasOwnProperty` and
+  related invocations)
+- Support array subclasses
+- When handling lists do not limit its length to Uint32 range
+- Use newly introduced `Object.eq` for strict equality in place of `Object.is`
+- Iteration of Object have been improved so properties that were hidden or
+  removed after iteration started are not iterated.
+
+Additions:
+- `Array.isPlainArray`
+- `Array.validArray`
+- `Array.prototype.concat` (as updated with ES6)
+- `Array.prototype.copyWithin` (as introduced with ES6)
+- `Array.prototype.fill` (as introduced with ES6)
+- `Array.prototype.filter` (as updated with ES6)
+- `Array.prototype.findIndex` (as introduced with ES6)
+- `Array.prototype.map` (as updated with ES6)
+- `Array.prototype.separate`
+- `Array.prototype.slice` (as updated with ES6)
+- `Array.prototype.splice` (as updated with ES6)
+- `Function.prototype.copy`
+- `Math.acosh` (as introduced with ES6)
+- `Math.atanh` (as introduced with ES6)
+- `Math.cbrt` (as introduced with ES6)
+- `Math.clz32` (as introduced with ES6)
+- `Math.cosh` (as introduced with ES6)
+- `Math.expm1` (as introduced with ES6)
+- `Math.fround` (as introduced with ES6)
+- `Math.hypot` (as introduced with ES6)
+- `Math.imul` (as introduced with ES6)
+- `Math.log2` (as introduced with ES6)
+- `Math.log10` (as introduced with ES6)
+- `Math.log1p` (as introduced with ES6)
+- `Math.sinh` (as introduced with ES6)
+- `Math.tanh` (as introduced with ES6)
+- `Math.trunc` (as introduced with ES6)
+- `Number.EPSILON` (as introduced with ES6)
+- `Number.MIN_SAFE_INTEGER` (as introduced with ES6)
+- `Number.MAX_SAFE_INTEGER` (as introduced with ES6)
+- `Number.isFinite` (as introduced with ES6)
+- `Number.isInteger` (as introduced with ES6)
+- `Number.isSafeInteger` (as introduced with ES6)
+- `Object.create` (with fix for V8 issue which disallows prototype turn of
+  objects derived from null
+- `Object.eq` - Less restrictive version of `Object.is` based on SameValueZero
+  algorithm
+- `Object.firstKey`
+- `Object.keys` (as updated with ES6)
+- `Object.mixinPrototypes`
+- `Object.primitiveSet`
+- `Object.setPrototypeOf` (as introduced with ES6)
+- `Object.validObject`
+- `RegExp.escape`
+- `RegExp.prototype.match` (as introduced with ES6)
+- `RegExp.prototype.replace` (as introduced with ES6)
+- `RegExp.prototype.search` (as introduced with ES6)
+- `RegExp.prototype.split` (as introduced with ES6)
+- `RegExp.prototype.sticky` (as introduced with ES6)
+- `RegExp.prototype.unicode` (as introduced with ES6)
+- `String.fromCodePoint` (as introduced with ES6)
+- `String.raw` (as introduced with ES6)
+- `String.prototype.at`
+- `String.prototype.codePointAt` (as introduced with ES6)
+- `String.prototype.normalize` (as introduced with ES6)
+- `String.prototype.plainReplaceAll`
+
+Removals:
+- `reserved` set
+- `Array.prototype.commonLeft`
+- `Function.insert`
+- `Function.remove`
+- `Function.prototype.silent`
+- `Function.prototype.wrap`
+- `Object.descriptor` Move to external `d` project.
+  See: https://github.com/medikoo/d
+- `Object.diff`
+- `Object.extendDeep`
+- `Object.reduce`
+- `Object.values`
+- `String.prototype.trimCommonLeft`
+
+Renames:
+- `Function.i` into `Function.identity`
+- `Function.k` into `Function.constant`
+- `Number.toInt` into `Number.toInteger`
+- `Number.toUint` into `Number.toPosInteger`
+- `Object.extend` into `Object.assign` (as introduced in ES 6)
+- `Object.extendProperties` into `Object.mixin`, with improved internal
+  handling, so it matches temporarily specified `Object.mixin` for ECMAScript 6
+- `Object.isList` into `Object.isArrayLike`
+- `Object.mapToArray` into `Object.toArray` (with fixed function length)
+- `Object.toPlainObject` into `Object.normalizeOptions` (as this is the real
+  use case where we use this function)
+- `Function.prototype.chain` into `Function.prototype.compose`
+- `Function.prototype.match` into `Function.prototype.spread`
+- `String.prototype.format` into `String.formatMethod`
+
+Improvements & Fixes:
+- Remove workaround for primitive values handling in object iterators
+- `Array.from`: Update so it follows ES 6 spec
+- `Array.prototype.compact`: filters just null and undefined values
+  (not all falsies)
+- `Array.prototype.eIndexOf` and `Array.prototype.eLastIndexOf`: fix position
+  handling, improve internals
+- `Array.prototype.find`: return undefined not null, in case of not found
+  (follow ES 6)
+- `Array.prototype.remove` fix function length
+- `Error.custom`: simplify, Custom class case is addressed by outer
+  `error-create` project -> https://github.com/medikoo/error-create
+- `Error.isError` true only for Error instances (remove detection of host
+  Exception objects)
+- `Number.prototype.pad`: Normalize negative pad
+- `Object.clear`: Handle errors same way as in `Object.assign`
+- `Object.compact`: filters just null and undefined values (not all falsies)
+- `Object.compare`: Take into account NaN values
+- `Object.copy`: Split into `Object.copy` and `Object.copyDeep`
+- `Object.isCopy`: Separate into `Object.isCopy` and `Object.isCopyDeep`, where
+  `isCopyDeep` handles nested plain objects and plain arrays only
+- `String.prototype.endsWith`: Adjust up to ES6 specification
+- `String.prototype.repeat`: Adjust up to ES6 specification and improve algorithm
+- `String.prototype.simpleReplace`: Rename into `String.prototype.plainReplace`
+- `String.prototype.startsWith`: Adjust up to ES6 specification
+- Update lint rules, and adjust code to that
+- Update Travis CI configuration
+- Remove Makefile (it's cross-env utility)
+
+v0.9.2  --  2013.03.11
+Added:
+* Array.prototype.isCopy
+* Array.prototype.isUniq
+* Error.CustomError
+* Function.validFunction
+* Object.extendDeep
+* Object.descriptor.binder
+* Object.safeTraverse
+* RegExp.validRegExp
+* String.prototype.capitalize
+* String.prototype.simpleReplace
+
+Fixed:
+* Fix Array.prototype.diff for sparse arrays
+* Accept primitive objects as input values in Object iteration methods and
+  Object.clear, Object.count, Object.diff, Object.extend,
+  Object.getPropertyNames, Object.values
+* Pass expected arguments to callbacks of Object.filter, Object.mapKeys,
+  Object.mapToArray, Object.map
+* Improve callable callback support in Object.mapToArray
+
+v0.9.1  --  2012.09.17
+* Object.reduce - reduce for hash-like collections
+* Accapt any callable object as callback in Object.filter, mapKeys and map
+* Convention cleanup
+
+v0.9.0  --  2012.09.13
+We're getting to real solid API
+
+Removed:
+* Function#memoize - it's grown up to be external package, to be soon published
+  as 'memoizee'
+* String.guid - it doesn't fit es5-ext (extensions) concept, will be provided as
+  external package
+# Function.arguments - obsolete
+# Function.context - obsolete
+# Function#flip - not readable when used, so it was never used
+# Object.clone - obsolete and confusing
+
+Added:
+* String#camelToHyphen - String format convertion
+
+Renamed:
+* String#dashToCamelCase -> String#hyphenToCamel
+
+Fixes:
+* Object.isObject - Quote names in literals that match reserved keywords
+  (older implementations crashed on that)
+* String#repeat - Do not accept negative values (coerce them to 1)
+
+Improvements:
+* Array#remove - Accepts many arguments, we can now remove many values at once
+* Object iterators (forEach, map, some) - Compare function invoked with scope
+  object bound to this
+* Function#curry - Algorithm cleanup
+* Object.isCopy - Support for all types, not just plain objects
+* Object.isPlainObject - Support for cross-frame objects
+* Do not memoize any of the functions, it shouldn't be decided internally
+* Remove Object.freeze calls in reserved, it's not up to convention
+* Improved documentation
+* Better linting (hard-core approach using both JSLint mod and JSHint)
+* Optional arguments are now documented in funtions signature
+
+v0.8.2  --  2012.06.22
+Fix errors in Array's intersection and exclusion methods, related to improper
+usage of contains method
+
+v0.8.1  --  2012.06.13
+Reorganized internal logic of Function.prototype.memoize. So it's more safe now
+and clears cache properly. Additionally preventCache option was provided.
+
+v0.8.0  --  2012.05.28
+Again, major overhaul. Probably last experimental stuff was trashed, all API
+looks more like standard extensions now.
+
+Changes:
+* Turn all Object.prototype extensions into functions and move them to Object
+namespace. We learned that extending Object.prototype is bad idea in any case.
+* Rename Function.prototype.curry into Function.prototype.partial. This function
+  is really doing partial application while currying is slightly different
+  concept.
+* Convert Function.prototype.ncurry to new implementation of
+  Function.prototype.curry, it now serves real curry concept additionaly it
+  covers use cases for aritize and hold, which were removed.
+* Rename Array's peek to last, and provide support for sparse arrays in it
+* Rename Date's monthDaysCount into daysInMonth
+* Simplify object iterators, now order of iteration can be configured with just
+  compareFn argument (no extra byKeys option)
+* Rename Object.isDuplicate to Object.isCopy
+* Rename Object.isEqual to Object.is which is compatible with future 'is'
+  keyword
+* Function.memoize is now Function.prototype.memoize. Additionally clear cache
+  functionality is added, and access to original arguments object.
+* Rename validation functions: assertNotNull to validValue, assertCallable to
+  validCallable. validValue was moved to Object namespace. On success they now
+  return validated value instead of true, it supports better composition.
+  Additionally created Date.validDate and Error.validError
+* All documentation is now held in README.md not in code files.
+* Move guid to String namespace. All guids now start with numbers.
+* Array.generate: fill argument is now optional
+* Object.toArray is now Array.from (as new ES6 specification draft suggests)
+* All methods that rely on indexOf or lastIndexOf, now rely on egal (Object.is)
+  versions of them (eIndexOf, eLastIndexOf)
+* Turn all get* functions that returned methods into actuall methods (get*
+  functionality can still be achieved with help of Function.prototype.partial).
+  So: Date.getFormat is now Date.prototype.format,
+  Number.getPad is now Number.prototype.pad,
+  String.getFormat is now String.prototype.format,
+  String.getIndent is now String.prototype.indent,
+  String.getPad is now String.prototype.pad
+* Refactored Object.descriptor, it is now just two functions, main one and
+  main.gs, main is for describing values, and gs for describing getters and
+  setters. Configuration is passed with first argument as string e.g. 'ce' for
+  configurable and enumerable. If no configuration string is provided then by
+  default it returns configurable and writable but not enumerable for value or
+  configurable but not enumerable for getter/setter
+* Function.prototype.silent now returns prepared function (it was
+  expected to be fixed for 0.7)
+* Reserved keywords map (reserved) is now array not hash.
+* Object.merge is now Object.extend (while former Object.extend was completely
+  removed) - 'extend' implies that we change object, not creating new one (as
+  'merge' may imply). Similarily Object.mergeProperties was renamed to
+  Object.extendProperties
+* Position argument support in Array.prototype.contains and
+  String.prototype.contains (so it follows ES6 specification draft)
+* endPosition argument support in String.prototype.endsWith and fromPosition
+  argument support in String.prototype.startsWith (so it follows ES6
+  specification draft)
+* Better and cleaner String.prototype.indent implementation. No default value
+  for indent string argument, optional nest value (defaults to 1), remove
+  nostart argument
+* Correct length values for most methods (so they reflect length of similar
+  methods in standard)
+* Length argument is now optional in number and string pad methods.
+* Improve arguments validation in general, so it adheres to standard conventions
+* Fixed format of package.json
+
+Removed methods and functions:
+* Object.prototype.slice - Object is not ordered collection, so slice doesn't
+  make sense.
+* Function's rcurry, rncurry, s - too cumbersome for JS, not many use cases for
+  that
+* Function.prototype.aritize and Function.prototype.hold - same functionality
+  can be achieved with new Function.prototype.curry
+* Function.prototype.log - provided more generic Function.prototype.wrap for
+  same use case
+* getNextIdGenerator - no use case for that (String.guid should be used if
+  needed)
+* Object.toObject - Can be now acheived with Object(validValue(x))
+* Array.prototype.someValue - no real use case (personally used once and
+  case was already controversial)
+* Date.prototype.duration - moved to external package
+* Number.getAutoincrement - No real use case
+* Object.prototype.extend, Object.prototype.override,
+  Object.prototype.plainCreate, Object.prototype.plainExtend - It was probably
+  too complex, same should be achieved just with Object.create,
+  Object.descriptor and by saving references to super methods in local scope.
+* Object.getCompareBy - Functions should be created individually for each use
+  case
+* Object.get, Object.getSet, Object.set, Object.unset - Not many use cases and
+  same can be easily achieved with simple inline function
+* String.getPrefixWith - Not real use case for something that can be easily
+  achieved with '+' operator
+* Object.isPrimitive - It's just negation of Object.isObject
+* Number.prototype.isLess, Number.prototype.isLessOrEqual - they shouldn't be in
+  Number namespace and should rather be addressed with simple inline functions.
+* Number.prototype.subtract - Should rather be addressed with simple inline
+  function
+
+New methods and functions:
+* Array.prototype.lastIndex - Returns last declared index in array
+* String.prototype.last - last for strings
+* Function.prototype.wrap - Wrap function with other, it allows to specify
+  before and after behavior transform return value or prevent original function
+  from being called.
+* Math.sign - Returns sign of a number (already in ES6 specification draft)
+* Number.toInt - Converts value to integer (already in ES6 specification draft)
+* Number.isNaN - Returns true if value is NaN (already in ES6 specification
+  draft)
+* Number.toUint - Converts value to unsigned integer
+* Number.toUint32 - Converts value to 32bit unsigned integer
+* Array.prototype.eIndexOf, eLastIndexOf - Egal version (that uses Object.is) of
+  standard methods (all methods that were using native indexOf or lastIndexOf
+  now uses eIndexOf and elastIndexOf respectively)
+* Array.of - as it's specified for ES6
+
+Fixes:
+* Fixed binarySearch so it always returns valid list index
+* Object.isList - it failed on lists that are callable (e.g. NodeList in Nitro
+  engine)
+* Object.map now supports third argument for callback
+
+v0.7.1  --  2012.01.05
+New methods:
+* Array.prototype.firstIndex - returns first valid index of array (for
+       sparse arrays it may not be '0'
+
+Improvements:
+* Array.prototype.first - now returns value for index returned by firstIndex
+* Object.prototype.mapToArray - can be called without callback, then array of
+       key-value pairs is returned
+
+Fixes
+* Array.prototype.forEachRight, object's length read through UInt32 conversion
+
+v0.7.0  --  2011.12.27
+Major update.
+Stepped back from experimental ideas and introduced more standard approach
+taking example from how ES5 methods and functions are designed. One exceptions
+is that, we don’t refrain from declaring methods for Object.prototype - it’s up
+to developer whether how he decides to use it in his context (as function or as
+method).
+
+In general:
+* Removed any method 'functionalization' and functionalize method itself.
+       es5-ext declares plain methods, which can be configured to work as functions
+       with call.bind(method) - see documentation.
+* Removed separation of Object methods for ES5 (with descriptors) and
+       ES3 (plain) - we're following ES5 idea on that, some methods are intended just
+       for enumerable properties and some are for all properties, all are declared
+       for Object.prototype
+* Removed separation of Array generic (collected in List folder) and not generic
+       methods (collected in Array folder). Now all methods are generic and are in
+       Array/prototype folder. This separation also meant, that methods in Array are
+       usually destructive. We don’t do that separation now, there’s generally no use
+       case for destructive iterators, we should be fine with one version of each
+       method, (same as ES5 is fine with  e.g. one, non destructive 'filter' method)
+* Folder structure resembles tree of native ES5 Objects
+* All methods are written with ES5 conventions in mind, it means that most
+       methods are generic and can be run on any object. In more detail:
+       ** Array.prototype and Object.prototype methods can be run on any object (any
+               not null or undefined value),
+       ** Date.prototype methods should be called only on Date instances.
+       ** Function.prototype methods can be called on any callable objects (not
+               necessarily functions)
+       ** Number.prototype & String.prototype methods can be called on any value, in
+               case of Number it it’ll be degraded to number, in case of string it’ll be
+               degraded to string.
+* Travis CI support (only for Node v0.6 branch, as v0.4 has buggy V8 version)
+
+Improvements for existing functions and methods:
+* Function.memoize (was Function.cache) is now fully generic, can operate on any
+       type of arguments and it’s NaN safe (all NaN objects are considered equal)
+* Method properties passed to Object.prototype.extend or
+       Object.prototype.override can aside of _super optionally take prototype object
+       via _proto argument
+* Object iterators: forEach, mapToArray and every can now iterate in specified
+       order
+* pluck, invoke and other functions that return reusable functions or methods
+       have now their results memoized.
+
+New methods:
+* Global: assertNotNull, getNextIdGenerator, guid, isEqual, isPrimitive,
+       toObject
+* Array: generate
+* Array.prototype: binarySearch, clear, contains, diff, exclusion, find, first,
+       forEachRight, group, indexesOf, intersection, remove, someRight, someValue
+* Boolean: isBoolean
+* Date: isDate
+* Function: arguments, context, insert, isArguments, remove
+* Function.prototype: not, silent
+* Number: getAutoincrement, isNumber
+* Number.prototype: isLessOrEqual, isLess, subtract
+* Object: assertCallable, descriptor (functions for clean descriptors),
+       getCompareBy, isCallable, isObject
+* Object.prototype: clone (real clone), compact, count, diff, empty,
+       getPropertyNames, get, keyOf, mapKeys, override, plainCreate, plainExtend,
+       slice, some, unset
+* RegExp: isRegExp
+* String: getPrefixWith, isString
+* String.prototype: caseInsensitiveCompare, contains, isNumeric
+
+Renamed methods:
+* Date.clone -> Date.prototype.copy
+* Date.format -> Date.getFormat
+* Date/day/floor -> Date.prototype.floorDay
+* Date/month/floor -> Date.prototype.floorMonth
+* Date/month/year -> Date.prototype.floorYear
+* Function.cache -> Function.memoize
+* Function.getApplyArg -> Function.prototype.match
+* Function.sequence -> Function.prototype.chain
+* List.findSameStartLength -> Array.prototype.commonLeft
+* Number.pad -> Number.getPad
+* Object/plain/clone -> Object.prototype.copy
+* Object/plain/elevate -> Object.prototype.flatten
+* Object/plain/same -> Object.prototype.isDuplicate
+* Object/plain/setValue -> Object.getSet
+* String.format -> String.getFormat
+* String.indent -> String.getIndent
+* String.pad -> String.getPad
+* String.trimLeftStr -> String.prototype.trimCommonLeft
+* Object.merge -> Object.prototype.mergeProperties
+* Object/plain/pluck -> Object.prototype.get
+* Array.clone is now Array.prototype.copy and can be used also on any array-like
+       objects
+* List.isList -> Object.isList
+* List.toArray -> Object.prototype.toArray
+* String/convert/dashToCamelCase -> String.prototype.dashToCamelCase
+
+Removed methods:
+* Array.compact - removed destructive version (that operated on same array), we
+       have now non destructive version as Array.prototype.compact.
+* Function.applyBind -> use apply.bind directly
+* Function.bindBind -> use bind.bind directly
+* Function.callBind -> use call.bind directly
+* Fuction.clone -> no valid use case
+* Function.dscope -> controversial approach, shouldn’t be considered seriously
+* Function.functionalize -> It was experimental but standards are standards
+* List/sort/length -> It can be easy obtained by Object.getCompareBy(‘length’)
+* List.concat -> Concat’s for array-like’s makes no sense, just convert to array
+       first
+* List.every -> Use Array.prototype.every directly
+* List.filter -> Use Array.prototype.filter directly
+* List.forEach -> User Array.prototype.forEach directly
+* List.isListObject -> No valid use case, do: isList(list) && (typeof list ===
+       'object’)
+* List.map -> Use Array.prototype.map directly
+* List.reduce -> Use Array.prototype.reduce directly
+* List.shiftSame -> Use Array.prototype.commonLeft and do slice
+* List.slice -> Use Array.prototype.slice directly
+* List.some -> Use Array.prototype.some directly
+* Object.bindMethods -> it was version that considered descriptors, we have now
+       Object.prototype.bindMethods which operates only on enumerable properties
+* Object.every -> version that considered all properties, we have now
+       Object.prototype.every which iterates only enumerables
+* Object.invoke -> no use case
+* Object.mergeDeep -> no use case
+* Object.pluck -> no use case
+* Object.same -> it considered descriptors, now there’s only Object.isDuplicate
+       which compares only enumerable properties
+* Object.sameType -> no use case
+* Object.toDescriptor and Object.toDescriptors -> replaced by much nicer
+       Object.descriptor functions
+* Object/plain/link -> no use case (it was used internally only by
+       Object/plain/merge)
+* Object/plain/setTrue -> now easily configurable by more universal
+       Object.getSet(true)
+* String.trimRightStr -> Eventually String.prototype.trimCommonRight will be
+       added
+
+v0.6.3  --  2011.12.12
+* Cleared npm warning for misnamed property in package.json
+
+v0.6.2  --  2011.08.12
+* Calling String.indent without scope (global scope then) now treated as calling
+  it with null scope, it allows more direct invocations when using default nest
+  string: indent().call(str, nest)
+
+v0.6.1  --  2011.08.08
+* Added TAD test suite to devDependencies, configured test commands.
+  Tests can be run with 'make test' or 'npm test'
+
+v0.6.0  --  2011.08.07
+New methods:
+* Array: clone, compact (in place)
+* Date: format, duration, clone, monthDaysCount, day.floor, month.floor,
+  year.floor
+* Function: getApplyArg, , ncurry, rncurry, hold, cache, log
+* List: findSameStartLength, shiftSame, peek, isListObject
+* Number: pad
+* Object: sameType, toString, mapToArray, mergeDeep, toDescriptor,
+  toDescriptors, invoke
+* String: startsWith, endsWith, indent, trimLeftStr, trimRightStr, pad, format
+
+Fixed:
+* Object.extend does now prototypal extend as exptected
+* Object.merge now tries to overwrite only configurable properties
+* Function.flip
+
+Improved:
+* Faster List.toArray
+* Better global retrieval
+* Functionalized all Function methods
+* Renamed bindApply and bindCall to applyBind and callBind
+* Removed Function.inherit (as it's unintuitive curry clone)
+* Straightforward logic in Function.k
+* Fixed naming of some tests files (letter case issue)
+* Renamed Function.saturate into Function.lock
+* String.dashToCamelCase digits support
+* Strings now considered as List objects
+* Improved List.compact
+* Concise logic for List.concat
+* Test wit TAD in clean ES5 context
+
+v0.5.1  --  2011.07.11
+* Function's bindBind, bindCall and bindApply now more versatile
+
+v0.5.0  --  2011.07.07
+* Removed Object.is and List.apply
+* Renamed Object.plain.is to Object.plain.isPlainObject (keep naming convention
+  consistent)
+* Improved documentation
+
+v0.4.0  --  2011.07.05
+* Take most functions on Object to Object.plain to keep them away from object
+  descriptors
+* Object functions with ES5 standard in mind (object descriptors)
+
+v0.3.0  --  2011.06.24
+* New functions
+* Consistent file naming (dash instead of camelCase)
+
+v0.2.1  --  2011.05.28
+* Renamed Functions.K and Function.S to to lowercase versions (use consistent
+  naming)
+
+v0.2.0  --  2011.05.28
+* Renamed Array folder to List (as its generic functions for array-like objects)
+* Added Makefile
+* Added various functions
+
+v0.1.0  --  2011.05.24
+* Initial version
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/LICENSE b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/LICENSE
new file mode 100644 (file)
index 0000000..de39071
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2011-2015 Mariusz Nowak (www.medikoo.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/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/README.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/README.md
new file mode 100644 (file)
index 0000000..11d8a34
--- /dev/null
@@ -0,0 +1,993 @@
+# es5-ext
+## ECMAScript 5 extensions
+### (with respect to ECMAScript 6 standard)
+
+Shims for upcoming ES6 standard and other goodies implemented strictly with ECMAScript conventions in mind.
+
+It's designed to be used in compliant ECMAScript 5 or ECMAScript 6 environments. Older environments are not supported, although most of the features should work with correct ECMAScript 5 shim on board.
+
+When used in ECMAScript 6 environment, native implementation (if valid) takes precedence over shims.
+
+### Installation
+
+       $ npm install es5-ext
+       
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+### Usage
+
+#### ECMAScript 6 features
+
+You can force ES6 features to be implemented in your environment, e.g. following will assign `from` function to `Array` (only if it's not implemented already).
+
+```javascript
+require('es5-ext/array/from/implement');
+Array.from('foo'); // ['f', 'o', 'o']
+```
+
+You can also access shims directly, without fixing native objects. Following will return native `Array.from` if it's available and fallback to shim if it's not.
+
+```javascript
+var aFrom = require('es5-ext/array/from');
+aFrom('foo'); // ['f', 'o', 'o']
+```
+
+If you want to use shim unconditionally (even if native implementation exists) do:
+
+```javascript
+var aFrom = require('es5-ext/array/from/shim');
+aFrom('foo'); // ['f', 'o', 'o']
+```
+
+##### List of ES6 shims
+
+It's about properties introduced with ES6 and those that have been updated in new spec.
+
+- `Array.from` -> `require('es5-ext/array/from')`
+- `Array.of` -> `require('es5-ext/array/of')`
+- `Array.prototype.concat` -> `require('es5-ext/array/#/concat')`
+- `Array.prototype.copyWithin` -> `require('es5-ext/array/#/copy-within')`
+- `Array.prototype.entries` -> `require('es5-ext/array/#/entries')`
+- `Array.prototype.fill` -> `require('es5-ext/array/#/fill')`
+- `Array.prototype.filter` -> `require('es5-ext/array/#/filter')`
+- `Array.prototype.find` -> `require('es5-ext/array/#/find')`
+- `Array.prototype.findIndex` -> `require('es5-ext/array/#/find-index')`
+- `Array.prototype.keys` -> `require('es5-ext/array/#/keys')`
+- `Array.prototype.map` -> `require('es5-ext/array/#/map')`
+- `Array.prototype.slice` -> `require('es5-ext/array/#/slice')`
+- `Array.prototype.splice` -> `require('es5-ext/array/#/splice')`
+- `Array.prototype.values` -> `require('es5-ext/array/#/values')`
+- `Array.prototype[@@iterator]` -> `require('es5-ext/array/#/@@iterator')`
+- `Math.acosh` -> `require('es5-ext/math/acosh')`
+- `Math.asinh` -> `require('es5-ext/math/asinh')`
+- `Math.atanh` -> `require('es5-ext/math/atanh')`
+- `Math.cbrt` -> `require('es5-ext/math/cbrt')`
+- `Math.clz32` -> `require('es5-ext/math/clz32')`
+- `Math.cosh` -> `require('es5-ext/math/cosh')`
+- `Math.exmp1` -> `require('es5-ext/math/expm1')`
+- `Math.fround` -> `require('es5-ext/math/fround')`
+- `Math.hypot` -> `require('es5-ext/math/hypot')`
+- `Math.imul` -> `require('es5-ext/math/imul')`
+- `Math.log1p` -> `require('es5-ext/math/log1p')`
+- `Math.log2` -> `require('es5-ext/math/log2')`
+- `Math.log10` -> `require('es5-ext/math/log10')`
+- `Math.sign` -> `require('es5-ext/math/sign')`
+- `Math.signh` -> `require('es5-ext/math/signh')`
+- `Math.tanh` -> `require('es5-ext/math/tanh')`
+- `Math.trunc` -> `require('es5-ext/math/trunc')`
+- `Number.EPSILON` -> `require('es5-ext/number/epsilon')`
+- `Number.MAX_SAFE_INTEGER` -> `require('es5-ext/number/max-safe-integer')`
+- `Number.MIN_SAFE_INTEGER` -> `require('es5-ext/number/min-safe-integer')`
+- `Number.isFinite` -> `require('es5-ext/number/is-finite')`
+- `Number.isInteger` -> `require('es5-ext/number/is-integer')`
+- `Number.isNaN` -> `require('es5-ext/number/is-nan')`
+- `Number.isSafeInteger` -> `require('es5-ext/number/is-safe-integer')`
+- `Object.assign` -> `require('es5-ext/object/assign')`
+- `Object.keys` -> `require('es5-ext/object/keys')`
+- `Object.setPrototypeOf` -> `require('es5-ext/object/set-prototype-of')`
+- `RegExp.prototype.match` -> `require('es5-ext/reg-exp/#/match')`
+- `RegExp.prototype.replace` -> `require('es5-ext/reg-exp/#/replace')`
+- `RegExp.prototype.search` -> `require('es5-ext/reg-exp/#/search')`
+- `RegExp.prototype.split` -> `require('es5-ext/reg-exp/#/split')`
+- `RegExp.prototype.sticky` -> Implement with `require('es5-ext/reg-exp/#/sticky/implement')`, use as function with `require('es5-ext/reg-exp/#/is-sticky')`
+- `RegExp.prototype.unicode` -> Implement with `require('es5-ext/reg-exp/#/unicode/implement')`, use as function with `require('es5-ext/reg-exp/#/is-unicode')`
+- `String.fromCodePoint` -> `require('es5-ext/string/from-code-point')`
+- `String.raw` -> `require('es5-ext/string/raw')`
+- `String.prototype.codePointAt` -> `require('es5-ext/string/#/code-point-at')`
+- `String.prototype.contains` -> `require('es5-ext/string/#/contains')`
+- `String.prototype.endsWith` -> `require('es5-ext/string/#/ends-with')`
+- `String.prototype.normalize` -> `require('es5-ext/string/#/normalize')`
+- `String.prototype.repeat` -> `require('es5-ext/string/#/repeat')`
+- `String.prototype.startsWith` -> `require('es5-ext/string/#/starts-with')`
+- `String.prototype[@@iterator]` -> `require('es5-ext/string/#/@@iterator')`
+
+#### Non ECMAScript standard features
+
+__es5-ext__ provides also other utils, and implements them as if they were proposed for a standard. It mostly offers methods (not functions) which can directly be assigned to native prototypes:
+
+```javascript
+Object.defineProperty(Function.prototype, 'partial', { value: require('es5-ext/function/#/partial'),
+  configurable: true, enumerable: false, writable: true });
+Object.defineProperty(Array.prototype, 'flatten', { value: require('es5-ext/array/#/flatten'),
+  configurable: true, enumerable: false, writable: true });
+Object.defineProperty(String.prototype, 'capitalize', { value: require('es5-ext/string/#/capitalize'),
+  configurable: true, enumerable: false, writable: true });
+```
+
+See [es5-extend](https://github.com/wookieb/es5-extend#es5-extend), a great utility that automatically will extend natives for you. 
+
+__Important:__ Remember to __not__ extend natives in scope of generic reusable packages (e.g. ones you intend to publish to npm). Extending natives is fine __only__ if you're the _owner_ of the global scope, so e.g. in final project you lead development of.
+
+When you're in situation when native extensions are not good idea, then you should use methods indirectly:
+
+
+```javascript
+var flatten = require('es5-ext/array/#/flatten');
+
+flatten.call([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+for better convenience you can turn methods into functions:
+
+
+```javascript
+var call = Function.prototype.call
+var flatten = call.bind(require('es5-ext/array/#/flatten'));
+
+flatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+You can configure custom toolkit (like [underscorejs](http://underscorejs.org/)), and use it throughout your application
+
+```javascript
+var util = {};
+util.partial = call.bind(require('es5-ext/function/#/partial'));
+util.flatten = call.bind(require('es5-ext/array/#/flatten'));
+util.startsWith = call.bind(require('es5-ext/string/#/starts-with'));
+
+util.flatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+As with native ones most methods are generic and can be run on any type of object.
+
+## API
+
+### Global extensions
+
+#### global _(es5-ext/global)_
+
+Object that represents global scope
+
+### Array Constructor extensions
+
+#### from(arrayLike[, mapFn[, thisArg]]) _(es5-ext/array/from)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from).  
+Returns array representation of _iterable_ or _arrayLike_. If _arrayLike_ is an instance of array, its copy is returned.
+
+#### generate([length[, …fill]]) _(es5-ext/array/generate)_
+
+Generate an array of pre-given _length_ built of repeated arguments.
+
+#### isPlainArray(x) _(es5-ext/array/is-plain-array)_
+
+Returns true if object is plain array (not instance of one of the Array's extensions).
+
+#### of([…items]) _(es5-ext/array/of)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.of).  
+Create an array from given arguments.
+
+#### toArray(obj) _(es5-ext/array/to-array)_
+
+Returns array representation of `obj`. If `obj` is already an array, `obj` is returned back.
+
+#### validArray(obj) _(es5-ext/array/valid-array)_
+
+Returns `obj` if it's an array, otherwise throws `TypeError`
+
+### Array Prototype extensions
+
+#### arr.binarySearch(compareFn) _(es5-ext/array/#/binary-search)_
+
+In __sorted__ list search for index of item for which _compareFn_ returns value closest to _0_.  
+It's variant of binary search algorithm
+
+#### arr.clear() _(es5-ext/array/#/clear)_
+
+Clears the array
+
+#### arr.compact() _(es5-ext/array/#/compact)_
+
+Returns a copy of the context with all non-values (`null` or `undefined`) removed.
+
+#### arr.concat() _(es5-ext/array/#/concat)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.concat).  
+ES6's version of `concat`. Supports `isConcatSpreadable` symbol, and returns array of same type as the context.
+
+#### arr.contains(searchElement[, position]) _(es5-ext/array/#/contains)_
+
+Whether list contains the given value.
+
+#### arr.copyWithin(target, start[, end]) _(es5-ext/array/#/copy-within)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.copywithin).  
+
+#### arr.diff(other) _(es5-ext/array/#/diff)_
+
+Returns the array of elements that are present in context list but not present in other list.
+
+#### arr.eIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-index-of)_
+
+_egal_ version of `indexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision
+
+#### arr.eLastIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-last-index-of)_
+
+_egal_ version of `lastIndexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision
+
+#### arr.entries() _(es5-ext/array/#/entries)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.entries).  
+Returns iterator object, which traverses the array. Each value is represented with an array, where first value is an index and second is corresponding to index value.
+
+#### arr.exclusion([…lists]]) _(es5-ext/array/#/exclusion)_
+
+Returns the array of elements that are found only in one of the lists (either context list or list provided in arguments).
+
+#### arr.fill(value[, start, end]) _(es5-ext/array/#/fill)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.fill).  
+
+#### arr.filter(callback[, thisArg]) _(es5-ext/array/#/filter)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.filter).  
+ES6's version of `filter`, returns array of same type as the context.
+
+#### arr.find(predicate[, thisArg]) _(es5-ext/array/#/find)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.find).  
+Return first element for which given function returns true
+
+#### arr.findIndex(predicate[, thisArg]) _(es5-ext/array/#/find-index)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.findindex).  
+Return first index for which given function returns true
+
+#### arr.first() _(es5-ext/array/#/first)_
+
+Returns value for first defined index
+
+#### arr.firstIndex() _(es5-ext/array/#/first-index)_
+
+Returns first declared index of the array
+
+#### arr.flatten() _(es5-ext/array/#/flatten)_
+
+Returns flattened version of the array
+
+#### arr.forEachRight(cb[, thisArg]) _(es5-ext/array/#/for-each-right)_
+
+`forEach` starting from last element
+
+#### arr.group(cb[, thisArg]) _(es5-ext/array/#/group)_
+
+Group list elements by value returned by _cb_ function
+
+#### arr.indexesOf(searchElement[, fromIndex]) _(es5-ext/array/#/indexes-of)_
+
+Returns array of all indexes of given value
+
+#### arr.intersection([…lists]) _(es5-ext/array/#/intersection)_
+
+Computes the array of values that are the intersection of all lists (context list and lists given in arguments)
+
+#### arr.isCopy(other) _(es5-ext/array/#/is-copy)_
+
+Returns true if both context and _other_ lists have same content
+
+#### arr.isUniq() _(es5-ext/array/#/is-uniq)_
+
+Returns true if all values in array are unique
+
+#### arr.keys() _(es5-ext/array/#/keys)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.keys).  
+Returns iterator object, which traverses all array indexes.
+
+#### arr.last() _(es5-ext/array/#/last)_
+
+Returns value of last defined index
+
+#### arr.lastIndex() _(es5-ext/array/#/last)_
+
+Returns last defined index of the array
+
+#### arr.map(callback[, thisArg]) _(es5-ext/array/#/map)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.map).  
+ES6's version of `map`, returns array of same type as the context.
+
+#### arr.remove(value[, …valuen]) _(es5-ext/array/#/remove)_
+
+Remove values from the array
+
+#### arr.separate(sep) _(es5-ext/array/#/separate)_
+
+Returns array with items separated with `sep` value
+
+#### arr.slice(callback[, thisArg]) _(es5-ext/array/#/slice)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.slice).  
+ES6's version of `slice`, returns array of same type as the context.
+
+#### arr.someRight(cb[, thisArg]) _(es5-ext/array/#/someRight)_
+
+`some` starting from last element
+
+#### arr.splice(callback[, thisArg]) _(es5-ext/array/#/splice)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.splice).  
+ES6's version of `splice`, returns array of same type as the context.
+
+#### arr.uniq() _(es5-ext/array/#/uniq)_
+
+Returns duplicate-free version of the array
+
+#### arr.values() _(es5-ext/array/#/values)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.values).  
+Returns iterator object which traverses all array values.
+
+#### arr[@@iterator] _(es5-ext/array/#/@@iterator)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype-@@iterator).  
+Returns iterator object which traverses all array values.
+
+### Boolean Constructor extensions
+
+#### isBoolean(x) _(es5-ext/boolean/is-boolean)_
+
+Whether value is boolean
+
+### Date Constructor extensions
+
+#### isDate(x) _(es5-ext/date/is-date)_
+
+Whether value is date instance
+
+#### validDate(x) _(es5-ext/date/valid-date)_
+
+If given object is not date throw TypeError in other case return it.
+
+### Date Prototype extensions
+
+#### date.copy(date) _(es5-ext/date/#/copy)_
+
+Returns a copy of the date object
+
+#### date.daysInMonth() _(es5-ext/date/#/days-in-month)_
+
+Returns number of days of date's month
+
+#### date.floorDay() _(es5-ext/date/#/floor-day)_
+
+Sets the date time to 00:00:00.000
+
+#### date.floorMonth() _(es5-ext/date/#/floor-month)_
+
+Sets date day to 1 and date time to 00:00:00.000
+
+#### date.floorYear() _(es5-ext/date/#/floor-year)_
+
+Sets date month to 0, day to 1 and date time to 00:00:00.000
+
+#### date.format(pattern) _(es5-ext/date/#/format)_
+
+Formats date up to given string. Supported patterns:
+
+* `%Y` - Year with century, 1999, 2003
+* `%y` - Year without century, 99, 03
+* `%m` - Month, 01..12
+* `%d` - Day of the month 01..31
+* `%H` - Hour (24-hour clock), 00..23
+* `%M` - Minute, 00..59
+* `%S` - Second, 00..59
+* `%L` - Milliseconds, 000..999
+
+### Error Constructor extensions
+
+#### custom(message/*, code, ext*/) _(es5-ext/error/custom)_
+
+Creates custom error object, optinally extended with `code` and other extension properties (provided with `ext` object)  
+
+#### isError(x) _(es5-ext/error/is-error)_
+
+Whether value is an error (instance of `Error`).  
+
+#### validError(x) _(es5-ext/error/valid-error)_
+
+If given object is not error throw TypeError in other case return it.
+
+### Error Prototype extensions
+
+#### err.throw() _(es5-ext/error/#/throw)_
+
+Throws error
+
+### Function Constructor extensions
+
+Some of the functions were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele
+
+#### constant(x) _(es5-ext/function/constant)_
+
+Returns a constant function that returns pregiven argument
+
+_k(x)(y)  =def  x_
+
+#### identity(x) _(es5-ext/function/identity)_
+
+Identity function. Returns first argument
+
+_i(x)  =def  x_
+
+#### invoke(name[, …args]) _(es5-ext/function/invoke)_
+
+Returns a function that takes an object as an argument, and applies object's
+_name_ method to arguments.  
+_name_ can be name of the method or method itself.
+
+_invoke(name, …args)(object, …args2)  =def  object\[name\]\(…args, …args2\)_
+
+#### isArguments(x) _(es5-ext/function/is-arguments)_
+
+Whether value is arguments object
+
+#### isFunction(arg) _(es5-ext/function/is-function)_
+
+Wether value is instance of function
+
+#### noop() _(es5-ext/function/noop)_
+
+No operation function
+
+#### pluck(name) _(es5-ext/function/pluck)_
+
+Returns a function that takes an object, and returns the value of its _name_
+property
+
+_pluck(name)(obj)  =def  obj[name]_
+
+#### validFunction(arg) _(es5-ext/function/valid-function)_
+
+If given object is not function throw TypeError in other case return it.
+
+### Function Prototype extensions
+
+Some of the methods were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele
+
+#### fn.compose([…fns]) _(es5-ext/function/#/compose)_
+
+Applies the functions in reverse argument-list order.
+
+_f1.compose(f2, f3, f4)(…args)  =def  f1(f2(f3(f4(…arg))))_
+
+#### fn.copy() _(es5-ext/function/#/copy)_
+
+Produces copy of given function
+
+#### fn.curry([n]) _(es5-ext/function/#/curry)_
+
+Invoking the function returned by this function only _n_ arguments are passed to the underlying function. If the underlying function is not saturated, the result is a function that passes all its arguments to the underlying function.  
+If _n_ is not provided then it defaults to context function length
+
+_f.curry(4)(arg1, arg2)(arg3)(arg4)  =def  f(arg1, args2, arg3, arg4)_
+
+#### fn.lock([…args]) _(es5-ext/function/#/lock)_
+
+Returns a function that applies the underlying function to _args_, and ignores its own arguments.
+
+_f.lock(…args)(…args2)  =def  f(…args)_
+
+_Named after it's counterpart in Google Closure_
+
+#### fn.not() _(es5-ext/function/#/not)_
+
+Returns a function that returns boolean negation of value returned by underlying function.
+
+_f.not()(…args)  =def !f(…args)_
+
+#### fn.partial([…args]) _(es5-ext/function/#/partial)_
+
+Returns a function that when called will behave like context function called with initially passed arguments. If more arguments are suplilied, they are appended to initial args.
+
+_f.partial(…args1)(…args2)  =def  f(…args1, …args2)_
+
+#### fn.spread() _(es5-ext/function/#/spread)_
+
+Returns a function that applies underlying function with first list argument
+
+_f.match()(args)  =def  f.apply(null, args)_
+
+#### fn.toStringTokens() _(es5-ext/function/#/to-string-tokens)_
+
+Serializes function into two (arguments and body) string tokens. Result is plain object with `args` and `body` properties.
+
+### Math extensions
+
+#### acosh(x) _(es5-ext/math/acosh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.acosh).  
+
+#### asinh(x) _(es5-ext/math/asinh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.asinh).  
+
+#### atanh(x) _(es5-ext/math/atanh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.atanh).  
+
+#### cbrt(x) _(es5-ext/math/cbrt)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cbrt).  
+
+#### clz32(x) _(es5-ext/math/clz32)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.clz32).  
+
+#### cosh(x) _(es5-ext/math/cosh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cosh).  
+
+#### expm1(x) _(es5-ext/math/expm1)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.expm1).  
+
+#### fround(x) _(es5-ext/math/fround)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.fround).  
+
+#### hypot([…values]) _(es5-ext/math/hypot)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.hypot).  
+
+#### imul(x, y) _(es5-ext/math/imul)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.imul).  
+
+#### log1p(x) _(es5-ext/math/log1p)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log1p).  
+
+#### log2(x) _(es5-ext/math/log2)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log2).  
+
+#### log10(x) _(es5-ext/math/log10)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log10).  
+
+#### sign(x) _(es5-ext/math/sign)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sign).  
+
+#### sinh(x) _(es5-ext/math/sinh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sinh).  
+
+#### tanh(x) _(es5-ext/math/tanh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.tanh).  
+
+#### trunc(x) _(es5-ext/math/trunc)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.trunc).  
+
+### Number Constructor extensions
+
+#### EPSILON _(es5-ext/number/epsilon)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.epsilon).  
+
+The difference between 1 and the smallest value greater than 1 that is representable as a Number value, which is approximately 2.2204460492503130808472633361816 x 10-16.
+
+#### isFinite(x) _(es5-ext/number/is-finite)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite).  
+Whether value is finite. Differs from global isNaN that it doesn't do type coercion.
+
+#### isInteger(x) _(es5-ext/number/is-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isinteger).  
+Whether value is integer.
+
+#### isNaN(x) _(es5-ext/number/is-nan)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isnan).  
+Whether value is NaN. Differs from global isNaN that it doesn't do type coercion.
+
+#### isNumber(x) _(es5-ext/number/is-number)_
+
+Whether given value is number
+
+#### isSafeInteger(x) _(es5-ext/number/is-safe-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.issafeinteger).  
+
+#### MAX_SAFE_INTEGER _(es5-ext/number/max-safe-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.maxsafeinteger).  
+The value of Number.MAX_SAFE_INTEGER is 9007199254740991.
+
+#### MIN_SAFE_INTEGER _(es5-ext/number/min-safe-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.minsafeinteger).  
+The value of Number.MIN_SAFE_INTEGER is -9007199254740991 (253-1).
+
+#### toInteger(x) _(es5-ext/number/to-integer)_
+
+Converts value to integer
+
+#### toPosInteger(x) _(es5-ext/number/to-pos-integer)_
+
+Converts value to positive integer. If provided value is less than 0, then 0 is returned
+
+#### toUint32(x) _(es5-ext/number/to-uint32)_
+
+Converts value to unsigned 32 bit integer. This type is used for array lengths.
+See: http://www.2ality.com/2012/02/js-integers.html
+
+### Number Prototype extensions
+
+#### num.pad(length[, precision]) _(es5-ext/number/#/pad)_
+
+Pad given number with zeros. Returns string
+
+### Object Constructor extensions
+
+#### assign(target, source[, …sourcen]) _(es5-ext/object/assign)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).  
+Extend _target_ by enumerable own properties of other objects. If properties are already set on target object, they will be overwritten.
+
+#### clear(obj) _(es5-ext/object/clear)_
+
+Remove all enumerable own properties of the object
+
+#### compact(obj) _(es5-ext/object/compact)_
+
+Returns copy of the object with all enumerable properties that have no falsy values
+
+#### compare(obj1, obj2) _(es5-ext/object/compare)_
+
+Universal cross-type compare function. To be used for e.g. array sort.
+
+#### copy(obj) _(es5-ext/object/copy)_
+
+Returns copy of the object with all enumerable properties.
+
+#### copyDeep(obj) _(es5-ext/object/copy-deep)_
+
+Returns deep copy of the object with all enumerable properties.
+
+#### count(obj) _(es5-ext/object/count)_
+
+Counts number of enumerable own properties on object
+
+#### create(obj[, properties]) _(es5-ext/object/create)_
+
+`Object.create` alternative that provides workaround for [V8 issue](http://code.google.com/p/v8/issues/detail?id=2804).
+
+When `null` is provided as a prototype, it's substituted with specially prepared object that derives from Object.prototype but has all Object.prototype properties shadowed with undefined.
+
+It's quirky solution that allows us to have plain objects with no truthy properties but with turnable prototype.
+
+Use only for objects that you plan to switch prototypes of and be aware of limitations of this workaround.
+
+#### eq(x, y) _(es5-ext/object/eq)_
+
+Whether two values are equal, using [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.
+
+#### every(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/every)_
+
+Analogous to Array.prototype.every. Returns true if every key-value pair in this object satisfies the provided testing function.  
+Optionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### filter(obj, cb[, thisArg]) _(es5-ext/object/filter)_
+
+Analogous to Array.prototype.filter. Returns new object with properites for which _cb_ function returned truthy value.
+
+#### firstKey(obj) _(es5-ext/object/first-key)_
+
+Returns first enumerable key of the object, as keys are unordered by specification, it can be any key of an object.
+
+#### flatten(obj) _(es5-ext/object/flatten)_
+
+Returns new object, with flatten properties of input object
+
+_flatten({ a: { b: 1 }, c: { d: 1 } })  =def  { b: 1, d: 1 }_
+
+#### forEach(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/for-each)_
+
+Analogous to Array.prototype.forEach. Calls a function for each key-value pair found in object
+Optionally _compareFn_ can be provided which assures that properties are iterated in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### getPropertyNames() _(es5-ext/object/get-property-names)_
+
+Get all (not just own) property names of the object
+
+#### is(x, y) _(es5-ext/object/is)_
+
+Whether two values are equal, using [_SameValue_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.
+
+#### isArrayLike(x) _(es5-ext/object/is-array-like)_
+
+Whether object is array-like object
+
+#### isCopy(x, y) _(es5-ext/object/is-copy)_
+
+Two values are considered a copy of same value when all of their own enumerable properties have same values.
+
+#### isCopyDeep(x, y) _(es5-ext/object/is-copy-deep)_
+
+Deep comparision of objects
+
+#### isEmpty(obj) _(es5-ext/object/is-empty)_
+
+True if object doesn't have any own enumerable property
+
+#### isObject(arg) _(es5-ext/object/is-object)_
+
+Whether value is not primitive
+
+#### isPlainObject(arg) _(es5-ext/object/is-plain-object)_
+
+Whether object is plain object, its protototype should be Object.prototype and it cannot be host object.
+
+#### keyOf(obj, searchValue) _(es5-ext/object/key-of)_
+
+Search object for value
+
+#### keys(obj) _(es5-ext/object/keys)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys).  
+ES6's version of `keys`, doesn't throw on primitive input
+
+#### map(obj, cb[, thisArg]) _(es5-ext/object/map)_
+
+Analogous to Array.prototype.map. Creates a new object with properties which values are results of calling a provided function on every key-value pair in this object.
+
+#### mapKeys(obj, cb[, thisArg]) _(es5-ext/object/map-keys)_
+
+Create new object with same values, but remapped keys
+
+#### mixin(target, source) _(es5-ext/object/mixin)_
+
+Extend _target_ by all own properties of other objects. Properties found in both objects will be overwritten (unless they're not configurable and cannot be overwritten).
+_It was for a moment part of ECMAScript 6 draft._
+
+#### mixinPrototypes(target, …source]) _(es5-ext/object/mixin-prototypes)_
+
+Extends _target_, with all source and source's prototype properties.
+Useful as an alternative for `setPrototypeOf` in environments in which it cannot be shimmed (no `__proto__` support).
+
+#### normalizeOptions(options) _(es5-ext/object/normalize-options)_
+
+Normalizes options object into flat plain object.  
+
+Useful for functions in which we either need to keep options object for future reference or need to modify it for internal use.
+
+- It never returns input `options` object back (always a copy is created)
+- `options` can be undefined in such case empty plain object is returned.
+- Copies all enumerable properties found down prototype chain.
+
+#### primitiveSet([…names]) _(es5-ext/object/primitive-set)_
+
+Creates `null` prototype based plain object, and sets on it all property names provided in arguments to true.
+
+#### safeTraverse(obj[, …names]) _(es5-ext/object/safe-traverse)_
+
+Safe navigation of object properties. See http://wiki.ecmascript.org/doku.php?id=strawman:existential_operator
+
+#### serialize(value) _(es5-ext/object/serialize)_
+
+Serialize value into string. Differs from [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) that it serializes also dates, functions and regular expresssions.
+
+#### setPrototypeOf(object, proto) _(es5-ext/object/set-prototype-of)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.setprototypeof).  
+If native version is not provided, it depends on existence of `__proto__` functionality, if it's missing, `null` instead of function is exposed.
+
+#### some(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/some)_
+
+Analogous to Array.prototype.some Returns true if any key-value pair satisfies the provided
+testing function.  
+Optionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### toArray(obj[, cb[, thisArg[, compareFn]]]) _(es5-ext/object/to-array)_
+
+Creates an array of results of calling a provided function on every key-value pair in this object.  
+Optionally _compareFn_ can be provided which assures that results are added in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### unserialize(str) _(es5-ext/object/unserialize)_
+
+Userializes value previously serialized with [serialize](#serializevalue-es5-extobjectserialize)
+
+#### validCallable(x) _(es5-ext/object/valid-callable)_
+
+If given object is not callable throw TypeError in other case return it.
+
+#### validObject(x) _(es5-ext/object/valid-object)_
+
+Throws error if given value is not an object, otherwise it is returned.
+
+#### validValue(x) _(es5-ext/object/valid-value)_
+
+Throws error if given value is `null` or `undefined`, otherwise returns value.
+
+### RegExp Constructor extensions
+
+#### escape(str) _(es5-ext/reg-exp/escape)_
+
+Escapes string to be used in regular expression
+
+#### isRegExp(x) _(es5-ext/reg-exp/is-reg-exp)_
+
+Whether object is regular expression
+
+#### validRegExp(x) _(es5-ext/reg-exp/valid-reg-exp)_
+
+If object is regular expression it is returned, otherwise TypeError is thrown.
+
+### RegExp Prototype extensions
+
+#### re.isSticky(x) _(es5-ext/reg-exp/#/is-sticky)_
+
+Whether regular expression has `sticky` flag.
+
+It's to be used as counterpart to [regExp.sticky](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.sticky) if it's not implemented.
+
+#### re.isUnicode(x) _(es5-ext/reg-exp/#/is-unicode)_
+
+Whether regular expression has `unicode` flag.
+
+It's to be used as counterpart to [regExp.unicode](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.unicode) if it's not implemented.
+
+#### re.match(string) _(es5-ext/reg-exp/#/match)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.match).  
+
+#### re.replace(string, replaceValue) _(es5-ext/reg-exp/#/replace)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.replace).  
+
+#### re.search(string) _(es5-ext/reg-exp/#/search)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.search).  
+
+#### re.split(string) _(es5-ext/reg-exp/#/search)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.split).  
+
+#### re.sticky _(es5-ext/reg-exp/#/sticky/implement)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.sticky).  
+It's a getter, so only `implement` and `is-implemented` modules are provided.
+
+#### re.unicode _(es5-ext/reg-exp/#/unicode/implement)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.unicode).  
+It's a getter, so only `implement` and `is-implemented` modules are provided.
+
+### String Constructor extensions
+
+#### formatMethod(fMap) _(es5-ext/string/format-method)_
+
+Creates format method. It's used e.g. to create `Date.prototype.format` method
+
+#### fromCodePoint([…codePoints]) _(es5-ext/string/from-code-point)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.fromcodepoint)
+
+#### isString(x) _(es5-ext/string/is-string)_
+
+Whether object is string
+
+#### randomUniq() _(es5-ext/string/random-uniq)_
+
+Returns randomly generated id, with guarantee of local uniqueness (no same id will be returned twice)
+
+#### raw(callSite[, …substitutions]) _(es5-ext/string/raw)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.raw)
+
+### String Prototype extensions
+
+#### str.at(pos) _(es5-ext/string/#/at)_
+
+_Proposed for ECMAScript 6/7 standard, but not (yet) in a draft_
+
+Returns a string at given position in Unicode-safe manner.
+Based on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.at).
+
+#### str.camelToHyphen() _(es5-ext/string/#/camel-to-hyphen)_
+
+Convert camelCase string to hyphen separated, e.g. one-two-three -> oneTwoThree.
+Useful when converting names from js property convention into filename convention.
+
+#### str.capitalize() _(es5-ext/string/#/capitalize)_
+
+Capitalize first character of a string
+
+#### str.caseInsensitiveCompare(str) _(es5-ext/string/#/case-insensitive-compare)_
+
+Case insensitive compare
+
+#### str.codePointAt(pos) _(es5-ext/string/#/code-point-at)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.codepointat)
+
+Based on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.codePointAt).
+
+#### str.contains(searchString[, position]) _(es5-ext/string/#/contains)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.contains)
+
+Whether string contains given string.
+
+#### str.endsWith(searchString[, endPosition]) _(es5-ext/string/#/ends-with)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.endswith).  
+Whether strings ends with given string
+
+#### str.hyphenToCamel() _(es5-ext/string/#/hyphen-to-camel)_
+
+Convert hyphen separated string to camelCase, e.g. one-two-three -> oneTwoThree.
+Useful when converting names from filename convention to js property name convention.
+
+#### str.indent(str[, count]) _(es5-ext/string/#/indent)_
+
+Indents each line with provided _str_ (if _count_ given then _str_ is repeated _count_ times).
+
+#### str.last() _(es5-ext/string/#/last)_
+
+Return last character
+
+#### str.normalize([form]) _(es5-ext/string/#/normalize)_
+
+[_Introduced with ECMAScript 6_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize).  
+Returns the Unicode Normalization Form of a given string.  
+Based on Matsuza's version. Code used for integrated shim can be found at [github.com/walling/unorm](https://github.com/walling/unorm/blob/master/lib/unorm.js)
+
+#### str.pad(fill[, length]) _(es5-ext/string/#/pad)_
+
+Pad string with _fill_.
+If _length_ si given than _fill_ is reapated _length_ times.
+If _length_ is negative then pad is applied from right.
+
+#### str.repeat(n) _(es5-ext/string/#/repeat)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.repeat).  
+Repeat given string _n_ times
+
+#### str.plainReplace(search, replace) _(es5-ext/string/#/plain-replace)_
+
+Simple `replace` version. Doesn't support regular expressions. Replaces just first occurrence of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).
+
+#### str.plainReplaceAll(search, replace) _(es5-ext/string/#/plain-replace-all)_
+
+Simple `replace` version. Doesn't support regular expressions. Replaces all occurrences of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).
+
+#### str.startsWith(searchString[, position]) _(es5-ext/string/#/starts-with)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.startswith).  
+Whether strings starts with given string
+
+#### str[@@iterator] _(es5-ext/string/#/@@iterator)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype-@@iterator).  
+Returns iterator object which traverses all string characters (with respect to unicode symbols)
+
+### Tests [![Build Status](https://travis-ci.org/medikoo/es5-ext.png)](https://travis-ci.org/medikoo/es5-ext)
+
+       $ npm test
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..0f714a1
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, require('es6-symbol').iterator, { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..a694626
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.prototype[require('es6-symbol').iterator] : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..72eb1f8
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function () {
+       var arr = ['foo', 1], iterator, result;
+       if (typeof arr[iteratorSymbol] !== 'function') return false;
+       iterator = arr[iteratorSymbol]();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== 'foo') return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..ff295df
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('../values/shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js
new file mode 100644 (file)
index 0000000..d8343ce
--- /dev/null
@@ -0,0 +1,9 @@
+// Used internally to sort array of lists by length
+
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer');
+
+module.exports = function (a, b) {
+       return toPosInt(a.length) - toPosInt(b.length);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js
new file mode 100644 (file)
index 0000000..8eb4567
--- /dev/null
@@ -0,0 +1,28 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , floor    = Math.floor;
+
+module.exports = function (compareFn) {
+       var length, low, high, middle;
+
+       value(this);
+       callable(compareFn);
+
+       length = toPosInt(this.length);
+       low = 0;
+       high = length - 1;
+
+       while (low <= high) {
+               middle = floor((low + high) / 2);
+               if (compareFn(this[middle]) < 0) high = middle - 1;
+               else low = middle + 1;
+       }
+
+       if (high < 0) return 0;
+       if (high >= length) return length - 1;
+       return high;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js
new file mode 100644 (file)
index 0000000..3587bdf
--- /dev/null
@@ -0,0 +1,12 @@
+// Inspired by Google Closure:
+// http://closure-library.googlecode.com/svn/docs/
+// closure_goog_array_array.js.html#goog.array.clear
+
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function () {
+       value(this).length = 0;
+       return this;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js
new file mode 100644 (file)
index 0000000..d529d5a
--- /dev/null
@@ -0,0 +1,9 @@
+// Inspired by: http://documentcloud.github.com/underscore/#compact
+
+'use strict';
+
+var filter = Array.prototype.filter;
+
+module.exports = function () {
+       return filter.call(this, function (val) { return val != null; });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js
new file mode 100644 (file)
index 0000000..80c67cb
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'concat', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js
new file mode 100644 (file)
index 0000000..db205ea
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.concat : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js
new file mode 100644 (file)
index 0000000..cab8bc9
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).concat('foo') instanceof SubArray;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js
new file mode 100644 (file)
index 0000000..8b28e4a
--- /dev/null
@@ -0,0 +1,39 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+  , toPosInt     = require('../../../number/to-pos-integer')
+  , isObject     = require('../../../object/is-object')
+
+  , isArray = Array.isArray, concat = Array.prototype.concat
+  , forEach = Array.prototype.forEach
+
+  , isSpreadable;
+
+isSpreadable = function (value) {
+       if (!value) return false;
+       if (!isObject(value)) return false;
+       if (value['@@isConcatSpreadable'] !== undefined) {
+               return Boolean(value['@@isConcatSpreadable']);
+       }
+       return isArray(value);
+};
+
+module.exports = function (item/*, …items*/) {
+       var result;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return concat.apply(this, arguments);
+       }
+       result = new this.constructor(this.length);
+       forEach.call(this, function (val, i) { result[i] = val; });
+       forEach.call(arguments, function (arg) {
+               var base;
+               if (isSpreadable(arg)) {
+                       base = result.length;
+                       result.length += toPosInt(arg.length);
+                       forEach.call(arg, function (val, i) { result[base + i] = val; });
+                       return;
+               }
+               result.push(arg);
+       });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js
new file mode 100644 (file)
index 0000000..4a2f9f6
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var indexOf = require('./e-index-of');
+
+module.exports = function (searchElement/*, position*/) {
+       return indexOf.call(this, searchElement, arguments[1]) > -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js
new file mode 100644 (file)
index 0000000..eedbad7
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'copyWithin',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js
new file mode 100644 (file)
index 0000000..bb89d0b
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.copyWithin : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js
new file mode 100644 (file)
index 0000000..8f17e06
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5];
+       if (typeof arr.copyWithin !== 'function') return false;
+       return String(arr.copyWithin(1, 3)) === '1,4,5,4,5';
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js
new file mode 100644 (file)
index 0000000..c0bfb8b
--- /dev/null
@@ -0,0 +1,39 @@
+// Taken from: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var toInteger  = require('../../../number/to-integer')
+  , toPosInt   = require('../../../number/to-pos-integer')
+  , validValue = require('../../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , max = Math.max, min = Math.min;
+
+module.exports = function (target, start/*, end*/) {
+       var o = validValue(this), end = arguments[2], l = toPosInt(o.length)
+         , to, from, fin, count, direction;
+
+       target = toInteger(target);
+       start = toInteger(start);
+       end = (end === undefined) ? l : toInteger(end);
+
+       to = target < 0 ? max(l + target, 0) : min(target, l);
+       from = start < 0 ? max(l + start, 0) : min(start, l);
+       fin = end < 0 ? max(l + end, 0) : min(end, l);
+       count = min(fin - from, l - to);
+       direction = 1;
+
+       if ((from < to) && (to < (from + count))) {
+               direction = -1;
+               from += count - 1;
+               to += count - 1;
+       }
+       while (count > 0) {
+               if (hasOwnProperty.call(o, from)) o[to] = o[from];
+               else delete o[from];
+               from += direction;
+               to += direction;
+               count -= 1;
+       }
+       return o;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js
new file mode 100644 (file)
index 0000000..a1f9541
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var value    = require('../../object/valid-value')
+  , contains = require('./contains')
+
+  , filter = Array.prototype.filter;
+
+module.exports = function (other) {
+       (value(this) && value(other));
+       return filter.call(this, function (item) {
+               return !contains.call(other, item);
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js
new file mode 100644 (file)
index 0000000..80864d0
--- /dev/null
@@ -0,0 +1,29 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , indexOf = Array.prototype.indexOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , abs = Math.abs, floor = Math.floor;
+
+module.exports = function (searchElement/*, fromIndex*/) {
+       var i, l, fromIndex, val;
+       if (searchElement === searchElement) { //jslint: ignore
+               return indexOf.apply(this, arguments);
+       }
+
+       l = toPosInt(value(this).length);
+       fromIndex = arguments[1];
+       if (isNaN(fromIndex)) fromIndex = 0;
+       else if (fromIndex >= 0) fromIndex = floor(fromIndex);
+       else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
+
+       for (i = fromIndex; i < l; ++i) {
+               if (hasOwnProperty.call(this, i)) {
+                       val = this[i];
+                       if (val !== val) return i; //jslint: ignore
+               }
+       }
+       return -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js
new file mode 100644 (file)
index 0000000..4fc536b
--- /dev/null
@@ -0,0 +1,29 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , lastIndexOf = Array.prototype.lastIndexOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , abs = Math.abs, floor = Math.floor;
+
+module.exports = function (searchElement/*, fromIndex*/) {
+       var i, fromIndex, val;
+       if (searchElement === searchElement) { //jslint: ignore
+               return lastIndexOf.apply(this, arguments);
+       }
+
+       value(this);
+       fromIndex = arguments[1];
+       if (isNaN(fromIndex)) fromIndex = (toPosInt(this.length) - 1);
+       else if (fromIndex >= 0) fromIndex = floor(fromIndex);
+       else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
+
+       for (i = fromIndex; i >= 0; --i) {
+               if (hasOwnProperty.call(this, i)) {
+                       val = this[i];
+                       if (val !== val) return i; //jslint: ignore
+               }
+       }
+       return -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js
new file mode 100644 (file)
index 0000000..490de60
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'entries', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js
new file mode 100644 (file)
index 0000000..292792c
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.entries : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js
new file mode 100644 (file)
index 0000000..e186c17
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 'foo'], iterator, result;
+       if (typeof arr.entries !== 'function') return false;
+       iterator = arr.entries();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result || !result.value) return false;
+       if (result.value[0] !== 0) return false;
+       if (result.value[1] !== 1) return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js
new file mode 100644 (file)
index 0000000..c052b53
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array');
+module.exports = function () { return new ArrayIterator(this, 'key+value'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js
new file mode 100644 (file)
index 0000000..f08adc8
--- /dev/null
@@ -0,0 +1,27 @@
+'use strict';
+
+var value    = require('../../object/valid-value')
+  , aFrom    = require('../from')
+  , toArray  = require('../to-array')
+  , contains = require('./contains')
+  , byLength = require('./_compare-by-length')
+
+  , filter = Array.prototype.filter, push = Array.prototype.push;
+
+module.exports = function (/*…lists*/) {
+       var lists, seen, result;
+       if (!arguments.length) return aFrom(this);
+       push.apply(lists = [this], arguments);
+       lists.forEach(value);
+       seen = [];
+       result = [];
+       lists.sort(byLength).forEach(function (list) {
+               result = result.filter(function (item) {
+                       return !contains.call(list, item);
+               }).concat(filter.call(list, function (x) {
+                       return !contains.call(seen, x);
+               }));
+               push.apply(seen, toArray(list));
+       });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js
new file mode 100644 (file)
index 0000000..2251191
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'fill', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js
new file mode 100644 (file)
index 0000000..36c1f66
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.fill : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js
new file mode 100644 (file)
index 0000000..b8e5468
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5, 6];
+       if (typeof arr.fill !== 'function') return false;
+       return String(arr.fill(-1, -3)) === '1,2,3,-1,-1,-1';
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js
new file mode 100644 (file)
index 0000000..45823be
--- /dev/null
@@ -0,0 +1,21 @@
+// Taken from: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var toInteger  = require('../../../number/to-integer')
+  , toPosInt   = require('../../../number/to-pos-integer')
+  , validValue = require('../../../object/valid-value')
+
+  , max = Math.max, min = Math.min;
+
+module.exports = function (value/*, start, end*/) {
+       var o = validValue(this), start = arguments[1], end = arguments[2]
+         , l = toPosInt(o.length), relativeStart, i;
+
+       start = (start === undefined) ? 0 : toInteger(start);
+       end = (end === undefined) ? l : toInteger(end);
+
+       relativeStart = start < 0 ? max(l + start, 0) : min(start, l);
+       for (i = relativeStart; i < l && i < end; ++i) o[i] = value;
+       return o;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js
new file mode 100644 (file)
index 0000000..090c5f1
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'filter', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js
new file mode 100644 (file)
index 0000000..bcf0268
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.filter : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js
new file mode 100644 (file)
index 0000000..5577273
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe')
+
+  , pass = function () { return true; };
+
+module.exports = function () {
+       return (new SubArray()).filter(pass) instanceof SubArray;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js
new file mode 100644 (file)
index 0000000..b0116de
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+  , callable     = require('../../../object/valid-callable')
+
+  , isArray = Array.isArray, filter = Array.prototype.filter
+  , forEach = Array.prototype.forEach, call = Function.prototype.call;
+
+module.exports = function (callbackFn/*, thisArg*/) {
+       var result, thisArg, i;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return filter.apply(this, arguments);
+       }
+       callable(callbackFn);
+       thisArg = arguments[1];
+       result = new this.constructor();
+       i = 0;
+       forEach.call(this, function (val, j, self) {
+               if (call.call(callbackFn, thisArg, val, j, self)) result[i++] = val;
+       });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js
new file mode 100644 (file)
index 0000000..556cb84
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'findIndex',
+               { value: require('./shim'),
+                       configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js
new file mode 100644 (file)
index 0000000..03a987e
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.findIndex : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js
new file mode 100644 (file)
index 0000000..dbd3c81
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var fn = function (x) { return x > 3; };
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5, 6];
+       if (typeof arr.findIndex !== 'function') return false;
+       return arr.findIndex(fn) === 3;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js
new file mode 100644 (file)
index 0000000..957939f
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var callable = require('../../../object/valid-callable')
+  , value    = require('../../../object/valid-value')
+
+  , some = Array.prototype.some, apply = Function.prototype.apply;
+
+module.exports = function (predicate/*, thisArg*/) {
+       var k, self;
+       self = Object(value(this));
+       callable(predicate);
+
+       return some.call(self, function (value, index) {
+               if (apply.call(predicate, this, arguments)) {
+                       k = index;
+                       return true;
+               }
+               return false;
+       }, arguments[1]) ? k : -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js
new file mode 100644 (file)
index 0000000..0f37104
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'find', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js
new file mode 100644 (file)
index 0000000..96819d0
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.find : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js
new file mode 100644 (file)
index 0000000..cc7ec77
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var fn = function (x) { return x > 3; };
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5, 6];
+       if (typeof arr.find !== 'function') return false;
+       return arr.find(fn) === 4;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js
new file mode 100644 (file)
index 0000000..c7ee906
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var findIndex = require('../find-index/shim');
+
+module.exports = function (predicate/*, thisArg*/) {
+       var index = findIndex.apply(this, arguments);
+       return (index === -1) ? undefined : this[index];
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js
new file mode 100644 (file)
index 0000000..7a9e4c3
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+       var i, l;
+       if (!(l = toPosInt(value(this).length))) return null;
+       i = 0;
+       while (!hasOwnProperty.call(this, i)) {
+               if (++i === l) return null;
+       }
+       return i;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js
new file mode 100644 (file)
index 0000000..11df571
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var firstIndex = require('./first-index');
+
+module.exports = function () {
+       var i;
+       if ((i = firstIndex.call(this)) !== null) return this[i];
+       return undefined;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js
new file mode 100644 (file)
index 0000000..c95407d
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var isArray = Array.isArray, forEach = Array.prototype.forEach
+  , push = Array.prototype.push;
+
+module.exports = function flatten() {
+       var r = [];
+       forEach.call(this, function (x) {
+               push.apply(r, isArray(x) ? flatten.call(x) : [x]);
+       });
+       return r;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js
new file mode 100644 (file)
index 0000000..2f0ffae
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , call = Function.prototype.call;
+
+module.exports = function (cb/*, thisArg*/) {
+       var i, self, thisArg;
+
+       self = Object(value(this));
+       callable(cb);
+       thisArg = arguments[1];
+
+       for (i = toPosInt(self.length); i >= 0; --i) {
+               if (hasOwnProperty.call(self, i)) call.call(cb, thisArg, self[i], i, self);
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js
new file mode 100644 (file)
index 0000000..fbb178c
--- /dev/null
@@ -0,0 +1,23 @@
+// Inspired by Underscore's groupBy:
+// http://documentcloud.github.com/underscore/#groupBy
+
+'use strict';
+
+var callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , forEach = Array.prototype.forEach, apply = Function.prototype.apply;
+
+module.exports = function (cb/*, thisArg*/) {
+       var r;
+
+       (value(this) && callable(cb));
+
+       r = {};
+       forEach.call(this, function (v) {
+               var key = apply.call(cb, this, arguments);
+               if (!r.hasOwnProperty(key)) r[key] = [];
+               r[key].push(v);
+       }, arguments[1]);
+       return r;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js
new file mode 100644 (file)
index 0000000..97ef65c
--- /dev/null
@@ -0,0 +1,40 @@
+'use strict';
+
+module.exports = {
+       '@@iterator':   require('./@@iterator'),
+       binarySearch:   require('./binary-search'),
+       clear:          require('./clear'),
+       compact:        require('./compact'),
+       concat:         require('./concat'),
+       contains:       require('./contains'),
+       copyWithin:     require('./copy-within'),
+       diff:           require('./diff'),
+       eIndexOf:       require('./e-index-of'),
+       eLastIndexOf:   require('./e-last-index-of'),
+       entries:        require('./entries'),
+       exclusion:      require('./exclusion'),
+       fill:           require('./fill'),
+       filter:         require('./filter'),
+       find:           require('./find'),
+       findIndex:      require('./find-index'),
+       first:          require('./first'),
+       firstIndex:     require('./first-index'),
+       flatten:        require('./flatten'),
+       forEachRight:   require('./for-each-right'),
+       keys:           require('./keys'),
+       group:          require('./group'),
+       indexesOf:      require('./indexes-of'),
+       intersection:   require('./intersection'),
+       isCopy:         require('./is-copy'),
+       isUniq:         require('./is-uniq'),
+       last:           require('./last'),
+       lastIndex:      require('./last-index'),
+       map:            require('./map'),
+       remove:         require('./remove'),
+       separate:       require('./separate'),
+       slice:          require('./slice'),
+       someRight:      require('./some-right'),
+       splice:         require('./splice'),
+       uniq:           require('./uniq'),
+       values:         require('./values')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js
new file mode 100644 (file)
index 0000000..6b89157
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexOf = require('./e-index-of');
+
+module.exports = function (value/*, fromIndex*/) {
+       var r = [], i, fromIndex = arguments[1];
+       while ((i = indexOf.call(this, value, fromIndex)) !== -1) {
+               r.push(i);
+               fromIndex = i + 1;
+       }
+       return r;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js
new file mode 100644 (file)
index 0000000..fadcb52
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var value    = require('../../object/valid-value')
+  , contains = require('./contains')
+  , byLength = require('./_compare-by-length')
+
+  , filter = Array.prototype.filter, push = Array.prototype.push
+  , slice = Array.prototype.slice;
+
+module.exports = function (/*…list*/) {
+       var lists;
+       if (!arguments.length) slice.call(this);
+       push.apply(lists = [this], arguments);
+       lists.forEach(value);
+       lists.sort(byLength);
+       return lists.reduce(function (a, b) {
+               return filter.call(a, function (x) { return contains.call(b, x); });
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js
new file mode 100644 (file)
index 0000000..ac7c79b
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , eq    = require('../../object/eq')
+  , value = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (other) {
+       var i, l;
+       (value(this) && value(other));
+       l = toPosInt(this.length);
+       if (l !== toPosInt(other.length)) return false;
+       for (i = 0; i < l; ++i) {
+               if (hasOwnProperty.call(this, i) !== hasOwnProperty.call(other, i)) {
+                       return false;
+               }
+               if (!eq(this[i], other[i])) return false;
+       }
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js
new file mode 100644 (file)
index 0000000..b14f461
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexOf = require('./e-index-of')
+
+  , every = Array.prototype.every
+  , isFirst;
+
+isFirst = function (value, index) {
+       return indexOf.call(this, value) === index;
+};
+
+module.exports = function () { return every.call(this, isFirst, this); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js
new file mode 100644 (file)
index 0000000..e18e617
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'keys', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js
new file mode 100644 (file)
index 0000000..2f89cff
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.keys : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..06bd87b
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 'foo'], iterator, result;
+       if (typeof arr.keys !== 'function') return false;
+       iterator = arr.keys();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== 0) return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js
new file mode 100644 (file)
index 0000000..83773f6
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array');
+module.exports = function () { return new ArrayIterator(this, 'key'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js
new file mode 100644 (file)
index 0000000..a191d6e
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+       var i, l;
+       if (!(l = toPosInt(value(this).length))) return null;
+       i = l - 1;
+       while (!hasOwnProperty.call(this, i)) {
+               if (--i === -1) return null;
+       }
+       return i;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js
new file mode 100644 (file)
index 0000000..bf9d2f2
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var lastIndex = require('./last-index');
+
+module.exports = function () {
+       var i;
+       if ((i = lastIndex.call(this)) !== null) return this[i];
+       return undefined;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js
new file mode 100644 (file)
index 0000000..3aabb87
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'map', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js
new file mode 100644 (file)
index 0000000..66f6660
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.map : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js
new file mode 100644 (file)
index 0000000..c328b47
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var identity = require('../../../function/identity')
+  , SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).map(identity) instanceof SubArray;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js
new file mode 100644 (file)
index 0000000..2ee7313
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+  , callable     = require('../../../object/valid-callable')
+
+  , isArray = Array.isArray, map = Array.prototype.map
+  , forEach = Array.prototype.forEach, call = Function.prototype.call;
+
+module.exports = function (callbackFn/*, thisArg*/) {
+       var result, thisArg;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return map.apply(this, arguments);
+       }
+       callable(callbackFn);
+       thisArg = arguments[1];
+       result = new this.constructor(this.length);
+       forEach.call(this, function (val, i, self) {
+               result[i] = call.call(callbackFn, thisArg, val, i, self);
+       });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js
new file mode 100644 (file)
index 0000000..dcf8433
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexOf = require('./e-index-of')
+
+  , forEach = Array.prototype.forEach, splice = Array.prototype.splice;
+
+module.exports = function (item/*, …item*/) {
+       forEach.call(arguments, function (item) {
+               var index = indexOf.call(this, item);
+               if (index !== -1) splice.call(this, index, 1);
+       }, this);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js
new file mode 100644 (file)
index 0000000..dc974b8
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var forEach = Array.prototype.forEach;
+
+module.exports = function (sep) {
+       var result = [];
+       forEach.call(this, function (val, i) { result.push(val, sep); });
+       result.pop();
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js
new file mode 100644 (file)
index 0000000..cd488a0
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'slice', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js
new file mode 100644 (file)
index 0000000..72200ca
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.prototype.slice : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js
new file mode 100644 (file)
index 0000000..ec1985e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).slice() instanceof SubArray;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js
new file mode 100644 (file)
index 0000000..2761a1a
--- /dev/null
@@ -0,0 +1,35 @@
+'use strict';
+
+var toInteger    = require('../../../number/to-integer')
+  , toPosInt     = require('../../../number/to-pos-integer')
+  , isPlainArray = require('../../is-plain-array')
+
+  , isArray = Array.isArray, slice = Array.prototype.slice
+  , hasOwnProperty = Object.prototype.hasOwnProperty, max = Math.max;
+
+module.exports = function (start, end) {
+       var length, result, i;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return slice.apply(this, arguments);
+       }
+       length = toPosInt(this.length);
+       start = toInteger(start);
+       if (start < 0) start = max(length + start, 0);
+       else if (start > length) start = length;
+       if (end === undefined) {
+               end = length;
+       } else {
+               end = toInteger(end);
+               if (end < 0) end = max(length + end, 0);
+               else if (end > length) end = length;
+       }
+       if (start > end) start = end;
+       result = new this.constructor(end - start);
+       i = 0;
+       while (start !== end) {
+               if (hasOwnProperty.call(this, start)) result[i] = this[start];
+               ++i;
+               ++start;
+       }
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js
new file mode 100644 (file)
index 0000000..de7460d
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , call = Function.prototype.call;
+
+module.exports = function (cb/*, thisArg*/) {
+       var i, self, thisArg;
+       self = Object(value(this));
+       callable(cb);
+       thisArg = arguments[1];
+
+       for (i = self.length; i >= 0; --i) {
+               if (hasOwnProperty.call(self, i) &&
+                               call.call(cb, thisArg, self[i], i, self)) {
+                       return true;
+               }
+       }
+       return false;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js
new file mode 100644 (file)
index 0000000..aab1f8e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'splice', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js
new file mode 100644 (file)
index 0000000..e8ecf3c
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.prototype.splice : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js
new file mode 100644 (file)
index 0000000..ffddaa8
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).splice(0) instanceof SubArray;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js
new file mode 100644 (file)
index 0000000..a8505a2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+
+  , isArray = Array.isArray, splice = Array.prototype.splice
+  , forEach = Array.prototype.forEach;
+
+module.exports = function (start, deleteCount/*, …items*/) {
+       var arr = splice.apply(this, arguments), result;
+       if (!this || !isArray(this) || isPlainArray(this)) return arr;
+       result = new this.constructor(arr.length);
+       forEach.call(arr, function (val, i) { result[i] = val; });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js
new file mode 100644 (file)
index 0000000..db01465
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var indexOf = require('./e-index-of')
+
+  , filter = Array.prototype.filter
+
+  , isFirst;
+
+isFirst = function (value, index) {
+       return indexOf.call(this, value) === index;
+};
+
+module.exports = function () { return filter.call(this, isFirst, this); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js
new file mode 100644 (file)
index 0000000..237281f
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'values', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js
new file mode 100644 (file)
index 0000000..c0832c3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ? Array.prototype.values : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js
new file mode 100644 (file)
index 0000000..cc0c629
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function () {
+       var arr = ['foo', 1], iterator, result;
+       if (typeof arr.values !== 'function') return false;
+       iterator = arr.values();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== 'foo') return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js
new file mode 100644 (file)
index 0000000..f6555fd
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array');
+module.exports = function () { return new ArrayIterator(this, 'value'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js
new file mode 100644 (file)
index 0000000..6123206
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = (function () {
+       var SubArray = require('./_sub-array-dummy'), arr;
+
+       if (!SubArray) return false;
+       arr = new SubArray();
+       if (!Array.isArray(arr)) return false;
+       if (!(arr instanceof SubArray)) return false;
+
+       arr[34] = 'foo';
+       return (arr.length === 35);
+}());
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js
new file mode 100644 (file)
index 0000000..5baf8a8
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var setPrototypeOf = require('../object/set-prototype-of')
+  , isExtensible   = require('./_is-extensible');
+
+module.exports = (function () {
+       var SubArray;
+
+       if (isExtensible) return require('./_sub-array-dummy');
+
+       if (!setPrototypeOf) return null;
+       SubArray = function () {
+               var arr = Array.apply(this, arguments);
+               setPrototypeOf(arr, SubArray.prototype);
+               return arr;
+       };
+       setPrototypeOf(SubArray, Array);
+       SubArray.prototype = Object.create(Array.prototype, {
+               constructor: { value: SubArray, enumerable: false, writable: true,
+                       configurable: true }
+       });
+       return SubArray;
+}());
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js
new file mode 100644 (file)
index 0000000..a926d1a
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var setPrototypeOf = require('../object/set-prototype-of');
+
+module.exports = (function () {
+       var SubArray;
+
+       if (!setPrototypeOf) return null;
+       SubArray = function () { Array.apply(this, arguments); };
+       setPrototypeOf(SubArray, Array);
+       SubArray.prototype = Object.create(Array.prototype, {
+               constructor: { value: SubArray, enumerable: false, writable: true,
+                       configurable: true }
+       });
+       return SubArray;
+}());
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js
new file mode 100644 (file)
index 0000000..f3411b1
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array, 'from', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js
new file mode 100644 (file)
index 0000000..3b99cda
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.from
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js
new file mode 100644 (file)
index 0000000..63ff2a5
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function () {
+       var from = Array.from, arr, result;
+       if (typeof from !== 'function') return false;
+       arr = ['raz', 'dwa'];
+       result = from(arr);
+       return Boolean(result && (result !== arr) && (result[1] === 'dwa'));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js
new file mode 100644 (file)
index 0000000..a90ba2f
--- /dev/null
@@ -0,0 +1,106 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , isArguments    = require('../../function/is-arguments')
+  , isFunction     = require('../../function/is-function')
+  , toPosInt       = require('../../number/to-pos-integer')
+  , callable       = require('../../object/valid-callable')
+  , validValue     = require('../../object/valid-value')
+  , isString       = require('../../string/is-string')
+
+  , isArray = Array.isArray, call = Function.prototype.call
+  , desc = { configurable: true, enumerable: true, writable: true, value: null }
+  , defineProperty = Object.defineProperty;
+
+module.exports = function (arrayLike/*, mapFn, thisArg*/) {
+       var mapFn = arguments[1], thisArg = arguments[2], Constructor, i, j, arr, l, code, iterator
+         , result, getIterator, value;
+
+       arrayLike = Object(validValue(arrayLike));
+
+       if (mapFn != null) callable(mapFn);
+       if (!this || (this === Array) || !isFunction(this)) {
+               // Result: Plain array
+               if (!mapFn) {
+                       if (isArguments(arrayLike)) {
+                               // Source: Arguments
+                               l = arrayLike.length;
+                               if (l !== 1) return Array.apply(null, arrayLike);
+                               arr = new Array(1);
+                               arr[0] = arrayLike[0];
+                               return arr;
+                       }
+                       if (isArray(arrayLike)) {
+                               // Source: Array
+                               arr = new Array(l = arrayLike.length);
+                               for (i = 0; i < l; ++i) arr[i] = arrayLike[i];
+                               return arr;
+                       }
+               }
+               arr = [];
+       } else {
+               // Result: Non plain array
+               Constructor = this;
+       }
+
+       if (!isArray(arrayLike)) {
+               if ((getIterator = arrayLike[iteratorSymbol]) !== undefined) {
+                       // Source: Iterator
+                       iterator = callable(getIterator).call(arrayLike);
+                       if (Constructor) arr = new Constructor();
+                       result = iterator.next();
+                       i = 0;
+                       while (!result.done) {
+                               value = mapFn ? call.call(mapFn, thisArg, result.value, i) : result.value;
+                               if (!Constructor) {
+                                       arr[i] = value;
+                               } else {
+                                       desc.value = value;
+                                       defineProperty(arr, i, desc);
+                               }
+                               result = iterator.next();
+                               ++i;
+                       }
+                       l = i;
+               } else if (isString(arrayLike)) {
+                       // Source: String
+                       l = arrayLike.length;
+                       if (Constructor) arr = new Constructor();
+                       for (i = 0, j = 0; i < l; ++i) {
+                               value = arrayLike[i];
+                               if ((i + 1) < l) {
+                                       code = value.charCodeAt(0);
+                                       if ((code >= 0xD800) && (code <= 0xDBFF)) value += arrayLike[++i];
+                               }
+                               value = mapFn ? call.call(mapFn, thisArg, value, j) : value;
+                               if (!Constructor) {
+                                       arr[j] = value;
+                               } else {
+                                       desc.value = value;
+                                       defineProperty(arr, j, desc);
+                               }
+                               ++j;
+                       }
+                       l = j;
+               }
+       }
+       if (l === undefined) {
+               // Source: array or array-like
+               l = toPosInt(arrayLike.length);
+               if (Constructor) arr = new Constructor(l);
+               for (i = 0; i < l; ++i) {
+                       value = mapFn ? call.call(mapFn, thisArg, arrayLike[i], i) : arrayLike[i];
+                       if (!Constructor) {
+                               arr[i] = value;
+                       } else {
+                               desc.value = value;
+                               defineProperty(arr, i, desc);
+                       }
+               }
+       }
+       if (Constructor) {
+               desc.value = null;
+               arr.length = l;
+       }
+       return arr;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js
new file mode 100644 (file)
index 0000000..5e06675
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var toPosInt = require('../number/to-pos-integer')
+  , value    = require('../object/valid-value')
+
+  , slice = Array.prototype.slice;
+
+module.exports = function (length/*, …fill*/) {
+       var arr, l;
+       length = toPosInt(value(length));
+       if (length === 0) return [];
+
+       arr = (arguments.length < 2) ? [undefined] :
+                       slice.call(arguments, 1, 1 + length);
+
+       while ((l = arr.length) < length) {
+               arr = arr.concat(arr.slice(0, length - l));
+       }
+       return arr;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js
new file mode 100644 (file)
index 0000000..7a68678
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = {
+       '#':          require('./#'),
+       from:         require('./from'),
+       generate:     require('./generate'),
+       isPlainArray: require('./is-plain-array'),
+       of:           require('./of'),
+       toArray:      require('./to-array'),
+       validArray:   require('./valid-array')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js
new file mode 100644 (file)
index 0000000..6b37e40
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var isArray = Array.isArray, getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (obj) {
+       var proto;
+       if (!obj || !isArray(obj)) return false;
+       proto = getPrototypeOf(obj);
+       if (!isArray(proto)) return false;
+       return !isArray(getPrototypeOf(proto));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js
new file mode 100644 (file)
index 0000000..bf2a5a5
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array, 'of', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js
new file mode 100644 (file)
index 0000000..07ee54d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.of
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js
new file mode 100644 (file)
index 0000000..4390a10
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function () {
+       var of = Array.of, result;
+       if (typeof of !== 'function') return false;
+       result = of('foo', 'bar');
+       return Boolean(result && (result[1] === 'bar'));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js
new file mode 100644 (file)
index 0000000..de72bc9
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var isFunction = require('../../function/is-function')
+
+  , slice = Array.prototype.slice, defineProperty = Object.defineProperty
+  , desc = { configurable: true, enumerable: true, writable: true, value: null };
+
+module.exports = function (/*…items*/) {
+       var result, i, l;
+       if (!this || (this === Array) || !isFunction(this)) return slice.call(arguments);
+       result = new this(l = arguments.length);
+       for (i = 0; i < l; ++i) {
+               desc.value = arguments[i];
+               defineProperty(result, i, desc);
+       }
+       desc.value = null;
+       result.length = l;
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js
new file mode 100644 (file)
index 0000000..ce908dd
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var from = require('./from')
+
+  , isArray = Array.isArray;
+
+module.exports = function (arrayLike) {
+       return isArray(arrayLike) ? arrayLike : from(arrayLike);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js
new file mode 100644 (file)
index 0000000..d86a8f5
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isArray = Array.isArray;
+
+module.exports = function (value) {
+       if (isArray(value)) return value;
+       throw new TypeError(value + " is not an array");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js
new file mode 100644 (file)
index 0000000..c193b94
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+       isBoolean: require('./is-boolean')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js
new file mode 100644 (file)
index 0000000..5d1a802
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(true);
+
+module.exports = function (x) {
+       return (typeof x === 'boolean') || ((typeof x === 'object') &&
+               ((x instanceof Boolean) || (toString.call(x) === id)));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js
new file mode 100644 (file)
index 0000000..69e2eb0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var getTime = Date.prototype.getTime;
+
+module.exports = function () { return new Date(getTime.call(this)); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js
new file mode 100644 (file)
index 0000000..e780efe
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var getMonth = Date.prototype.getMonth;
+
+module.exports = function () {
+       switch (getMonth.call(this)) {
+       case 1:
+               return this.getFullYear() % 4 ? 28 : 29;
+       case 3:
+       case 5:
+       case 8:
+       case 10:
+               return 30;
+       default:
+               return 31;
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js
new file mode 100644 (file)
index 0000000..0c9eb8b
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var setHours = Date.prototype.setHours;
+
+module.exports = function () {
+       setHours.call(this, 0, 0, 0, 0);
+       return this;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js
new file mode 100644 (file)
index 0000000..7328c25
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var floorDay = require('./floor-day');
+
+module.exports = function () {
+       floorDay.call(this).setDate(1);
+       return this;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js
new file mode 100644 (file)
index 0000000..9c50853
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var floorMonth = require('./floor-month');
+
+module.exports = function () {
+       floorMonth.call(this).setMonth(0);
+       return this;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js
new file mode 100644 (file)
index 0000000..15bd95f
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var pad       = require('../../number/#/pad')
+  , date      = require('../valid-date')
+
+  , format;
+
+format = require('../../string/format-method')({
+       Y: function () { return String(this.getFullYear()); },
+       y: function () { return String(this.getFullYear()).slice(-2); },
+       m: function () { return pad.call(this.getMonth() + 1, 2); },
+       d: function () { return pad.call(this.getDate(), 2); },
+       H: function () { return pad.call(this.getHours(), 2); },
+       M: function () { return pad.call(this.getMinutes(), 2); },
+       S: function () { return pad.call(this.getSeconds(), 2); },
+       L: function () { return pad.call(this.getMilliseconds(), 3); }
+});
+
+module.exports = function (pattern) {
+       return format.call(date(this), pattern);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js
new file mode 100644 (file)
index 0000000..f71b295
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = {
+       copy:        require('./copy'),
+       daysInMonth: require('./days-in-month'),
+       floorDay:    require('./floor-day'),
+       floorMonth:  require('./floor-month'),
+       floorYear:   require('./floor-year'),
+       format:      require('./format')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js
new file mode 100644 (file)
index 0000000..eac33fb
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = {
+       '#':       require('./#'),
+       isDate:    require('./is-date'),
+       validDate: require('./valid-date')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js
new file mode 100644 (file)
index 0000000..6ba236e
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(new Date());
+
+module.exports = function (x) {
+       return (x && ((x instanceof Date) || (toString.call(x) === id))) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js
new file mode 100644 (file)
index 0000000..7d1a9b6
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isDate = require('./is-date');
+
+module.exports = function (x) {
+       if (!isDate(x)) throw new TypeError(x + " is not a Date object");
+       return x;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js
new file mode 100644 (file)
index 0000000..b984aa9
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+       throw: require('./throw')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js
new file mode 100644 (file)
index 0000000..7e15ebd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var error = require('../valid-error');
+
+module.exports = function () { throw error(this); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js
new file mode 100644 (file)
index 0000000..bbc2dc2
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var assign = require('../object/assign')
+
+  , captureStackTrace = Error.captureStackTrace;
+
+exports = module.exports = function (message/*, code, ext*/) {
+       var err = new Error(), code = arguments[1], ext = arguments[2];
+       if (ext == null) {
+               if (code && (typeof code === 'object')) {
+                       ext = code;
+                       code = null;
+               }
+       }
+       if (ext != null) assign(err, ext);
+       err.message = String(message);
+       if (code != null) err.code = String(code);
+       if (captureStackTrace) captureStackTrace(err, exports);
+       return err;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js
new file mode 100644 (file)
index 0000000..62984b5
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = {
+       '#':        require('./#'),
+       custom:     require('./custom'),
+       isError:    require('./is-error'),
+       validError: require('./valid-error')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js
new file mode 100644 (file)
index 0000000..422705f
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(new Error());
+
+module.exports = function (x) {
+       return (x && ((x instanceof Error) || (toString.call(x)) === id)) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js
new file mode 100644 (file)
index 0000000..0bef768
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isError = require('./is-error');
+
+module.exports = function (x) {
+       if (!isError(x)) throw new TypeError(x + " is not an Error object");
+       return x;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js
new file mode 100644 (file)
index 0000000..1da5e01
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+  , aFrom    = require('../../array/from')
+
+  , apply = Function.prototype.apply, call = Function.prototype.call
+  , callFn = function (arg, fn) { return call.call(fn, this, arg); };
+
+module.exports = function (fn/*, …fnn*/) {
+       var fns, first;
+       if (!fn) callable(fn);
+       fns = [this].concat(aFrom(arguments));
+       fns.forEach(callable);
+       fns = fns.reverse();
+       first = fns[0];
+       fns = fns.slice(1);
+       return function (arg) {
+               return fns.reduce(callFn, apply.call(first, this, arguments));
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js
new file mode 100644 (file)
index 0000000..e1467f7
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var mixin         = require('../../object/mixin')
+  , validFunction = require('../valid-function')
+
+  , re = /^\s*function\s*([\0-'\)-\uffff]+)*\s*\(([\0-\(\*-\uffff]*)\)\s*\{/;
+
+module.exports = function () {
+       var match = String(validFunction(this)).match(re), fn;
+
+       fn = new Function('fn', 'return function ' + match[1].trim() + '(' +
+               match[2] + ') { return fn.apply(this, arguments); };')(this);
+       try { mixin(fn, this); } catch (ignore) {}
+       return fn;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js
new file mode 100644 (file)
index 0000000..943d6fa
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var toPosInt     = require('../../number/to-pos-integer')
+  , callable     = require('../../object/valid-callable')
+  , defineLength = require('../_define-length')
+
+  , slice = Array.prototype.slice, apply = Function.prototype.apply
+  , curry;
+
+curry = function self(fn, length, preArgs) {
+       return defineLength(function () {
+               var args = preArgs ?
+                               preArgs.concat(slice.call(arguments, 0, length - preArgs.length)) :
+                               slice.call(arguments, 0, length);
+               return (args.length === length) ? apply.call(fn, this, args) :
+                               self(fn, length, args);
+       }, preArgs ? (length - preArgs.length) : length);
+};
+
+module.exports = function (/*length*/) {
+       var length = arguments[0];
+       return curry(callable(this),
+               isNaN(length) ? toPosInt(this.length) : toPosInt(length));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js
new file mode 100644 (file)
index 0000000..8d0da00
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = {
+       compose:        require('./compose'),
+       copy:           require('./copy'),
+       curry:          require('./curry'),
+       lock:           require('./lock'),
+       not:            require('./not'),
+       partial:        require('./partial'),
+       spread:         require('./spread'),
+       toStringTokens: require('./to-string-tokens')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js
new file mode 100644 (file)
index 0000000..91e1a65
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+
+  , apply    = Function.prototype.apply;
+
+module.exports = function (/*…args*/) {
+       var fn = callable(this)
+         , args = arguments;
+
+       return function () { return apply.call(fn, this, args); };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js
new file mode 100644 (file)
index 0000000..c6dbe97
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var callable     = require('../../object/valid-callable')
+  , defineLength = require('../_define-length')
+
+  , apply = Function.prototype.apply;
+
+module.exports = function () {
+       var fn = callable(this);
+
+       return defineLength(function () {
+               return !apply.call(fn, this, arguments);
+       }, fn.length);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js
new file mode 100644 (file)
index 0000000..bf31a35
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var callable     = require('../../object/valid-callable')
+  , aFrom        = require('../../array/from')
+  , defineLength = require('../_define-length')
+
+  , apply = Function.prototype.apply;
+
+module.exports = function (/*…args*/) {
+       var fn = callable(this)
+         , args = aFrom(arguments);
+
+       return defineLength(function () {
+               return apply.call(fn, this, args.concat(aFrom(arguments)));
+       }, fn.length - args.length);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js
new file mode 100644 (file)
index 0000000..d7c93b7
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+
+  , apply = Function.prototype.apply;
+
+module.exports = function () {
+       var fn = callable(this);
+       return function (args) { return apply.call(fn, this, args); };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js
new file mode 100644 (file)
index 0000000..67afeae
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var validFunction = require('../valid-function')
+
+  , re = new RegExp('^\\s*function[\\0-\'\\)-\\uffff]*' +
+       '\\(([\\0-\\(\\*-\\uffff]*)\\)\\s*\\{([\\0-\\uffff]*)\\}\\s*$');
+
+module.exports = function () {
+       var data = String(validFunction(this)).match(re);
+       return { args: data[1], body: data[2] };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js
new file mode 100644 (file)
index 0000000..496ea62
--- /dev/null
@@ -0,0 +1,44 @@
+'use strict';
+
+var toPosInt = require('../number/to-pos-integer')
+
+  , test = function (a, b) {}, desc, defineProperty
+  , generate, mixin;
+
+try {
+       Object.defineProperty(test, 'length', { configurable: true, writable: false,
+               enumerable: false, value: 1 });
+} catch (ignore) {}
+
+if (test.length === 1) {
+       // ES6
+       desc = { configurable: true, writable: false, enumerable: false };
+       defineProperty = Object.defineProperty;
+       module.exports = function (fn, length) {
+               length = toPosInt(length);
+               if (fn.length === length) return fn;
+               desc.value = length;
+               return defineProperty(fn, 'length', desc);
+       };
+} else {
+       mixin = require('../object/mixin');
+       generate = (function () {
+               var cache = [];
+               return function (l) {
+                       var args, i = 0;
+                       if (cache[l]) return cache[l];
+                       args = [];
+                       while (l--) args.push('a' + (++i).toString(36));
+                       return new Function('fn', 'return function (' + args.join(', ') +
+                               ') { return fn.apply(this, arguments); };');
+               };
+       }());
+       module.exports = function (src, length) {
+               var target;
+               length = toPosInt(length);
+               if (src.length === length) return src;
+               target = generate(length)(src);
+               try { mixin(target, src); } catch (ignore) {}
+               return target;
+       };
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js
new file mode 100644 (file)
index 0000000..10f1e20
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (x) {
+       return function () { return x; };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js
new file mode 100644 (file)
index 0000000..a9289f0
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (x) { return x; };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js
new file mode 100644 (file)
index 0000000..cfad3f3
--- /dev/null
@@ -0,0 +1,15 @@
+// Export all modules.
+
+'use strict';
+
+module.exports = {
+       '#':           require('./#'),
+       constant:      require('./constant'),
+       identity:      require('./identity'),
+       invoke:        require('./invoke'),
+       isArguments:   require('./is-arguments'),
+       isFunction:    require('./is-function'),
+       noop:          require('./noop'),
+       pluck:         require('./pluck'),
+       validFunction: require('./valid-function')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js
new file mode 100644 (file)
index 0000000..9195afd
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var isCallable = require('../object/is-callable')
+  , value      = require('../object/valid-value')
+
+  , slice = Array.prototype.slice, apply = Function.prototype.apply;
+
+module.exports = function (name/*, …args*/) {
+       var args = slice.call(arguments, 1), isFn = isCallable(name);
+       return function (obj) {
+               value(obj);
+               return apply.call(isFn ? name : obj[name], obj,
+                       args.concat(slice.call(arguments, 1)));
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js
new file mode 100644 (file)
index 0000000..9a29855
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call((function () { return arguments; }()));
+
+module.exports = function (x) { return (toString.call(x) === id); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js
new file mode 100644 (file)
index 0000000..ab4399c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(require('./noop'));
+
+module.exports = function (f) {
+       return (typeof f === "function") && (toString.call(f) === id);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js
new file mode 100644 (file)
index 0000000..aa43bae
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function () {};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js
new file mode 100644 (file)
index 0000000..7f70a30
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var value   = require('../object/valid-value');
+
+module.exports = function (name) {
+       return function (o) { return value(o)[name]; };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js
new file mode 100644 (file)
index 0000000..05fdee2
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isFunction = require('./is-function');
+
+module.exports = function (x) {
+       if (!isFunction(x)) throw new TypeError(x + " is not a function");
+       return x;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js
new file mode 100644 (file)
index 0000000..872a40e
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = new Function("return this")();
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js
new file mode 100644 (file)
index 0000000..db9a760
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = {
+       global:   require('./global'),
+
+       array:    require('./array'),
+       boolean:  require('./boolean'),
+       date:     require('./date'),
+       error:    require('./error'),
+       function: require('./function'),
+       iterable: require('./iterable'),
+       math:     require('./math'),
+       number:   require('./number'),
+       object:   require('./object'),
+       regExp:   require('./reg-exp'),
+       string:   require('./string')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js
new file mode 100644 (file)
index 0000000..f1e2042
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var forOf      = require('es6-iterator/for-of')
+  , isIterable = require('es6-iterator/is-iterable')
+  , iterable   = require('./validate')
+
+  , forEach = Array.prototype.forEach;
+
+module.exports = function (target, cb/*, thisArg*/) {
+       if (isIterable(iterable(target))) forOf(target, cb, arguments[2]);
+       else forEach.call(target, cb, arguments[2]);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js
new file mode 100644 (file)
index 0000000..a3e16a5
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = {
+       forEach:        require('./for-each'),
+       is:             require('./is'),
+       validate:       require('./validate'),
+       validateObject: require('./validate-object')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js
new file mode 100644 (file)
index 0000000..bb8bf28
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , isArrayLike    = require('../object/is-array-like');
+
+module.exports = function (x) {
+       if (x == null) return false;
+       if (typeof x[iteratorSymbol] === 'function') return true;
+       return isArrayLike(x);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js
new file mode 100644 (file)
index 0000000..988a6ad
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var isObject = require('../object/is-object')
+  , is       = require('./is');
+
+module.exports = function (x) {
+       if (is(x) && isObject(x)) return x;
+       throw new TypeError(x + " is not an iterable or array-like object");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js
new file mode 100644 (file)
index 0000000..1be6d7f
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var is = require('./is');
+
+module.exports = function (x) {
+       if (is(x)) return x;
+       throw new TypeError(x + " is not an iterable or array-like");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js
new file mode 100644 (file)
index 0000000..eecda56
--- /dev/null
@@ -0,0 +1,82 @@
+// Credit: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var abs = Math.abs, floor = Math.floor, log = Math.log, min = Math.min
+  , pow = Math.pow, LN2 = Math.LN2
+  , roundToEven;
+
+roundToEven = function (n) {
+       var w = floor(n), f = n - w;
+       if (f < 0.5) return w;
+       if (f > 0.5) return w + 1;
+       return w % 2 ? w + 1 : w;
+};
+
+module.exports = function (v, ebits, fbits) {
+       var bias = (1 << (ebits - 1)) - 1, s, e, f, i, bits, str, bytes;
+
+       // Compute sign, exponent, fraction
+       if (isNaN(v)) {
+               // NaN
+               // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
+               e = (1 << ebits) - 1;
+               f = pow(2, fbits - 1);
+               s = 0;
+       } else if (v === Infinity || v === -Infinity) {
+               e = (1 << ebits) - 1;
+               f = 0;
+               s = (v < 0) ? 1 : 0;
+       } else if (v === 0) {
+               e = 0;
+               f = 0;
+               s = (1 / v === -Infinity) ? 1 : 0;
+       } else {
+               s = v < 0;
+               v = abs(v);
+
+               if (v >= pow(2, 1 - bias)) {
+                       e = min(floor(log(v) / LN2), 1023);
+                       f = roundToEven(v / pow(2, e) * pow(2, fbits));
+                       if (f / pow(2, fbits) >= 2) {
+                               e = e + 1;
+                               f = 1;
+                       }
+                       if (e > bias) {
+                               // Overflow
+                               e = (1 << ebits) - 1;
+                               f = 0;
+                       } else {
+                               // Normal
+                               e = e + bias;
+                               f = f - pow(2, fbits);
+                       }
+               } else {
+                       // Subnormal
+                       e = 0;
+                       f = roundToEven(v / pow(2, 1 - bias - fbits));
+               }
+       }
+
+       // Pack sign, exponent, fraction
+       bits = [];
+       for (i = fbits; i; i -= 1) {
+               bits.push(f % 2 ? 1 : 0);
+               f = floor(f / 2);
+       }
+       for (i = ebits; i; i -= 1) {
+               bits.push(e % 2 ? 1 : 0);
+               e = floor(e / 2);
+       }
+       bits.push(s ? 1 : 0);
+       bits.reverse();
+       str = bits.join('');
+
+       // Bits to bytes
+       bytes = [];
+       while (str.length) {
+               bytes.push(parseInt(str.substring(0, 8), 2));
+               str = str.substring(8);
+       }
+       return bytes;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js
new file mode 100644 (file)
index 0000000..c9f26f2
--- /dev/null
@@ -0,0 +1,33 @@
+// Credit: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var pow = Math.pow;
+
+module.exports = function (bytes, ebits, fbits) {
+       // Bytes to bits
+       var bits = [], i, j, b, str,
+       bias, s, e, f;
+
+       for (i = bytes.length; i; i -= 1) {
+               b = bytes[i - 1];
+               for (j = 8; j; j -= 1) {
+                       bits.push(b % 2 ? 1 : 0);
+                       b = b >> 1;
+               }
+       }
+       bits.reverse();
+       str = bits.join('');
+
+       // Unpack sign, exponent, fraction
+       bias = (1 << (ebits - 1)) - 1;
+       s = parseInt(str.substring(0, 1), 2) ? -1 : 1;
+       e = parseInt(str.substring(1, 1 + ebits), 2);
+       f = parseInt(str.substring(1 + ebits), 2);
+
+       // Produce number
+       if (e === (1 << ebits) - 1) return f !== 0 ? NaN : s * Infinity;
+       if (e > 0) return s * pow(2, e - bias) * (1 + f / pow(2, fbits));
+       if (f !== 0) return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));
+       return s < 0 ? -0 : 0;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js
new file mode 100644 (file)
index 0000000..f48ad11
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'acosh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js
new file mode 100644 (file)
index 0000000..00ddea6
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.acosh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js
new file mode 100644 (file)
index 0000000..363f0d8
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var acosh = Math.acosh;
+       if (typeof acosh !== 'function') return false;
+       return acosh(2) === 1.3169578969248166;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js
new file mode 100644 (file)
index 0000000..89a24b5
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var log = Math.log, sqrt = Math.sqrt;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < 1) return NaN;
+       if (x === 1) return 0;
+       if (x === Infinity) return x;
+       return log(x + sqrt(x * x - 1));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js
new file mode 100644 (file)
index 0000000..21f64d5
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'asinh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js
new file mode 100644 (file)
index 0000000..d415144
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.asinh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js
new file mode 100644 (file)
index 0000000..6c205f4
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var asinh = Math.asinh;
+       if (typeof asinh !== 'function') return false;
+       return asinh(2) === 1.4436354751788103;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js
new file mode 100644 (file)
index 0000000..42fbf14
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var log = Math.log, sqrt = Math.sqrt;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+       if (x < 0) {
+               x = -x;
+               return -log(x + sqrt(x * x + 1));
+       }
+       return log(x + sqrt(x * x + 1));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js
new file mode 100644 (file)
index 0000000..1a48513
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'atanh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js
new file mode 100644 (file)
index 0000000..785b3de
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.atanh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js
new file mode 100644 (file)
index 0000000..dbaf18e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var atanh = Math.atanh;
+       if (typeof atanh !== 'function') return false;
+       return atanh(0.5) === 0.5493061443340549;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js
new file mode 100644 (file)
index 0000000..531e289
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var log = Math.log;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < -1) return NaN;
+       if (x > 1) return NaN;
+       if (x === -1) return -Infinity;
+       if (x === 1) return Infinity;
+       if (x === 0) return x;
+       return 0.5 * log((1 + x) / (1 - x));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js
new file mode 100644 (file)
index 0000000..3a12dde
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'cbrt', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js
new file mode 100644 (file)
index 0000000..89f966d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.cbrt
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js
new file mode 100644 (file)
index 0000000..69809f3
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var cbrt = Math.cbrt;
+       if (typeof cbrt !== 'function') return false;
+       return cbrt(2) === 1.2599210498948732;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js
new file mode 100644 (file)
index 0000000..bca1960
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var pow = Math.pow;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+       if (x < 0) return -pow(-x, 1 / 3);
+       return pow(x, 1 / 3);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js
new file mode 100644 (file)
index 0000000..339df33
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'clz32', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js
new file mode 100644 (file)
index 0000000..1687b33
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.clz32
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js
new file mode 100644 (file)
index 0000000..ccc8f71
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var clz32 = Math.clz32;
+       if (typeof clz32 !== 'function') return false;
+       return clz32(1000) === 22;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js
new file mode 100644 (file)
index 0000000..2a582da
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (value) {
+       value = value >>> 0;
+       return value ? 32 - value.toString(2).length : 32;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js
new file mode 100644 (file)
index 0000000..f90d830
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'cosh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js
new file mode 100644 (file)
index 0000000..000636a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.cosh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js
new file mode 100644 (file)
index 0000000..c796bcb
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var cosh = Math.cosh;
+       if (typeof cosh !== 'function') return false;
+       return cosh(1) === 1.5430806348152437;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js
new file mode 100644 (file)
index 0000000..f9062bd
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var exp = Math.exp;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return 1;
+       if (!isFinite(x)) return Infinity;
+       return (exp(x) + exp(-x)) / 2;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js
new file mode 100644 (file)
index 0000000..fc20c8c
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'expm1', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js
new file mode 100644 (file)
index 0000000..4c1bc77
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.expm1
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js
new file mode 100644 (file)
index 0000000..3b106d5
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var expm1 = Math.expm1;
+       if (typeof expm1 !== 'function') return false;
+       return expm1(1).toFixed(15) === '1.718281828459045';
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js
new file mode 100644 (file)
index 0000000..9c8c236
--- /dev/null
@@ -0,0 +1,16 @@
+// Thanks: https://github.com/monolithed/ECMAScript-6
+
+'use strict';
+
+var exp = Math.exp;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (x === Infinity) return Infinity;
+       if (x === -Infinity) return -1;
+
+       if ((x > -1.0e-6) && (x < 1.0e-6)) return x + x * x / 2;
+       return exp(x) - 1;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js
new file mode 100644 (file)
index 0000000..c55b26c
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'fround', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js
new file mode 100644 (file)
index 0000000..a077ed0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.fround
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js
new file mode 100644 (file)
index 0000000..ffbf094
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var fround = Math.fround;
+       if (typeof fround !== 'function') return false;
+       return fround(1.337) === 1.3370000123977661;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js
new file mode 100644 (file)
index 0000000..f2c86e4
--- /dev/null
@@ -0,0 +1,33 @@
+// Credit: https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js
+
+'use strict';
+
+var toFloat32;
+
+if (typeof Float32Array !== 'undefined') {
+       toFloat32 = (function () {
+               var float32Array = new Float32Array(1);
+               return function (x) {
+                       float32Array[0] = x;
+                       return float32Array[0];
+               };
+       }());
+} else {
+       toFloat32 = (function () {
+               var pack   = require('../_pack-ieee754')
+                 , unpack = require('../_unpack-ieee754');
+
+               return function (x) {
+                       return unpack(pack(x, 8, 23), 8, 23);
+               };
+       }());
+}
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+
+       return toFloat32(x);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js
new file mode 100644 (file)
index 0000000..b27fda7
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'hypot', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js
new file mode 100644 (file)
index 0000000..334bc58
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.hypot
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js
new file mode 100644 (file)
index 0000000..e75c5d3
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var hypot = Math.hypot;
+       if (typeof hypot !== 'function') return false;
+       return hypot(3, 4) === 5;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js
new file mode 100644 (file)
index 0000000..3d0988b
--- /dev/null
@@ -0,0 +1,34 @@
+// Thanks for hints: https://github.com/paulmillr/es6-shim
+
+'use strict';
+
+var some = Array.prototype.some, abs = Math.abs, sqrt = Math.sqrt
+
+  , compare = function (a, b) { return b - a; }
+  , divide = function (x) { return x / this; }
+  , add = function (sum, number) { return sum + number * number; };
+
+module.exports = function (val1, val2/*, …valn*/) {
+       var result, numbers;
+       if (!arguments.length) return 0;
+       some.call(arguments, function (val) {
+               if (isNaN(val)) {
+                       result = NaN;
+                       return;
+               }
+               if (!isFinite(val)) {
+                       result = Infinity;
+                       return true;
+               }
+               if (result !== undefined) return;
+               val = Number(val);
+               if (val === 0) return;
+               if (!numbers) numbers = [abs(val)];
+               else numbers.push(abs(val));
+       });
+       if (result !== undefined) return result;
+       if (!numbers) return 0;
+
+       numbers.sort(compare);
+       return numbers[0] * sqrt(numbers.map(divide, numbers[0]).reduce(add, 0));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js
new file mode 100644 (file)
index 0000000..ed207bd
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'imul', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js
new file mode 100644 (file)
index 0000000..41e5d5f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.imul
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js
new file mode 100644 (file)
index 0000000..d8495de
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var imul = Math.imul;
+       if (typeof imul !== 'function') return false;
+       return imul(-1, 8) === -8;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js
new file mode 100644 (file)
index 0000000..8fd8a8d
--- /dev/null
@@ -0,0 +1,13 @@
+// Thanks: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
+//         /Global_Objects/Math/imul
+
+'use strict';
+
+module.exports = function (x, y) {
+       var xh  = (x >>> 16) & 0xffff, xl = x & 0xffff
+         , yh  = (y >>> 16) & 0xffff, yl = y & 0xffff;
+
+       // the shift by 0 fixes the sign on the high part
+       // the final |0 converts the unsigned value into a signed value
+       return ((xl * yl) + (((xh * yl + xl * yh) << 16) >>> 0) | 0);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js
new file mode 100644 (file)
index 0000000..d112d0b
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+module.exports = {
+       acosh:  require('./acosh'),
+       asinh:  require('./asinh'),
+       atanh:  require('./atanh'),
+       cbrt:   require('./cbrt'),
+       clz32:  require('./clz32'),
+       cosh:   require('./cosh'),
+       expm1:  require('./expm1'),
+       fround: require('./fround'),
+       hypot:  require('./hypot'),
+       imul:   require('./imul'),
+       log10:  require('./log10'),
+       log2:   require('./log2'),
+       log1p:  require('./log1p'),
+       sign:   require('./sign'),
+       sinh:   require('./sinh'),
+       tanh:   require('./tanh'),
+       trunc:  require('./trunc')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js
new file mode 100644 (file)
index 0000000..dd96edd
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'log10', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js
new file mode 100644 (file)
index 0000000..a9eee51
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.log10
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js
new file mode 100644 (file)
index 0000000..c7f40ee
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var log10 = Math.log10;
+       if (typeof log10 !== 'function') return false;
+       return log10(2) === 0.3010299956639812;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js
new file mode 100644 (file)
index 0000000..fc77287
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var log = Math.log, LOG10E = Math.LOG10E;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < 0) return NaN;
+       if (x === 0) return -Infinity;
+       if (x === 1) return 0;
+       if (x === Infinity) return Infinity;
+
+       return log(x) * LOG10E;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js
new file mode 100644 (file)
index 0000000..f62f91f
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'log1p', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js
new file mode 100644 (file)
index 0000000..107b114
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.log1p
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js
new file mode 100644 (file)
index 0000000..61e9097
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var log1p = Math.log1p;
+       if (typeof log1p !== 'function') return false;
+       return log1p(1) === 0.6931471805599453;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js
new file mode 100644 (file)
index 0000000..10acebc
--- /dev/null
@@ -0,0 +1,17 @@
+// Thanks: https://github.com/monolithed/ECMAScript-6/blob/master/ES6.js
+
+'use strict';
+
+var log = Math.log;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < -1) return NaN;
+       if (x === -1) return -Infinity;
+       if (x === 0) return x;
+       if (x === Infinity) return Infinity;
+
+       if (x > -1.0e-8 && x < 1.0e-8) return (x - x * x / 2);
+       return log(1 + x);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js
new file mode 100644 (file)
index 0000000..8483f09
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'log2', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js
new file mode 100644 (file)
index 0000000..87e9050
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.log2
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js
new file mode 100644 (file)
index 0000000..802322f
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var log2 = Math.log2;
+       if (typeof log2 !== 'function') return false;
+       return log2(3).toFixed(15) === '1.584962500721156';
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js
new file mode 100644 (file)
index 0000000..cd80994
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var log = Math.log, LOG2E = Math.LOG2E;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < 0) return NaN;
+       if (x === 0) return -Infinity;
+       if (x === 1) return 0;
+       if (x === Infinity) return Infinity;
+
+       return log(x) * LOG2E;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js
new file mode 100644 (file)
index 0000000..b0db2f4
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'sign', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js
new file mode 100644 (file)
index 0000000..b232633
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.sign
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js
new file mode 100644 (file)
index 0000000..6d0de47
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var sign = Math.sign;
+       if (typeof sign !== 'function') return false;
+       return ((sign(10) === 1) && (sign(-20) === -1));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js
new file mode 100644 (file)
index 0000000..4df9c95
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (value) {
+       value = Number(value);
+       if (isNaN(value) || (value === 0)) return value;
+       return (value > 0) ? 1 : -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js
new file mode 100644 (file)
index 0000000..f259a63
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'sinh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js
new file mode 100644 (file)
index 0000000..e5bea57
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.sinh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js
new file mode 100644 (file)
index 0000000..888ec67
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var sinh = Math.sinh;
+       if (typeof sinh !== 'function') return false;
+       return ((sinh(1) === 1.1752011936438014) && (sinh(Number.MIN_VALUE) === 5e-324));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js
new file mode 100644 (file)
index 0000000..5b725be
--- /dev/null
@@ -0,0 +1,17 @@
+// Parts of implementation taken from es6-shim project
+// See: https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js
+
+'use strict';
+
+var expm1 = require('../expm1')
+
+  , abs = Math.abs, exp = Math.exp, e = Math.E;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+       if (abs(x) < 1) return (expm1(x) - expm1(-x)) / 2;
+       return (exp(x - 1) - exp(-x - 1)) * e / 2;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js
new file mode 100644 (file)
index 0000000..5199a02
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'tanh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js
new file mode 100644 (file)
index 0000000..6099c40
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.tanh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js
new file mode 100644 (file)
index 0000000..a7d2223
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var tanh = Math.tanh;
+       if (typeof tanh !== 'function') return false;
+       return ((tanh(1) === 0.7615941559557649) && (tanh(Number.MAX_VALUE) === 1));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js
new file mode 100644 (file)
index 0000000..f6e948f
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var exp = Math.exp;
+
+module.exports = function (x) {
+       var a, b;
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (x === Infinity) return 1;
+       if (x === -Infinity) return -1;
+       a = exp(x);
+       if (a === Infinity) return 1;
+       b = exp(-x);
+       if (b === Infinity) return -1;
+       return (a - b) / (a + b);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js
new file mode 100644 (file)
index 0000000..3ee80ab
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'trunc', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js
new file mode 100644 (file)
index 0000000..0b0f9b2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.trunc
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js
new file mode 100644 (file)
index 0000000..3e8cde1
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var trunc = Math.trunc;
+       if (typeof trunc !== 'function') return false;
+       return (trunc(13.67) === 13) && (trunc(-13.67) === -13);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js
new file mode 100644 (file)
index 0000000..02e2c2a
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var floor = Math.floor;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (x === Infinity) return Infinity;
+       if (x === -Infinity) return -Infinity;
+       if (x > 0) return floor(x);
+       return -floor(-x);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js
new file mode 100644 (file)
index 0000000..3248117
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+       pad: require('./pad')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js
new file mode 100644 (file)
index 0000000..4478f6a
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var pad      = require('../../string/#/pad')
+  , toPosInt = require('../to-pos-integer')
+
+  , toFixed = Number.prototype.toFixed;
+
+module.exports = function (length/*, precision*/) {
+       var precision;
+       length = toPosInt(length);
+       precision = toPosInt(arguments[1]);
+
+       return pad.call(precision ? toFixed.call(this, precision) : this,
+               '0', length + (precision ? (1 + precision) : 0));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js
new file mode 100644 (file)
index 0000000..f0a670a
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'EPSILON', { value: require('./'),
+               configurable: false, enumerable: false, writable: false });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js
new file mode 100644 (file)
index 0000000..4e4b621
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = 2.220446049250313e-16;
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js
new file mode 100644 (file)
index 0000000..141f5d2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return (typeof Number.EPSILON === 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js
new file mode 100644 (file)
index 0000000..35daf78
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = {
+       '#':              require('./#'),
+       EPSILON:          require('./epsilon'),
+       isFinite:         require('./is-finite'),
+       isInteger:        require('./is-integer'),
+       isNaN:            require('./is-nan'),
+       isNumber:         require('./is-number'),
+       isSafeInteger:    require('./is-safe-integer'),
+       MAX_SAFE_INTEGER: require('./max-safe-integer'),
+       MIN_SAFE_INTEGER: require('./min-safe-integer'),
+       toInteger:        require('./to-integer'),
+       toPosInteger:     require('./to-pos-integer'),
+       toUint32:         require('./to-uint32')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js
new file mode 100644 (file)
index 0000000..51d7cac
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isFinite', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js
new file mode 100644 (file)
index 0000000..15d5f40
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isFinite
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js
new file mode 100644 (file)
index 0000000..556e396
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var isFinite = Number.isFinite;
+       if (typeof isFinite !== 'function') return false;
+       return !isFinite('23') && isFinite(34) && !isFinite(Infinity);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js
new file mode 100644 (file)
index 0000000..e3aee55
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (value) {
+       return (typeof value === 'number') && isFinite(value);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js
new file mode 100644 (file)
index 0000000..fe53f28
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isInteger', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js
new file mode 100644 (file)
index 0000000..55e039a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isInteger
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..a0e573b
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var isInteger = Number.isInteger;
+       if (typeof isInteger !== 'function') return false;
+       return !isInteger('23') && isInteger(34) && !isInteger(32.34);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js
new file mode 100644 (file)
index 0000000..5402939
--- /dev/null
@@ -0,0 +1,8 @@
+// Credit: http://www.2ality.com/2014/05/is-integer.html
+
+'use strict';
+
+module.exports = function (value) {
+       if (typeof value !== 'number') return false;
+       return (value % 1 === 0);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js
new file mode 100644 (file)
index 0000000..e1c5dee
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isNaN', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js
new file mode 100644 (file)
index 0000000..3b2c4ca
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isNaN
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js
new file mode 100644 (file)
index 0000000..4cf2766
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var isNaN = Number.isNaN;
+       if (typeof isNaN !== 'function') return false;
+       return !isNaN({}) && isNaN(NaN) && !isNaN(34);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js
new file mode 100644 (file)
index 0000000..070d96c
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (value) { return (value !== value); } //jslint: ignore
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js
new file mode 100644 (file)
index 0000000..19a99e4
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(1);
+
+module.exports = function (x) {
+       return ((typeof x === 'number') ||
+               ((x instanceof Number) ||
+                       ((typeof x === 'object') && (toString.call(x) === id))));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..51cef96
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isSafeInteger', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js
new file mode 100644 (file)
index 0000000..49adeaa
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isSafeInteger
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..510b60e
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function () {
+       var isSafeInteger = Number.isSafeInteger;
+       if (typeof isSafeInteger !== 'function') return false;
+       return !isSafeInteger('23') && isSafeInteger(34232322323) &&
+                       !isSafeInteger(9007199254740992);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js
new file mode 100644 (file)
index 0000000..692acdd
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var isInteger = require('../is-integer/shim')
+  , maxValue  = require('../max-safe-integer')
+
+  , abs = Math.abs;
+
+module.exports = function (value) {
+       if (!isInteger(value)) return false;
+       return abs(value) <= maxValue;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..4e0bb57
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'MAX_SAFE_INTEGER', { value: require('./'),
+               configurable: false, enumerable: false, writable: false });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js
new file mode 100644 (file)
index 0000000..ed5d6a5
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = Math.pow(2, 53) - 1;
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..7bd08a9
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return (typeof Number.MAX_SAFE_INTEGER === 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..e3f110e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'MIN_SAFE_INTEGER', { value: require('./'),
+               configurable: false, enumerable: false, writable: false });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js
new file mode 100644 (file)
index 0000000..1c6cc27
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = -(Math.pow(2, 53) - 1);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..efc9875
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return (typeof Number.MIN_SAFE_INTEGER === 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js
new file mode 100644 (file)
index 0000000..60e798c
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var sign = require('../math/sign')
+
+  , abs = Math.abs, floor = Math.floor;
+
+module.exports = function (value) {
+       if (isNaN(value)) return 0;
+       value = Number(value);
+       if ((value === 0) || !isFinite(value)) return value;
+       return sign(value) * floor(abs(value));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js
new file mode 100644 (file)
index 0000000..605a302
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var toInteger = require('./to-integer')
+
+  , max = Math.max;
+
+module.exports = function (value) { return max(0, toInteger(value)); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js
new file mode 100644 (file)
index 0000000..6263e85
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (value) { return value >>> 0; };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js
new file mode 100644 (file)
index 0000000..bf2c55d
--- /dev/null
@@ -0,0 +1,29 @@
+// Internal method, used by iteration functions.
+// Calls a function for each key-value pair found in object
+// Optionally takes compareFn to iterate object in specific order
+
+'use strict';
+
+var isCallable = require('./is-callable')
+  , callable   = require('./valid-callable')
+  , value      = require('./valid-value')
+
+  , call = Function.prototype.call, keys = Object.keys
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (method, defVal) {
+       return function (obj, cb/*, thisArg, compareFn*/) {
+               var list, thisArg = arguments[2], compareFn = arguments[3];
+               obj = Object(value(obj));
+               callable(cb);
+
+               list = keys(obj);
+               if (compareFn) {
+                       list.sort(isCallable(compareFn) ? compareFn.bind(obj) : undefined);
+               }
+               return list[method](function (key, index) {
+                       if (!propertyIsEnumerable.call(obj, key)) return defVal;
+                       return call.call(cb, thisArg, obj[key], key, obj, index);
+               });
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js
new file mode 100644 (file)
index 0000000..3bcc68e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Object, 'assign', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js
new file mode 100644 (file)
index 0000000..ab0f9f2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Object.assign
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js
new file mode 100644 (file)
index 0000000..579ad2d
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function () {
+       var assign = Object.assign, obj;
+       if (typeof assign !== 'function') return false;
+       obj = { foo: 'raz' };
+       assign(obj, { bar: 'dwa' }, { trzy: 'trzy' });
+       return (obj.foo + obj.bar + obj.trzy) === 'razdwatrzy';
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js
new file mode 100644 (file)
index 0000000..74da11a
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var keys  = require('../keys')
+  , value = require('../valid-value')
+
+  , max = Math.max;
+
+module.exports = function (dest, src/*, …srcn*/) {
+       var error, i, l = max(arguments.length, 2), assign;
+       dest = Object(value(dest));
+       assign = function (key) {
+               try { dest[key] = src[key]; } catch (e) {
+                       if (!error) error = e;
+               }
+       };
+       for (i = 1; i < l; ++i) {
+               src = arguments[i];
+               keys(src).forEach(assign);
+       }
+       if (error !== undefined) throw error;
+       return dest;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js
new file mode 100644 (file)
index 0000000..85e4637
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var keys = require('./keys');
+
+module.exports = function (obj) {
+       var error;
+       keys(obj).forEach(function (key) {
+               try {
+                       delete this[key];
+               } catch (e) {
+                       if (!error) error = e;
+               }
+       }, obj);
+       if (error !== undefined) throw error;
+       return obj;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js
new file mode 100644 (file)
index 0000000..d021da4
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var filter = require('./filter');
+
+module.exports = function (obj) {
+       return filter(obj, function (val) { return val != null; });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js
new file mode 100644 (file)
index 0000000..2ab11f1
--- /dev/null
@@ -0,0 +1,42 @@
+'use strict';
+
+var strCompare = require('../string/#/case-insensitive-compare')
+  , isObject   = require('./is-object')
+
+  , resolve, typeMap;
+
+typeMap = {
+       undefined: 0,
+       object: 1,
+       boolean: 2,
+       string: 3,
+       number: 4
+};
+
+resolve = function (a) {
+       if (isObject(a)) {
+               if (typeof a.valueOf !== 'function') return NaN;
+               a = a.valueOf();
+               if (isObject(a)) {
+                       if (typeof a.toString !== 'function') return NaN;
+                       a = a.toString();
+                       if (typeof a !== 'string') return NaN;
+               }
+       }
+       return a;
+};
+
+module.exports = function (a, b) {
+       if (a === b) return 0; // Same
+
+       a = resolve(a);
+       b = resolve(b);
+       if (a == b) return typeMap[typeof a] - typeMap[typeof b]; //jslint: ignore
+       if (a == null) return -1;
+       if (b == null) return 1;
+       if ((typeof a === 'string') || (typeof b === 'string')) {
+               return strCompare.call(a, b);
+       }
+       if ((a !== a) && (b !== b)) return 0; //jslint: ignore
+       return Number(a) - Number(b);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js
new file mode 100644 (file)
index 0000000..548e3ee
--- /dev/null
@@ -0,0 +1,30 @@
+'use strict';
+
+var isPlainObject = require('./is-plain-object')
+  , value         = require('./valid-value')
+
+  , keys = Object.keys
+  , copy;
+
+copy = function (source) {
+       var target = {};
+       this[0].push(source);
+       this[1].push(target);
+       keys(source).forEach(function (key) {
+               var index;
+               if (!isPlainObject(source[key])) {
+                       target[key] = source[key];
+                       return;
+               }
+               index = this[0].indexOf(source[key]);
+               if (index === -1) target[key] = copy.call(this, source[key]);
+               else target[key] = this[1][index];
+       }, this);
+       return target;
+};
+
+module.exports = function (source) {
+       var obj = Object(value(source));
+       if (obj !== source) return obj;
+       return copy.call([[], []], obj);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js
new file mode 100644 (file)
index 0000000..4d71772
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var assign = require('./assign')
+  , value  = require('./valid-value');
+
+module.exports = function (obj) {
+       var copy = Object(value(obj));
+       if (copy !== obj) return copy;
+       return assign({}, obj);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js
new file mode 100644 (file)
index 0000000..29cfbb5
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var keys  = require('./keys');
+
+module.exports = function (obj) { return keys(obj).length; };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js
new file mode 100644 (file)
index 0000000..f813b46
--- /dev/null
@@ -0,0 +1,36 @@
+// Workaround for http://code.google.com/p/v8/issues/detail?id=2804
+
+'use strict';
+
+var create = Object.create, shim;
+
+if (!require('./set-prototype-of/is-implemented')()) {
+       shim = require('./set-prototype-of/shim');
+}
+
+module.exports = (function () {
+       var nullObject, props, desc;
+       if (!shim) return create;
+       if (shim.level !== 1) return create;
+
+       nullObject = {};
+       props = {};
+       desc = { configurable: false, enumerable: false, writable: true,
+               value: undefined };
+       Object.getOwnPropertyNames(Object.prototype).forEach(function (name) {
+               if (name === '__proto__') {
+                       props[name] = { configurable: true, enumerable: false, writable: true,
+                               value: undefined };
+                       return;
+               }
+               props[name] = desc;
+       });
+       Object.defineProperties(nullObject, props);
+
+       Object.defineProperty(shim, 'nullPolyfill', { configurable: false,
+               enumerable: false, writable: false, value: nullObject });
+
+       return function (prototype, props) {
+               return create((prototype === null) ? nullObject : prototype, props);
+       };
+}());
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js
new file mode 100644 (file)
index 0000000..037937e
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (x, y) {
+       return ((x === y) || ((x !== x) && (y !== y))); //jslint: ignore
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js
new file mode 100644 (file)
index 0000000..1303db2
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./_iterate')('every', true);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js
new file mode 100644 (file)
index 0000000..e5edb49
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call;
+
+module.exports = function (obj, cb/*, thisArg*/) {
+       var o = {}, thisArg = arguments[2];
+       callable(cb);
+       forEach(obj, function (value, key, obj, index) {
+               if (call.call(cb, thisArg, value, key, obj, index)) o[key] = obj[key];
+       });
+       return o;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js
new file mode 100644 (file)
index 0000000..7df10b2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var value = require('./valid-value')
+
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (obj) {
+       var i;
+       value(obj);
+       for (i in obj) {
+               if (propertyIsEnumerable.call(obj, i)) return i;
+       }
+       return null;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js
new file mode 100644 (file)
index 0000000..e8b4044
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var isPlainObject = require('./is-plain-object')
+  , forEach       = require('./for-each')
+
+  , process;
+
+process = function self(value, key) {
+       if (isPlainObject(value)) forEach(value, self, this);
+       else this[key] = value;
+};
+
+module.exports = function (obj) {
+       var flattened = {};
+       forEach(obj, process, flattened);
+       return flattened;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js
new file mode 100644 (file)
index 0000000..6674f8a
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./_iterate')('forEach');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js
new file mode 100644 (file)
index 0000000..54a01e5
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var uniq  = require('../array/#/uniq')
+  , value = require('./valid-value')
+
+  , push = Array.prototype.push
+  , getOwnPropertyNames = Object.getOwnPropertyNames
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (obj) {
+       var keys;
+       obj = Object(value(obj));
+       keys = getOwnPropertyNames(obj);
+       while ((obj = getPrototypeOf(obj))) {
+               push.apply(keys, getOwnPropertyNames(obj));
+       }
+       return uniq.call(keys);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js
new file mode 100644 (file)
index 0000000..4bdf403
--- /dev/null
@@ -0,0 +1,48 @@
+'use strict';
+
+module.exports = {
+       assign:                     require('./assign'),
+       clear:                      require('./clear'),
+       compact:                    require('./compact'),
+       compare:                    require('./compare'),
+       copy:                       require('./copy'),
+       copyDeep:                   require('./copy-deep'),
+       count:                      require('./count'),
+       create:                     require('./create'),
+       eq:                         require('./eq'),
+       every:                      require('./every'),
+       filter:                     require('./filter'),
+       firstKey:                   require('./first-key'),
+       flatten:                    require('./flatten'),
+       forEach:                    require('./for-each'),
+       getPropertyNames:           require('./get-property-names'),
+       is:                         require('./is'),
+       isArrayLike:                require('./is-array-like'),
+       isCallable:                 require('./is-callable'),
+       isCopy:                     require('./is-copy'),
+       isCopyDeep:                 require('./is-copy-deep'),
+       isEmpty:                    require('./is-empty'),
+       isObject:                   require('./is-object'),
+       isPlainObject:              require('./is-plain-object'),
+       keyOf:                      require('./key-of'),
+       keys:                       require('./keys'),
+       map:                        require('./map'),
+       mapKeys:                    require('./map-keys'),
+       normalizeOptions:           require('./normalize-options'),
+       mixin:                      require('./mixin'),
+       mixinPrototypes:            require('./mixin-prototypes'),
+       primitiveSet:               require('./primitive-set'),
+       safeTraverse:               require('./safe-traverse'),
+       serialize:                  require('./serialize'),
+       setPrototypeOf:             require('./set-prototype-of'),
+       some:                       require('./some'),
+       toArray:                    require('./to-array'),
+       unserialize:                require('./unserialize'),
+       validateArrayLike:          require('./validate-array-like'),
+       validateArrayLikeObject:    require('./validate-array-like-object'),
+       validCallable:              require('./valid-callable'),
+       validObject:                require('./valid-object'),
+       validateStringifiable:      require('./validate-stringifiable'),
+       validateStringifiableValue: require('./validate-stringifiable-value'),
+       validValue:                 require('./valid-value')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js
new file mode 100644 (file)
index 0000000..b8beed2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var isFunction = require('../function/is-function')
+  , isObject   = require('./is-object');
+
+module.exports = function (x) {
+       return ((x != null) && (typeof x.length === 'number') &&
+
+               // Just checking ((typeof x === 'object') && (typeof x !== 'function'))
+               // won't work right for some cases, e.g.:
+               // type of instance of NodeList in Safari is a 'function'
+
+               ((isObject(x) && !isFunction(x)) || (typeof x === "string"))) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js
new file mode 100644 (file)
index 0000000..5d5d4b3
--- /dev/null
@@ -0,0 +1,5 @@
+// Deprecated
+
+'use strict';
+
+module.exports = function (obj) { return typeof obj === 'function'; };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js
new file mode 100644 (file)
index 0000000..c4b2b42
--- /dev/null
@@ -0,0 +1,58 @@
+'use strict';
+
+var eq            = require('./eq')
+  , isPlainObject = require('./is-plain-object')
+  , value         = require('./valid-value')
+
+  , isArray = Array.isArray, keys = Object.keys
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable
+
+  , eqArr, eqVal, eqObj;
+
+eqArr = function (a, b, recMap) {
+       var i, l = a.length;
+       if (l !== b.length) return false;
+       for (i = 0; i < l; ++i) {
+               if (a.hasOwnProperty(i) !== b.hasOwnProperty(i)) return false;
+               if (!eqVal(a[i], b[i], recMap)) return false;
+       }
+       return true;
+};
+
+eqObj = function (a, b, recMap) {
+       var k1 = keys(a), k2 = keys(b);
+       if (k1.length !== k2.length) return false;
+       return k1.every(function (key) {
+               if (!propertyIsEnumerable.call(b, key)) return false;
+               return eqVal(a[key], b[key], recMap);
+       });
+};
+
+eqVal = function (a, b, recMap) {
+       var i, eqX, c1, c2;
+       if (eq(a, b)) return true;
+       if (isPlainObject(a)) {
+               if (!isPlainObject(b)) return false;
+               eqX = eqObj;
+       } else if (isArray(a) && isArray(b)) {
+               eqX = eqArr;
+       } else {
+               return false;
+       }
+       c1 = recMap[0];
+       c2 = recMap[1];
+       i = c1.indexOf(a);
+       if (i !== -1) {
+               if (c2[i].indexOf(b) !== -1) return true;
+       } else {
+               i = c1.push(a) - 1;
+               c2[i] = [];
+       }
+       c2[i].push(b);
+       return eqX(a, b, recMap);
+};
+
+module.exports = function (a, b) {
+       if (eq(value(a), value(b))) return true;
+       return eqVal(Object(a), Object(b), [[], []]);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js
new file mode 100644 (file)
index 0000000..4fe639d
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var eq     = require('./eq')
+  , value  = require('./valid-value')
+
+  , keys = Object.keys
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (a, b) {
+       var k1, k2;
+
+       if (eq(value(a), value(b))) return true;
+
+       a = Object(a);
+       b = Object(b);
+
+       k1 = keys(a);
+       k2 = keys(b);
+       if (k1.length !== k2.length) return false;
+       return k1.every(function (key) {
+               if (!propertyIsEnumerable.call(b, key)) return false;
+               return eq(a[key], b[key]);
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js
new file mode 100644 (file)
index 0000000..7b51a87
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var value = require('./valid-value')
+
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (obj) {
+       var i;
+       value(obj);
+       for (i in obj) { //jslint: ignore
+               if (propertyIsEnumerable.call(obj, i)) return false;
+       }
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js
new file mode 100644 (file)
index 0000000..a86facf
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var map = { function: true, object: true };
+
+module.exports = function (x) {
+       return ((x != null) && map[typeof x]) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js
new file mode 100644 (file)
index 0000000..9a28231
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var getPrototypeOf = Object.getPrototypeOf, prototype = Object.prototype
+  , toString = prototype.toString
+
+  , id = Object().toString();
+
+module.exports = function (value) {
+       var proto, constructor;
+       if (!value || (typeof value !== 'object') || (toString.call(value) !== id)) {
+               return false;
+       }
+       proto = getPrototypeOf(value);
+       if (proto === null) {
+               constructor = value.constructor;
+               if (typeof constructor !== 'function') return true;
+               return (constructor.prototype !== value);
+       }
+       return (proto === prototype) || (getPrototypeOf(proto) === null);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js
new file mode 100644 (file)
index 0000000..5778b50
--- /dev/null
@@ -0,0 +1,10 @@
+// Implementation credits go to:
+// http://wiki.ecmascript.org/doku.php?id=harmony:egal
+
+'use strict';
+
+module.exports = function (x, y) {
+       return (x === y) ?
+                       ((x !== 0) || ((1 / x) === (1 / y))) :
+                       ((x !== x) && (y !== y)); //jslint: ignore
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js
new file mode 100644 (file)
index 0000000..8c44c8d
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var eq   = require('./eq')
+  , some = require('./some');
+
+module.exports = function (obj, searchValue) {
+       var r;
+       return some(obj, function (value, name) {
+               if (eq(value, searchValue)) {
+                       r = name;
+                       return true;
+               }
+               return false;
+       }) ? r : null;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js
new file mode 100644 (file)
index 0000000..c6872bd
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Object, 'keys', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js
new file mode 100644 (file)
index 0000000..5ef0522
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Object.keys
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..40c32c3
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function () {
+       try {
+               Object.keys('primitive');
+               return true;
+       } catch (e) { return false; }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js
new file mode 100644 (file)
index 0000000..034b6b2
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var keys = Object.keys;
+
+module.exports = function (object) {
+       return keys(object == null ? object : Object(object));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js
new file mode 100644 (file)
index 0000000..26f0eca
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call;
+
+module.exports = function (obj, cb/*, thisArg*/) {
+       var o = {}, thisArg = arguments[2];
+       callable(cb);
+       forEach(obj, function (value, key, obj, index) {
+               o[call.call(cb, thisArg, key, value, this, index)] = value;
+       }, obj);
+       return o;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js
new file mode 100644 (file)
index 0000000..6b39d3c
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call;
+
+module.exports = function (obj, cb/*, thisArg*/) {
+       var o = {}, thisArg = arguments[2];
+       callable(cb);
+       forEach(obj, function (value, key, obj, index) {
+               o[key] = call.call(cb, thisArg, value, key, obj, index);
+       });
+       return o;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js
new file mode 100644 (file)
index 0000000..1ef5756
--- /dev/null
@@ -0,0 +1,34 @@
+'use strict';
+
+var value = require('./valid-value')
+  , mixin = require('./mixin')
+
+  , defineProperty = Object.defineProperty
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+  , getOwnPropertyNames = Object.getOwnPropertyNames
+  , getPrototypeOf = Object.getPrototypeOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (target, source) {
+       var error, end, define;
+       target = Object(value(target));
+       source = Object(value(source));
+       end = getPrototypeOf(target);
+       if (source === end) return target;
+       try {
+               mixin(target, source);
+       } catch (e) { error = e; }
+       source = getPrototypeOf(source);
+       define = function (name) {
+               if (hasOwnProperty.call(target, name)) return;
+               try {
+                       defineProperty(target, name, getOwnPropertyDescriptor(source, name));
+               } catch (e) { error = e; }
+       };
+       while (source && (source !== end)) {
+               getOwnPropertyNames(source).forEach(define);
+               source = getPrototypeOf(source);
+       }
+       if (error) throw error;
+       return target;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js
new file mode 100644 (file)
index 0000000..80b5df5
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var value = require('./valid-value')
+
+  , defineProperty = Object.defineProperty
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+  , getOwnPropertyNames = Object.getOwnPropertyNames;
+
+module.exports = function (target, source) {
+       var error;
+       target = Object(value(target));
+       getOwnPropertyNames(Object(value(source))).forEach(function (name) {
+               try {
+                       defineProperty(target, name, getOwnPropertyDescriptor(source, name));
+               } catch (e) { error = e; }
+       });
+       if (error !== undefined) throw error;
+       return target;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js
new file mode 100644 (file)
index 0000000..cf8ed8d
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var forEach = Array.prototype.forEach, create = Object.create;
+
+var process = function (src, obj) {
+       var key;
+       for (key in src) obj[key] = src[key];
+};
+
+module.exports = function (options/*, …options*/) {
+       var result = create(null);
+       forEach.call(arguments, function (options) {
+               if (options == null) return;
+               process(Object(options), result);
+       });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js
new file mode 100644 (file)
index 0000000..ada1095
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var forEach = Array.prototype.forEach, create = Object.create;
+
+module.exports = function (arg/*, …args*/) {
+       var set = create(null);
+       forEach.call(arguments, function (name) { set[name] = true; });
+       return set;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js
new file mode 100644 (file)
index 0000000..7e1b5f4
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var value = require('./valid-value');
+
+module.exports = function (obj/*, …names*/) {
+       var length, current = 1;
+       value(obj);
+       length = arguments.length - 1;
+       if (!length) return obj;
+       while (current < length) {
+               obj = obj[arguments[current++]];
+               if (obj == null) return undefined;
+       }
+       return obj[arguments[current]];
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js
new file mode 100644 (file)
index 0000000..8113b68
--- /dev/null
@@ -0,0 +1,36 @@
+'use strict';
+
+var toArray  = require('./to-array')
+  , isDate   = require('../date/is-date')
+  , isRegExp = require('../reg-exp/is-reg-exp')
+
+  , isArray = Array.isArray, stringify = JSON.stringify
+  , keyValueToString = function (value, key) { return stringify(key) + ':' + exports(value); };
+
+var sparseMap = function (arr) {
+       var i, l = arr.length, result = new Array(l);
+       for (i = 0; i < l; ++i) {
+               if (!arr.hasOwnProperty(i)) continue;
+               result[i] = exports(arr[i]);
+       }
+       return result;
+};
+
+module.exports = exports = function (obj) {
+       if (obj == null) return String(obj);
+       switch (typeof obj) {
+       case 'string':
+               return stringify(obj);
+       case 'number':
+       case 'boolean':
+       case 'function':
+               return String(obj);
+       case 'object':
+               if (isArray(obj)) return '[' + sparseMap(obj) + ']';
+               if (isRegExp(obj)) return String(obj);
+               if (isDate(obj)) return 'new Date(' + obj.valueOf() + ')';
+               return '{' + toArray(obj, keyValueToString) + '}';
+       default:
+               throw new TypeError("Serialization of " + String(obj) + "is unsupported");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js
new file mode 100644 (file)
index 0000000..000e6bd
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var shim;
+
+if (!require('./is-implemented')() && (shim = require('./shim'))) {
+       Object.defineProperty(Object, 'setPrototypeOf',
+               { value: shim, configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js
new file mode 100644 (file)
index 0000000..ccc4099
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Object.setPrototypeOf
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js
new file mode 100644 (file)
index 0000000..98d0c84
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var create = Object.create, getPrototypeOf = Object.getPrototypeOf
+  , x = {};
+
+module.exports = function (/*customCreate*/) {
+       var setPrototypeOf = Object.setPrototypeOf
+         , customCreate = arguments[0] || create;
+       if (typeof setPrototypeOf !== 'function') return false;
+       return getPrototypeOf(setPrototypeOf(customCreate(null), x)) === x;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js
new file mode 100644 (file)
index 0000000..4ec9446
--- /dev/null
@@ -0,0 +1,73 @@
+// Big thanks to @WebReflection for sorting this out
+// https://gist.github.com/WebReflection/5593554
+
+'use strict';
+
+var isObject      = require('../is-object')
+  , value         = require('../valid-value')
+
+  , isPrototypeOf = Object.prototype.isPrototypeOf
+  , defineProperty = Object.defineProperty
+  , nullDesc = { configurable: true, enumerable: false, writable: true,
+               value: undefined }
+  , validate;
+
+validate = function (obj, prototype) {
+       value(obj);
+       if ((prototype === null) || isObject(prototype)) return obj;
+       throw new TypeError('Prototype must be null or an object');
+};
+
+module.exports = (function (status) {
+       var fn, set;
+       if (!status) return null;
+       if (status.level === 2) {
+               if (status.set) {
+                       set = status.set;
+                       fn = function (obj, prototype) {
+                               set.call(validate(obj, prototype), prototype);
+                               return obj;
+                       };
+               } else {
+                       fn = function (obj, prototype) {
+                               validate(obj, prototype).__proto__ = prototype;
+                               return obj;
+                       };
+               }
+       } else {
+               fn = function self(obj, prototype) {
+                       var isNullBase;
+                       validate(obj, prototype);
+                       isNullBase = isPrototypeOf.call(self.nullPolyfill, obj);
+                       if (isNullBase) delete self.nullPolyfill.__proto__;
+                       if (prototype === null) prototype = self.nullPolyfill;
+                       obj.__proto__ = prototype;
+                       if (isNullBase) defineProperty(self.nullPolyfill, '__proto__', nullDesc);
+                       return obj;
+               };
+       }
+       return Object.defineProperty(fn, 'level', { configurable: false,
+               enumerable: false, writable: false, value: status.level });
+}((function () {
+       var x = Object.create(null), y = {}, set
+         , desc = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__');
+
+       if (desc) {
+               try {
+                       set = desc.set; // Opera crashes at this point
+                       set.call(x, y);
+               } catch (ignore) { }
+               if (Object.getPrototypeOf(x) === y) return { set: set, level: 2 };
+       }
+
+       x.__proto__ = y;
+       if (Object.getPrototypeOf(x) === y) return { level: 2 };
+
+       x = {};
+       x.__proto__ = y;
+       if (Object.getPrototypeOf(x) === y) return { level: 1 };
+
+       return false;
+}())));
+
+require('../create');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js
new file mode 100644 (file)
index 0000000..cde5dde
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./_iterate')('some', false);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js
new file mode 100644 (file)
index 0000000..a954abb
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call
+
+  , defaultCb = function (value, key) { return [key, value]; };
+
+module.exports = function (obj/*, cb, thisArg, compareFn*/) {
+       var a = [], cb = arguments[1], thisArg = arguments[2];
+       cb = (cb == null) ? defaultCb : callable(cb);
+
+       forEach(obj, function (value, key, obj, index) {
+               a.push(call.call(cb, thisArg, value, key, this, index));
+       }, obj, arguments[3]);
+       return a;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js
new file mode 100644 (file)
index 0000000..ce68e40
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var value  = require('./valid-value');
+
+module.exports = exports = function (code) {
+       return (new Function('return ' + value(code)))();
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js
new file mode 100644 (file)
index 0000000..c977527
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (fn) {
+       if (typeof fn !== 'function') throw new TypeError(fn + " is not a function");
+       return fn;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js
new file mode 100644 (file)
index 0000000..f82bd51
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isObject = require('./is-object');
+
+module.exports = function (value) {
+       if (!isObject(value)) throw new TypeError(value + " is not an Object");
+       return value;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js
new file mode 100644 (file)
index 0000000..36c8ec3
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (value) {
+       if (value == null) throw new TypeError("Cannot use null or undefined");
+       return value;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js
new file mode 100644 (file)
index 0000000..89e12c5
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var isArrayLike = require('./is-array-like')
+  , isObject    = require('./is-object');
+
+module.exports = function (obj) {
+       if (isObject(obj) && isArrayLike(obj)) return obj;
+       throw new TypeError(obj + " is not array-like object");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js
new file mode 100644 (file)
index 0000000..6a35b54
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isArrayLike = require('./is-array-like');
+
+module.exports = function (obj) {
+       if (isArrayLike(obj)) return obj;
+       throw new TypeError(obj + " is not array-like value");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js
new file mode 100644 (file)
index 0000000..9df3b66
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var value         = require('./valid-value')
+  , stringifiable = require('./validate-stringifiable');
+
+module.exports = function (x) { return stringifiable(value(x)); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js
new file mode 100644 (file)
index 0000000..eba7ce7
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (stringifiable) {
+       try {
+               return String(stringifiable);
+       } catch (e) {
+               throw new TypeError("Passed argument cannot be stringifed");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json
new file mode 100644 (file)
index 0000000..01d6532
--- /dev/null
@@ -0,0 +1,74 @@
+{
+  "name": "es5-ext",
+  "version": "0.10.7",
+  "description": "ECMAScript 5 extensions and ES6 shims",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "ecmascript",
+    "ecmascript5",
+    "ecmascript6",
+    "es5",
+    "es6",
+    "extensions",
+    "ext",
+    "addons",
+    "extras",
+    "harmony",
+    "javascript",
+    "polyfill",
+    "shim",
+    "util",
+    "utils",
+    "utilities"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es5-ext.git"
+  },
+  "dependencies": {
+    "es6-iterator": "~0.1.3",
+    "es6-symbol": "~2.0.1"
+  },
+  "devDependencies": {
+    "tad": "~0.2.2",
+    "xlint": "~0.2.2",
+    "xlint-jslint-medikoo": "~0.1.2"
+  },
+  "scripts": {
+    "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+    "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "5b63ee02f50dfbc70dc1f62bc66b8718af443f83",
+  "bugs": {
+    "url": "https://github.com/medikoo/es5-ext/issues"
+  },
+  "homepage": "https://github.com/medikoo/es5-ext",
+  "_id": "es5-ext@0.10.7",
+  "_shasum": "dfaea50721301042e2d89c1719d43493fa821656",
+  "_from": "es5-ext@>=0.10.6 <0.11.0",
+  "_npmVersion": "2.7.4",
+  "_nodeVersion": "0.12.2",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "dfaea50721301042e2d89c1719d43493fa821656",
+    "tarball": "http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js
new file mode 100644 (file)
index 0000000..f7e7a58
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = {
+       isSticky:  require('./is-sticky'),
+       isUnicode: require('./is-unicode'),
+       match:     require('./match'),
+       replace:   require('./replace'),
+       search:    require('./search'),
+       split:     require('./split')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js
new file mode 100644 (file)
index 0000000..830a481
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var validRegExp = require('../valid-reg-exp')
+
+  , re = /\/[a-xz]*y[a-xz]*$/;
+
+module.exports = function () {
+       return Boolean(String(validRegExp(this)).match(re));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js
new file mode 100644 (file)
index 0000000..b005f6d
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var validRegExp = require('../valid-reg-exp')
+
+  , re = /\/[a-xz]*u[a-xz]*$/;
+
+module.exports = function () {
+       return Boolean(String(validRegExp(this)).match(re));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js
new file mode 100644 (file)
index 0000000..921c936
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'match', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js
new file mode 100644 (file)
index 0000000..0534ac3
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.match
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js
new file mode 100644 (file)
index 0000000..b7e9964
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /foo/;
+
+module.exports = function () {
+       if (typeof re.match !== 'function') return false;
+       return re.match('barfoobar') && !re.match('elo');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js
new file mode 100644 (file)
index 0000000..4f99cf4
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string) {
+       validRegExp(this);
+       return String(string).match(this);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js
new file mode 100644 (file)
index 0000000..ad580de
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'replace', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js
new file mode 100644 (file)
index 0000000..5658177
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.replace
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js
new file mode 100644 (file)
index 0000000..1b42d25
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /foo/;
+
+module.exports = function () {
+       if (typeof re.replace !== 'function') return false;
+       return re.replace('foobar', 'mar') === 'marbar';
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js
new file mode 100644 (file)
index 0000000..c3e6aeb
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string, replaceValue) {
+       validRegExp(this);
+       return String(string).replace(this, replaceValue);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js
new file mode 100644 (file)
index 0000000..3804f4e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'search', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js
new file mode 100644 (file)
index 0000000..67995d4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.search
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js
new file mode 100644 (file)
index 0000000..efba889
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /foo/;
+
+module.exports = function () {
+       if (typeof re.search !== 'function') return false;
+       return re.search('barfoo') === 3;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js
new file mode 100644 (file)
index 0000000..6d9dcae
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string) {
+       validRegExp(this);
+       return String(string).search(this);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js
new file mode 100644 (file)
index 0000000..50facb6
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'split', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js
new file mode 100644 (file)
index 0000000..f101f5a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.split
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js
new file mode 100644 (file)
index 0000000..7244c99
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /\|/;
+
+module.exports = function () {
+       if (typeof re.split !== 'function') return false;
+       return re.split('bar|foo')[1] === 'foo';
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js
new file mode 100644 (file)
index 0000000..76154e7
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string) {
+       validRegExp(this);
+       return String(string).split(this);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js
new file mode 100644 (file)
index 0000000..7e8af1d
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isSticky = require('../is-sticky');
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'sticky', { configurable: true,
+               enumerable: false, get: isSticky });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js
new file mode 100644 (file)
index 0000000..379c4a5
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return RegExp.prototype.sticky === false;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js
new file mode 100644 (file)
index 0000000..5a82a4d
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isUnicode = require('../is-unicode');
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'unicode', { configurable: true,
+               enumerable: false, get: isUnicode });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js
new file mode 100644 (file)
index 0000000..a8b15b3
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return RegExp.prototype.unicode === false;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js
new file mode 100644 (file)
index 0000000..a2363fc
--- /dev/null
@@ -0,0 +1,9 @@
+// Thanks to Andrew Clover:
+// http://stackoverflow.com/questions/3561493
+// /is-there-a-regexp-escape-function-in-javascript
+
+'use strict';
+
+var re = /[\-\/\\\^$*+?.()|\[\]{}]/g;
+
+module.exports = function (str) { return String(str).replace(re, '\\$&'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js
new file mode 100644 (file)
index 0000000..75ea313
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = {
+       '#':         require('./#'),
+       escape:      require('./escape'),
+       isRegExp:    require('./is-reg-exp'),
+       validRegExp: require('./valid-reg-exp')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js
new file mode 100644 (file)
index 0000000..6eb1297
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(/a/);
+
+module.exports = function (x) {
+       return (x && (x instanceof RegExp || (toString.call(x) === id))) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js
new file mode 100644 (file)
index 0000000..d3a7764
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isRegExp = require('./is-reg-exp');
+
+module.exports = function (x) {
+       if (!isRegExp(x)) throw new TypeError(x + " is not a RegExp object");
+       return x;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..4494d7b
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, require('es6-symbol').iterator,
+               { value: require('./shim'), configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..22f15e6
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype[require('es6-symbol').iterator] : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..f5c462d
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function () {
+       var str = '🙈f', iterator, result;
+       if (typeof str[iteratorSymbol] !== 'function') return false;
+       iterator = str[iteratorSymbol]();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== '🙈') return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..0be3029
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var StringIterator = require('es6-iterator/string')
+  , value          = require('../../../object/valid-value');
+
+module.exports = function () { return new StringIterator(value(this)); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js
new file mode 100644 (file)
index 0000000..77bd251
--- /dev/null
@@ -0,0 +1,33 @@
+// Based on: https://github.com/mathiasbynens/String.prototype.at
+// Thanks @mathiasbynens !
+
+'use strict';
+
+var toInteger  = require('../../number/to-integer')
+  , validValue = require('../../object/valid-value');
+
+module.exports = function (pos) {
+       var str = String(validValue(this)), size = str.length
+         , cuFirst, cuSecond, nextPos, len;
+       pos = toInteger(pos);
+
+       // Account for out-of-bounds indices
+       // The odd lower bound is because the ToInteger operation is
+       // going to round `n` to `0` for `-1 < n <= 0`.
+       if (pos <= -1 || pos >= size) return '';
+
+       // Second half of `ToInteger`
+       pos = pos | 0;
+       // Get the first code unit and code unit value
+       cuFirst = str.charCodeAt(pos);
+       nextPos = pos + 1;
+       len = 1;
+       if ( // check if it’s the start of a surrogate pair
+               (cuFirst >= 0xD800) && (cuFirst <= 0xDBFF) && // high surrogate
+                       (size > nextPos) // there is a next code unit
+       ) {
+               cuSecond = str.charCodeAt(nextPos);
+               if (cuSecond >= 0xDC00 && cuSecond <= 0xDFFF) len = 2; // low surrogate
+       }
+       return str.slice(pos, pos + len);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js
new file mode 100644 (file)
index 0000000..1cb8d12
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var replace = String.prototype.replace
+  , re = /([A-Z])/g;
+
+module.exports = function () {
+       var str = replace.call(this, re, "-$1").toLowerCase();
+       if (str[0] === '-') str = str.slice(1);
+       return str;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js
new file mode 100644 (file)
index 0000000..ed76827
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function () {
+       var str = String(value(this));
+       return str.charAt(0).toUpperCase() + str.slice(1);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js
new file mode 100644 (file)
index 0000000..599cb83
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var toLowerCase = String.prototype.toLowerCase;
+
+module.exports = function (other) {
+       return toLowerCase.call(this).localeCompare(toLowerCase.call(String(other)));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js
new file mode 100644 (file)
index 0000000..1e7a37b
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'codePointAt',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js
new file mode 100644 (file)
index 0000000..7e91d83
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.codePointAt
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js
new file mode 100644 (file)
index 0000000..b271589
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'abc\uD834\uDF06def';
+
+module.exports = function () {
+       if (typeof str.codePointAt !== 'function') return false;
+       return str.codePointAt(3) === 0x1D306;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js
new file mode 100644 (file)
index 0000000..1c9038b
--- /dev/null
@@ -0,0 +1,26 @@
+// Based on: https://github.com/mathiasbynens/String.prototype.codePointAt
+// Thanks @mathiasbynens !
+
+'use strict';
+
+var toInteger  = require('../../../number/to-integer')
+  , validValue = require('../../../object/valid-value');
+
+module.exports = function (pos) {
+       var str = String(validValue(this)), l = str.length, first, second;
+       pos = toInteger(pos);
+
+       // Account for out-of-bounds indices:
+       if (pos < 0 || pos >= l) return undefined;
+
+       // Get the first code unit
+       first = str.charCodeAt(pos);
+       if ((first >= 0xD800) && (first <= 0xDBFF) && (l > pos + 1)) {
+               second = str.charCodeAt(pos + 1);
+               if (second >= 0xDC00 && second <= 0xDFFF) {
+                       // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+                       return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
+               }
+       }
+       return first;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js
new file mode 100644 (file)
index 0000000..6b7a3c0
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'contains',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js
new file mode 100644 (file)
index 0000000..abb3e37
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.contains
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js
new file mode 100644 (file)
index 0000000..6f7d4b7
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'razdwatrzy';
+
+module.exports = function () {
+       if (typeof str.contains !== 'function') return false;
+       return ((str.contains('dwa') === true) && (str.contains('foo') === false));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js
new file mode 100644 (file)
index 0000000..89e39e7
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var indexOf = String.prototype.indexOf;
+
+module.exports = function (searchString/*, position*/) {
+       return indexOf.call(this, searchString, arguments[1]) > -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js
new file mode 100644 (file)
index 0000000..0b09025
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'endsWith',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js
new file mode 100644 (file)
index 0000000..d2d9484
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.endsWith
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js
new file mode 100644 (file)
index 0000000..f3bb008
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'razdwatrzy';
+
+module.exports = function () {
+       if (typeof str.endsWith !== 'function') return false;
+       return ((str.endsWith('trzy') === true) && (str.endsWith('raz') === false));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js
new file mode 100644 (file)
index 0000000..26cbdb1
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var toInteger = require('../../../number/to-integer')
+  , value     = require('../../../object/valid-value')
+
+  , min = Math.min, max = Math.max;
+
+module.exports = function (searchString/*, endPosition*/) {
+       var self, start, endPos;
+       self = String(value(this));
+       searchString = String(searchString);
+       endPos = arguments[1];
+       start = ((endPos == null) ? self.length :
+                       min(max(toInteger(endPos), 0), self.length)) - searchString.length;
+       return (start < 0) ? false : (self.indexOf(searchString, start) === start);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js
new file mode 100644 (file)
index 0000000..8928b02
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var replace = String.prototype.replace
+
+  , re = /-([a-z0-9])/g
+  , toUpperCase = function (m, a) { return a.toUpperCase(); };
+
+module.exports = function () { return replace.call(this, re, toUpperCase); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js
new file mode 100644 (file)
index 0000000..223bd82
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var repeat = require('./repeat')
+
+  , replace = String.prototype.replace
+  , re = /(\r\n|[\n\r\u2028\u2029])([\u0000-\u0009\u000b-\uffff]+)/g;
+
+module.exports = function (indent/*, count*/) {
+       var count = arguments[1];
+       indent = repeat.call(String(indent), (count == null) ? 1 : count);
+       return indent + replace.call(this, re, '$1' + indent + '$2');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js
new file mode 100644 (file)
index 0000000..d45d747
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+module.exports = {
+       '@@iterator':           require('./@@iterator'),
+       at:                     require('./at'),
+       camelToHyphen:          require('./camel-to-hyphen'),
+       capitalize:             require('./capitalize'),
+       caseInsensitiveCompare: require('./case-insensitive-compare'),
+       codePointAt:            require('./code-point-at'),
+       contains:               require('./contains'),
+       hyphenToCamel:          require('./hyphen-to-camel'),
+       endsWith:               require('./ends-with'),
+       indent:                 require('./indent'),
+       last:                   require('./last'),
+       normalize:              require('./normalize'),
+       pad:                    require('./pad'),
+       plainReplace:           require('./plain-replace'),
+       plainReplaceAll:        require('./plain-replace-all'),
+       repeat:                 require('./repeat'),
+       startsWith:             require('./starts-with')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js
new file mode 100644 (file)
index 0000000..d5cf46e
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function () {
+       var self = String(value(this)), l = self.length;
+       return l ? self[l - 1] : null;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js
new file mode 100644 (file)
index 0000000..e4e00a3
--- /dev/null
@@ -0,0 +1,69 @@
+'use strict';
+
+module.exports = { 0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},
+       256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},
+       512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256]},
+       768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256]},
+       1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},
+       1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},
+       1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},
+       1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},
+       2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230]},
+       2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},
+       2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9]},
+       2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},
+       3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},
+       3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},
+       3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},
+       3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},
+       4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},
+       4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70080:[,9]},
+       4864:{4957:[,230],4958:[,230],4959:[,230]},
+       5632:{71350:[,9],71351:[,7]},
+       5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
+       6144:{6313:[,228]},
+       6400:{6457:[,222],6458:[,230],6459:[,220]},
+       6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220]},
+       6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},
+       7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230]},
+       7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},
+       7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},
+       7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},
+       8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},
+       8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},
+       8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},
+       8960:{9001:[[12296]],9002:[[12297]]},
+       9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},
+       10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},
+       11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
+       11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},
+       11776:{11935:[[27597],256],12019:[[40863],256]},
+       12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},
+       12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},
+       12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},
+       12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},
+       13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},
+       42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42655:[,230],42736:[,230],42737:[,230]},
+       42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
+       43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},
+       43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
+       43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
+       43776:{44013:[,9]},
+       53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},
+       53760:{119362:[,230],119363:[,230],119364:[,230]},
+       54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},
+       54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},
+       54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},
+       55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},
+       60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},
+       61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},
+       61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},
+       63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},
+       63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},
+       64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},
+       64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},
+       64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},
+       64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},
+       65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},
+       65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js
new file mode 100644 (file)
index 0000000..cfc710e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'normalize',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js
new file mode 100644 (file)
index 0000000..619b096
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.normalize
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js
new file mode 100644 (file)
index 0000000..67c8d8d
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'æøåäüö';
+
+module.exports = function () {
+       if (typeof str.normalize !== 'function') return false;
+       return str.normalize('NFKD') === 'æøåäüö';
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js
new file mode 100644 (file)
index 0000000..a379989
--- /dev/null
@@ -0,0 +1,289 @@
+// Taken from: https://github.com/walling/unorm/blob/master/lib/unorm.js
+
+/*
+       * UnicodeNormalizer 1.0.0
+       * Copyright (c) 2008 Matsuza
+       * Dual licensed under the MIT (MIT-LICENSE.txt) and
+       * GPL (GPL-LICENSE.txt) licenses.
+       * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
+       * $Rev: 13309 $
+*/
+
+'use strict';
+
+var primitiveSet = require('../../../object/primitive-set')
+  , validValue   = require('../../../object/valid-value')
+  , data         = require('./_data')
+
+  , floor = Math.floor
+  , forms = primitiveSet('NFC', 'NFD', 'NFKC', 'NFKD')
+
+  , DEFAULT_FEATURE = [null, 0, {}], CACHE_THRESHOLD = 10, SBase = 0xAC00
+  , LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21
+  , TCount = 28, NCount = VCount * TCount, SCount = LCount * NCount
+  , UChar, cache = {}, cacheCounter = [], i, fromCache, fromData, fromCpOnly
+  , fromRuleBasedJamo, fromCpFilter, strategies, UCharIterator
+  , RecursDecompIterator, DecompIterator, CompIterator, createIterator
+  , normalize;
+
+UChar = function (cp, feature) {
+       this.codepoint = cp;
+       this.feature = feature;
+};
+
+// Strategies
+for (i = 0; i <= 0xFF; ++i) cacheCounter[i] = 0;
+
+fromCache = function (next, cp, needFeature) {
+       var ret = cache[cp];
+       if (!ret) {
+               ret = next(cp, needFeature);
+               if (!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD) {
+                       cache[cp] = ret;
+               }
+       }
+       return ret;
+};
+
+fromData = function (next, cp, needFeature) {
+       var hash = cp & 0xFF00, dunit = UChar.udata[hash] || {}, f = dunit[cp];
+       return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
+};
+fromCpOnly = function (next, cp, needFeature) {
+       return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
+};
+
+fromRuleBasedJamo = function (next, cp, needFeature) {
+       var c, base, i, arr, SIndex, TIndex, feature, j;
+       if (cp < LBase || (LBase + LCount <= cp && cp < SBase) ||
+                       (SBase + SCount < cp)) {
+               return next(cp, needFeature);
+       }
+       if (LBase <= cp && cp < LBase + LCount) {
+               c = {};
+               base = (cp - LBase) * VCount;
+               for (i = 0; i < VCount; ++i) {
+                       c[VBase + i] = SBase + TCount * (i + base);
+               }
+               arr = new Array(3);
+               arr[2] = c;
+               return new UChar(cp, arr);
+       }
+
+       SIndex = cp - SBase;
+       TIndex = SIndex % TCount;
+       feature = [];
+       if (TIndex !== 0) {
+               feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
+       } else {
+               feature[0] = [LBase + floor(SIndex / NCount), VBase +
+                       floor((SIndex % NCount) / TCount)];
+               feature[2] = {};
+               for (j = 1; j < TCount; ++j) {
+                       feature[2][TBase + j] = cp + j;
+               }
+       }
+       return new UChar(cp, feature);
+};
+
+fromCpFilter = function (next, cp, needFeature) {
+       return (cp < 60) || ((13311 < cp) && (cp < 42607))
+               ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
+};
+
+strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
+
+UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
+       return function (cp, needFeature) { return strategy(next, cp, needFeature); };
+}, null);
+
+UChar.isHighSurrogate = function (cp) { return cp >= 0xD800 && cp <= 0xDBFF; };
+UChar.isLowSurrogate = function (cp) { return cp >= 0xDC00 && cp <= 0xDFFF; };
+
+UChar.prototype.prepFeature = function () {
+       if (!this.feature) {
+               this.feature = UChar.fromCharCode(this.codepoint, true).feature;
+       }
+};
+
+UChar.prototype.toString = function () {
+       var x;
+       if (this.codepoint < 0x10000) return String.fromCharCode(this.codepoint);
+       x = this.codepoint - 0x10000;
+       return String.fromCharCode(floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
+};
+
+UChar.prototype.getDecomp = function () {
+       this.prepFeature();
+       return this.feature[0] || null;
+};
+
+UChar.prototype.isCompatibility = function () {
+       this.prepFeature();
+       return !!this.feature[1] && (this.feature[1] & (1 << 8));
+};
+UChar.prototype.isExclude = function () {
+       this.prepFeature();
+       return !!this.feature[1] && (this.feature[1] & (1 << 9));
+};
+UChar.prototype.getCanonicalClass = function () {
+       this.prepFeature();
+       return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
+};
+UChar.prototype.getComposite = function (following) {
+       var cp;
+       this.prepFeature();
+       if (!this.feature[2]) return null;
+       cp = this.feature[2][following.codepoint];
+       return cp ? UChar.fromCharCode(cp) : null;
+};
+
+UCharIterator = function (str) {
+       this.str = str;
+       this.cursor = 0;
+};
+UCharIterator.prototype.next = function () {
+       if (!!this.str && this.cursor < this.str.length) {
+               var cp = this.str.charCodeAt(this.cursor++), d;
+               if (UChar.isHighSurrogate(cp) && this.cursor < this.str.length &&
+                               UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))) {
+                       cp = (cp - 0xD800) * 0x400 + (d - 0xDC00) + 0x10000;
+                       ++this.cursor;
+               }
+               return UChar.fromCharCode(cp);
+       }
+       this.str = null;
+       return null;
+};
+
+RecursDecompIterator = function (it, cano) {
+       this.it = it;
+       this.canonical = cano;
+       this.resBuf = [];
+};
+
+RecursDecompIterator.prototype.next = function () {
+       var recursiveDecomp, uchar;
+       recursiveDecomp = function (cano, uchar) {
+               var decomp = uchar.getDecomp(), ret, i, a, j;
+               if (!!decomp && !(cano && uchar.isCompatibility())) {
+                       ret = [];
+                       for (i = 0; i < decomp.length; ++i) {
+                               a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
+                               //ret.concat(a); //<-why does not this work?
+                               //following block is a workaround.
+                               for (j = 0; j < a.length; ++j) ret.push(a[j]);
+                       }
+                       return ret;
+               }
+               return [uchar];
+       };
+       if (this.resBuf.length === 0) {
+               uchar = this.it.next();
+               if (!uchar) return null;
+               this.resBuf = recursiveDecomp(this.canonical, uchar);
+       }
+       return this.resBuf.shift();
+};
+
+DecompIterator = function (it) {
+       this.it = it;
+       this.resBuf = [];
+};
+
+DecompIterator.prototype.next = function () {
+       var cc, uchar, inspt, uchar2, cc2;
+       if (this.resBuf.length === 0) {
+               do {
+                       uchar = this.it.next();
+                       if (!uchar) break;
+                       cc = uchar.getCanonicalClass();
+                       inspt = this.resBuf.length;
+                       if (cc !== 0) {
+                               for (inspt; inspt > 0; --inspt) {
+                                       uchar2 = this.resBuf[inspt - 1];
+                                       cc2 = uchar2.getCanonicalClass();
+                                       if (cc2 <= cc) break;
+                               }
+                       }
+                       this.resBuf.splice(inspt, 0, uchar);
+               } while (cc !== 0);
+       }
+       return this.resBuf.shift();
+};
+
+CompIterator = function (it) {
+       this.it = it;
+       this.procBuf = [];
+       this.resBuf = [];
+       this.lastClass = null;
+};
+
+CompIterator.prototype.next = function () {
+       var uchar, starter, composite, cc;
+       while (this.resBuf.length === 0) {
+               uchar = this.it.next();
+               if (!uchar) {
+                       this.resBuf = this.procBuf;
+                       this.procBuf = [];
+                       break;
+               }
+               if (this.procBuf.length === 0) {
+                       this.lastClass = uchar.getCanonicalClass();
+                       this.procBuf.push(uchar);
+               } else {
+                       starter = this.procBuf[0];
+                       composite = starter.getComposite(uchar);
+                       cc = uchar.getCanonicalClass();
+                       if (!!composite && (this.lastClass < cc || this.lastClass === 0)) {
+                               this.procBuf[0] = composite;
+                       } else {
+                               if (cc === 0) {
+                                       this.resBuf = this.procBuf;
+                                       this.procBuf = [];
+                               }
+                               this.lastClass = cc;
+                               this.procBuf.push(uchar);
+                       }
+               }
+       }
+       return this.resBuf.shift();
+};
+
+createIterator = function (mode, str) {
+       switch (mode) {
+       case "NFD":
+               return new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), true)
+               );
+       case "NFKD":
+               return new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), false)
+               );
+       case "NFC":
+               return new CompIterator(new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), true)
+               ));
+       case "NFKC":
+               return new CompIterator(new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), false)
+               ));
+       }
+       throw mode + " is invalid";
+};
+normalize = function (mode, str) {
+       var it = createIterator(mode, str), ret = "", uchar;
+       while (!!(uchar = it.next())) ret += uchar.toString();
+       return ret;
+};
+
+/* Unicode data */
+UChar.udata =  data;
+
+module.exports = function (/*form*/) {
+       var str = String(validValue(this)), form = arguments[0];
+       if (form === undefined) form = 'NFC';
+       else form = String(form);
+       if (!forms[form]) throw new RangeError('Invalid normalization form: ' + form);
+       return normalize(form, str);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js
new file mode 100644 (file)
index 0000000..f227f23
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var toInteger = require('../../number/to-integer')
+  , value     = require('../../object/valid-value')
+  , repeat    = require('./repeat')
+
+  , abs = Math.abs, max = Math.max;
+
+module.exports = function (fill/*, length*/) {
+       var self = String(value(this))
+         , sLength = self.length
+         , length = arguments[1];
+
+       length = isNaN(length) ? 1 : toInteger(length);
+       fill = repeat.call(String(fill), abs(length));
+       if (length >= 0) return fill.slice(0, max(0, length - sLength)) + self;
+       return self + (((sLength + length) >= 0) ? '' : fill.slice(length + sLength));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js
new file mode 100644 (file)
index 0000000..678b1cb
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function (search, replace) {
+       var index, pos = 0, str = String(value(this)), sl, rl;
+       search = String(search);
+       replace = String(replace);
+       sl = search.length;
+       rl = replace.length;
+       while ((index = str.indexOf(search, pos)) !== -1) {
+               str = str.slice(0, index) + replace + str.slice(index + sl);
+               pos = index + rl;
+       }
+       return str;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js
new file mode 100644 (file)
index 0000000..24ce16d
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var indexOf = String.prototype.indexOf, slice = String.prototype.slice;
+
+module.exports = function (search, replace) {
+       var index = indexOf.call(this, search);
+       if (index === -1) return String(this);
+       return slice.call(this, 0, index) + replace +
+               slice.call(this, index + String(search).length);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js
new file mode 100644 (file)
index 0000000..4c39b9f
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'repeat',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js
new file mode 100644 (file)
index 0000000..15a800e
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.repeat
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js
new file mode 100644 (file)
index 0000000..f7b8750
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'foo';
+
+module.exports = function () {
+       if (typeof str.repeat !== 'function') return false;
+       return (str.repeat(2) === 'foofoo');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js
new file mode 100644 (file)
index 0000000..0a3928b
--- /dev/null
@@ -0,0 +1,22 @@
+// Thanks: http://www.2ality.com/2014/01/efficient-string-repeat.html
+
+'use strict';
+
+var value     = require('../../../object/valid-value')
+  , toInteger = require('../../../number/to-integer');
+
+module.exports = function (count) {
+       var str = String(value(this)), result;
+       count = toInteger(count);
+       if (count < 0) throw new RangeError("Count must be >= 0");
+       if (!isFinite(count)) throw new RangeError("Count must be < ∞");
+       result = '';
+       if (!count) return result;
+       while (true) {
+               if (count & 1) result += str;
+               count >>>= 1;
+               if (count <= 0) break;
+               str += str;
+       }
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js
new file mode 100644 (file)
index 0000000..d4f1eaf
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'startsWith',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js
new file mode 100644 (file)
index 0000000..ec66a7c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.startsWith
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js
new file mode 100644 (file)
index 0000000..a0556f1
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var str = 'razdwatrzy';
+
+module.exports = function () {
+       if (typeof str.startsWith !== 'function') return false;
+       return ((str.startsWith('trzy') === false) &&
+               (str.startsWith('raz') === true));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js
new file mode 100644 (file)
index 0000000..aa5aaf4
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var value     = require('../../../object/valid-value')
+  , toInteger = require('../../../number/to-integer')
+
+  , max = Math.max, min = Math.min;
+
+module.exports = function (searchString/*, position*/) {
+       var start, self = String(value(this));
+       start = min(max(toInteger(arguments[1]), 0), self.length);
+       return (self.indexOf(searchString, start) === start);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js
new file mode 100644 (file)
index 0000000..f1de1e3
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var isCallable = require('../object/is-callable')
+  , value      = require('../object/valid-value')
+
+  , call = Function.prototype.call;
+
+module.exports = function (fmap) {
+       fmap = Object(value(fmap));
+       return function (pattern) {
+               var context = value(this);
+               pattern = String(pattern);
+               return pattern.replace(/%([a-zA-Z]+)|\\([\u0000-\uffff])/g,
+                       function (match, token, escape) {
+                               var t, r;
+                               if (escape) return escape;
+                               t = token;
+                               while (t && !(r = fmap[t])) t = t.slice(0, -1);
+                               if (!r) return match;
+                               if (isCallable(r)) r = call.call(r, context);
+                               return r + token.slice(t.length);
+                       });
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js
new file mode 100644 (file)
index 0000000..b062331
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String, 'fromCodePoint', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js
new file mode 100644 (file)
index 0000000..3f3110b
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.fromCodePoint
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js
new file mode 100644 (file)
index 0000000..840a20e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var fromCodePoint = String.fromCodePoint;
+       if (typeof fromCodePoint !== 'function') return false;
+       return fromCodePoint(0x1D306, 0x61, 0x1D307) === '\ud834\udf06a\ud834\udf07';
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js
new file mode 100644 (file)
index 0000000..41fd737
--- /dev/null
@@ -0,0 +1,30 @@
+// Based on:
+// http://norbertlindenberg.com/2012/05/ecmascript-supplementary-characters/
+// and:
+// https://github.com/mathiasbynens/String.fromCodePoint/blob/master
+// /fromcodepoint.js
+
+'use strict';
+
+var floor = Math.floor, fromCharCode = String.fromCharCode;
+
+module.exports = function (codePoint/*, …codePoints*/) {
+       var chars = [], l = arguments.length, i, c, result = '';
+       for (i = 0; i < l; ++i) {
+               c = Number(arguments[i]);
+               if (!isFinite(c) || c < 0 || c > 0x10FFFF || floor(c) !== c) {
+                       throw new RangeError("Invalid code point " + c);
+               }
+
+               if (c < 0x10000) {
+                       chars.push(c);
+               } else {
+                       c -= 0x10000;
+                       chars.push((c >> 10) + 0xD800, (c % 0x400) + 0xDC00);
+               }
+               if (i + 1 !== l && chars.length <= 0x4000) continue;
+               result += fromCharCode.apply(null, chars);
+               chars.length = 0;
+       }
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js
new file mode 100644 (file)
index 0000000..dbbcdf6
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = {
+       '#':           require('./#'),
+       formatMethod:  require('./format-method'),
+       fromCodePoint: require('./from-code-point'),
+       isString:      require('./is-string'),
+       randomUniq:    require('./random-uniq'),
+       raw:           require('./raw')
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js
new file mode 100644 (file)
index 0000000..719aeec
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call('');
+
+module.exports = function (x) {
+       return (typeof x === 'string') || (x && (typeof x === 'object') &&
+               ((x instanceof String) || (toString.call(x) === id))) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js
new file mode 100644 (file)
index 0000000..54ae6f8
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var generated = Object.create(null)
+
+  , random = Math.random;
+
+module.exports = function () {
+       var str;
+       do { str = random().toString(36).slice(2); } while (generated[str]);
+       return str;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js
new file mode 100644 (file)
index 0000000..c417e65
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String, 'raw', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js
new file mode 100644 (file)
index 0000000..504a5de
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.raw
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js
new file mode 100644 (file)
index 0000000..d7204c0
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function () {
+       var raw = String.raw, test;
+       if (typeof raw !== 'function') return false;
+       test = ['foo\nbar', 'marko\n'];
+       test.raw = ['foo\\nbar', 'marko\\n'];
+       return raw(test, 'INSE\nRT') === 'foo\\nbarINSE\nRTmarko\\n';
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js
new file mode 100644 (file)
index 0000000..7096efb
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var toPosInt   = require('../../number/to-pos-integer')
+  , validValue = require('../../object/valid-value')
+
+  , reduce = Array.prototype.reduce;
+
+module.exports = function (callSite/*,  …substitutions*/) {
+       var args, rawValue = Object(validValue(Object(validValue(callSite)).raw));
+       if (!toPosInt(rawValue.length)) return '';
+       args = arguments;
+       return reduce.call(rawValue, function (a, b, i) {
+               return a + String(args[i]) + b;
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/__tad.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/__tad.js
new file mode 100644 (file)
index 0000000..8845778
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+exports.context = null;
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..f060539
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/@@iterator/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..e590d8f
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: '1', done: false });
+       a.deep(iterator.next(), { value: '2', done: false });
+       a.deep(iterator.next(), { value: '3', done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/_compare-by-length.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/_compare-by-length.js
new file mode 100644 (file)
index 0000000..e40c305
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = [4, 5, 6], y = { length: 8 }, w = {}, z = { length: 1 };
+
+       a.deep([x, y, w, z].sort(t), [w, z, x, y]);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/binary-search.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/binary-search.js
new file mode 100644 (file)
index 0000000..cf33173
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var compare  = function (value) { return this - value; };
+
+module.exports = function (t, a) {
+       var arr;
+       arr = [2, 5, 5, 8, 34, 67, 98, 345, 678];
+
+       // highest, equal match
+       a(t.call(arr, compare.bind(1)), 0, "All higher");
+       a(t.call(arr, compare.bind(679)), arr.length - 1, "All lower");
+       a(t.call(arr, compare.bind(4)), 0, "Mid");
+       a(t.call(arr, compare.bind(5)), 2, "Match");
+       a(t.call(arr, compare.bind(6)), 2, "Above");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/clear.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/clear.js
new file mode 100644 (file)
index 0000000..a5b1c97
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = [1, 2, {}, 4];
+       a(t.call(x), x, "Returns same array");
+       a.deep(x, [], "Empties array");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/compact.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/compact.js
new file mode 100644 (file)
index 0000000..6390eb2
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this).length, 3);
+       },
+       "": function (t, a) {
+               var o, x, y, z;
+               o = {};
+               x = [0, 1, "", null, o, false, undefined, true];
+               y = x.slice(0);
+
+               a.not(z = t.call(x), x, "Returns different object");
+               a.deep(x, y, "Origin not changed");
+               a.deep(z, [0, 1, "", o, false, true], "Result");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/implement.js
new file mode 100644 (file)
index 0000000..3bdbe86
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/concat/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/shim.js
new file mode 100644 (file)
index 0000000..c30eb7e
--- /dev/null
@@ -0,0 +1,26 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr = [1, 3, 45], x = {}, subArr, subArr2, result;
+
+       a.deep(t.call(arr, '2d', x, ['ere', 'fe', x], false, null),
+               [1, 3, 45, '2d', x, 'ere', 'fe', x, false, null], "Plain array");
+
+       subArr = new SubArray('lol', 'miszko');
+       subArr2 = new SubArray('elo', 'fol');
+
+       result = t.call(subArr, 'df', arr, 'fef', subArr2, null);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, ['lol', 'miszko', 'df', 1, 3, 45, 'fef', 'elo', 'fol', null],
+               "Spreable by default");
+
+       SubArray.prototype['@@isConcatSpreadable'] = false;
+
+       result = t.call(subArr, 'df', arr, 'fef', subArr2, null);
+       a.deep(result, ['lol', 'miszko', 'df', 1, 3, 45, 'fef', subArr2, null],
+               "Non spreadable");
+
+       delete SubArray.prototype['@@isConcatSpreadable'];
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/contains.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/contains.js
new file mode 100644 (file)
index 0000000..21404a1
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this, this[1]), true, "Contains");
+               a(t.call(this, {}), false, "Does Not contain");
+       },
+       "": function (t, a) {
+               var o, x = {}, y = {};
+
+               o = [1, 'raz', x];
+
+               a(t.call(o, 1), true, "First");
+               a(t.call(o, '1'), false, "Type coercion");
+               a(t.call(o, 'raz'), true, "Primitive");
+               a(t.call(o, 'foo'), false, "Primitive not found");
+               a(t.call(o, x), true, "Object found");
+               a(t.call(o, y), false, "Object not found");
+               a(t.call(o, 1, 1), false, "Position");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/implement.js
new file mode 100644 (file)
index 0000000..3607047
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/copy-within/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/shim.js
new file mode 100644 (file)
index 0000000..93c85ea
--- /dev/null
@@ -0,0 +1,29 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var args, x;
+
+       a.h1("2 args");
+       x = [1, 2, 3, 4, 5];
+       t.call(x, 0, 3);
+       a.deep(x, [4, 5, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 3), [1, 4, 5, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 2), [1, 3, 4, 5, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 2, 2), [1, 2, 3, 4, 5]);
+
+       a.h1("3 args");
+       a.deep(t.call([1, 2, 3, 4, 5], 0, 3, 4), [4, 2, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 3, 4), [1, 4, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 2, 4), [1, 3, 4, 4, 5]);
+
+       a.h1("Negative args");
+       a.deep(t.call([1, 2, 3, 4, 5], 0, -2), [4, 5, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 0, -2, -1), [4, 2, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], -4, -3, -2), [1, 3, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], -4, -3, -1), [1, 3, 4, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], -4, -3), [1, 3, 4, 5, 5]);
+
+       a.h1("Array-likes");
+       args = { 0: 1, 1: 2, 2: 3, length: 3 };
+       a.deep(t.call(args, -2, 0), { '0': 1, '1': 1, '2': 2, length: 3 });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/diff.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/diff.js
new file mode 100644 (file)
index 0000000..bcfa3a0
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a.deep(t.call(this, this), []);
+       },
+       "": function (t, a) {
+               var x = {}, y = {};
+
+               a.deep(t.call([1, 'raz', x, 2, 'trzy', y], [x, 2, 'trzy']), [1, 'raz', y],
+                       "Scope longer");
+               a.deep(t.call([1, 'raz', x], [x, 2, 'trzy', 1, y]), ['raz'],
+                       "Arg longer");
+               a.deep(t.call([1, 'raz', x], []), [1, 'raz', x], "Empty arg");
+               a.deep(t.call([], [1, y, 'sdfs']), [], "Empty scope");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-index-of.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-index-of.js
new file mode 100644 (file)
index 0000000..4cf6c63
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([3, 'raz', {}, x, {}], x), 3, "Regular");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN), 2, "NaN");
+       a(t.call([3, 'raz', 0, {}, -0], -0), 2, "-0");
+       a(t.call([3, 'raz', -0, {}, 0], +0), 2, "+0");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, 3), 4, "fromIndex");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, -1), 4, "fromIndex negative #1");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, -2), 4, "fromIndex negative #2");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, -3), 2, "fromIndex negative #3");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-last-index-of.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-last-index-of.js
new file mode 100644 (file)
index 0000000..ed4f700
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([3, 'raz', {}, x, {}, x], x), 5, "Regular");
+       a(t.call([3, 'raz', NaN, {}, x], NaN), 2, "NaN");
+       a(t.call([3, 'raz', 0, {}, -0], -0), 4, "-0");
+       a(t.call([3, 'raz', -0, {}, 0], +0), 4, "+0");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, 3), 2, "fromIndex");
+       a(t.call([3, 'raz', NaN, 2, NaN], NaN, -1), 4, "Negative fromIndex #1");
+       a(t.call([3, 'raz', NaN, 2, NaN], NaN, -2), 2, "Negative fromIndex #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/implement.js
new file mode 100644 (file)
index 0000000..733209a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/entries/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/shim.js
new file mode 100644 (file)
index 0000000..bf40d31
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: [0, '1'], done: false });
+       a.deep(iterator.next(), { value: [1, '2'], done: false });
+       a.deep(iterator.next(), { value: [2, '3'], done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/exclusion.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/exclusion.js
new file mode 100644 (file)
index 0000000..07b32d8
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var x = {};
+               a.deep(t.call(this, this, [this[0], this[2], x]), [x]);
+       },
+       "": function (t, a) {
+               var x = {}, y = {};
+
+               a.deep(t.call([x, y]), [x, y], "No arguments");
+               a.deep(t.call([x, 1], [], []), [x, 1], "Empty arguments");
+               a.deep(t.call([1, 'raz', x], [2, 'raz', y], [2, 'raz', x]), [1, y]);
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/implement.js
new file mode 100644 (file)
index 0000000..2a01d28
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/fill/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/shim.js
new file mode 100644 (file)
index 0000000..d67300f
--- /dev/null
@@ -0,0 +1,18 @@
+// Taken from https://github.com/paulmillr/es6-shim/blob/master/test/array.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+
+       x = [1, 2, 3, 4, 5, 6];
+       a(t.call(x, -1), x, "Returns self object");
+       a.deep(x, [-1, -1, -1, -1, -1, -1], "Value");
+
+       a.deep(t.call([1, 2, 3, 4, 5, 6], -1, 3), [1, 2, 3, -1, -1, -1],
+               "Positive start");
+       a.deep(t.call([1, 2, 3, 4, 5, 6], -1, -3), [1, 2, 3, -1, -1, -1],
+               "Negative start");
+       a.deep(t.call([1, 2, 3, 4, 5, 6], -1, 9), [1, 2, 3, 4, 5, 6],
+               "Large start");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/implement.js
new file mode 100644 (file)
index 0000000..6d6b87c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/filter/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/shim.js
new file mode 100644 (file)
index 0000000..e8b5c39
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, Boolean), ['foo', '2d', x], "Plain array");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, Boolean);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, ['foo', '2d', x], "Result of subclass");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/implement.js
new file mode 100644 (file)
index 0000000..8d85e61
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/find-index/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/shim.js
new file mode 100644 (file)
index 0000000..b5fee46
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var count = 0, o = {}, self = Object(this);
+       a(t.call(self, function (value, i, scope) {
+               a(value, this[i], "Value");
+               a(i, count++, "Index");
+               a(scope, this, "Scope");
+       }, self), -1, "Falsy result");
+       a(count, 3);
+
+       count = -1;
+       a(t.call(this, function () {
+               return ++count ? o : null;
+       }, this), 1, "Truthy result");
+       a(count, 1);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/implement.js
new file mode 100644 (file)
index 0000000..29fac41
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/find/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/shim.js
new file mode 100644 (file)
index 0000000..ad2e645
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var count = 0, o = {}, self = Object(this);
+       a(t.call(self, function (value, i, scope) {
+               a(value, this[i], "Value");
+               a(i, count++, "Index");
+               a(scope, this, "Scope");
+       }, self), undefined, "Falsy result");
+       a(count, 3);
+
+       count = -1;
+       a(t.call(this, function () {
+               return ++count ? o : null;
+       }, this), this[1], "Truthy result");
+       a(count, 1);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first-index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first-index.js
new file mode 100644 (file)
index 0000000..4aebad6
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a(t.call([]), null, "Empty");
+       a(t.call([null]), 0, "One value");
+       a(t.call([1, 2, 3]), 0, "Many values");
+       a(t.call(new Array(1000)), null, "Sparse empty");
+       x = [];
+       x[883] = undefined;
+       x[890] = null;
+       a(t.call(x), 883, "Manual sparse, distant value");
+       x = new Array(1000);
+       x[657] = undefined;
+       x[700] = null;
+       a(t.call(x), 657, "Sparse, distant value");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first.js
new file mode 100644 (file)
index 0000000..87fde03
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       a(t.call(this), this[0]);
+};
+exports[''] = function (t, a) {
+       var x;
+       a(t.call([]), undefined, "Empty");
+       a(t.call(new Array(234), undefined, "Sparse empty"));
+       x = new Array(2342);
+       x[434] = {};
+       a(t.call(x), x[434], "Sparse");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/flatten.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/flatten.js
new file mode 100644 (file)
index 0000000..65f1214
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var o = [1, 2, [3, 4, [5, 6], 7, 8], 9, 10];
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this).length, 3);
+       },
+       "Nested Arrays": function (t, a) {
+               a(t.call(o).length, 10);
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/for-each-right.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/for-each-right.js
new file mode 100644 (file)
index 0000000..2d24569
--- /dev/null
@@ -0,0 +1,36 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var count = 0, first, last, x, icount = this.length;
+               t.call(this, function (item, index, col) {
+                       ++count;
+                       if (!first) {
+                               first = item;
+                       }
+                       last = item;
+                       x = col;
+                       a(index, --icount, "Index");
+               });
+               a(count, this.length, "Iterated");
+               a(first, this[this.length - 1], "First is last");
+               a(last, this[0], "Last is first");
+               a.deep(x, Object(this), "Collection as third argument"); //jslint: skip
+       },
+       "": function (t, a) {
+               var x = {}, y, count;
+               t.call([1], function () { y = this; }, x);
+               a(y, x, "Scope");
+               y = 0;
+               t.call([3, 4, 4], function (a, i) { y += i; });
+               a(y, 3, "Indexes");
+
+               x = [1, 3];
+               x[5] = 'x';
+               y = 0;
+               count = 0;
+               t.call(x, function (a, i) { ++count; y += i; });
+               a(y, 6, "Misssing Indexes");
+               a(count, 3, "Misssing Indexes, count");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/group.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/group.js
new file mode 100644 (file)
index 0000000..32dc8c2
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var count = 0, self;
+
+               self = Object(this);
+               a.deep(t.call(self, function (v, i, scope) {
+                       a(v, this[i], "Value");
+                       a(i, count++, "Index");
+                       a(scope, this, "Scope");
+                       return i;
+               }, self), { 0: [this[0]], 1: [this[1]], 2: [this[2]] });
+       },
+       "": function (t, a) {
+               var r;
+               r = t.call([2, 3, 3, 4, 5, 6, 7, 7, 23, 45, 34, 56],
+                       function (v) {
+                               return v % 2 ? 'odd' : 'even';
+                       });
+               a.deep(r.odd, [3, 3, 5, 7, 7, 23, 45]);
+               a.deep(r.even, [2, 4, 6, 34, 56]);
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/indexes-of.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/indexes-of.js
new file mode 100644 (file)
index 0000000..3364170
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a.deep(t.call(this, this[1]), [1]);
+       },
+       "": function (t, a) {
+               var x = {};
+               a.deep(t.call([1, 3, 5, 3, 5], 6), [], "No result");
+               a.deep(t.call([1, 3, 5, 1, 3, 5, 1], 1), [0, 3, 6], "Some results");
+               a.deep(t.call([], x), [], "Empty array");
+               a.deep(t.call([x, 3, {}, x, 3, 5, x], x), [0, 3, 6], "Search for object");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/intersection.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/intersection.js
new file mode 100644 (file)
index 0000000..b72b2fb
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var toArray = require('../../../array/to-array');
+
+module.exports = {
+       __generic: function (t, a) {
+               a.deep(t.call(this, this, this), toArray(this));
+       },
+       "": function (t, a) {
+               var x = {}, y = {}, p, r;
+               a.deep(t.call([], [2, 3, 4]), [], "Empty #1");
+               a.deep(t.call([2, 3, 4], []), [], "Empty #2");
+               a.deep(t.call([2, 3, x], [y, 5, 7]), [], "Different");
+               p = t.call([3, 5, 'raz', {}, 'dwa', x], [1, 3, 'raz', 'dwa', 'trzy', x, {}],
+                       [3, 'raz', x, 65]);
+               r = [3, 'raz', x];
+               p.sort();
+               r.sort();
+               a.deep(p, r, "Same parts");
+               a.deep(t.call(r, r), r, "Same");
+               a.deep(t.call([1, 2, x, 4, 5, y, 7], [7, y, 5, 4, x, 2, 1]),
+                       [1, 2, x, 4, 5, y, 7], "Long reverse same");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-copy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-copy.js
new file mode 100644 (file)
index 0000000..e7f80e7
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([], []), true, "Empty");
+       a(t.call([], {}), true, "Empty lists");
+       a(t.call([1, x, 'raz'], [1, x, 'raz']), true, "Same");
+       a(t.call([1, x, 'raz'], { 0: 1, 1: x, 2: 'raz', length: 3 }), true,
+                       "Same lists");
+       a(t.call([1, x, 'raz'], [x, 1, 'raz']), false, "Diff order");
+       a(t.call([1, x], [1, x, 'raz']), false, "Diff length #1");
+       a(t.call([1, x, 'raz'], [1, x]), false, "Diff length #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-uniq.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-uniq.js
new file mode 100644 (file)
index 0000000..7349ba3
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([]), true, "Empty");
+       a(t.call({}), true, "Empty lists");
+       a(t.call([1, x, 'raz']), true, "Uniq");
+       a(t.call([1, x, 1, 'raz']), false, "Not Uniq: primitive");
+       a(t.call([1, x, '1', 'raz']), true, "Uniq: primitive");
+       a(t.call([1, x, 1, {}, 'raz']), false, "Not Uniq: Obj");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/implement.js
new file mode 100644 (file)
index 0000000..b0c1aa0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/keys/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/shim.js
new file mode 100644 (file)
index 0000000..a43c04c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: 0, done: false });
+       a.deep(iterator.next(), { value: 1, done: false });
+       a.deep(iterator.next(), { value: 2, done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last-index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last-index.js
new file mode 100644 (file)
index 0000000..a1cac10
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a(t.call([]), null, "Empty");
+       a(t.call([null]), 0, "One value");
+       a(t.call([1, 2, 3]), 2, "Many values");
+       a(t.call(new Array(1000)), null, "Sparse empty");
+       x = [];
+       x[883] = null;
+       x[890] = undefined;
+       a(t.call(x), 890, "Manual sparse, distant value");
+       x = new Array(1000);
+       x[657] = null;
+       x[700] = undefined;
+       a(t.call(x), 700, "Sparse, distant value");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last.js
new file mode 100644 (file)
index 0000000..8d051bc
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       a(t.call(this), this[this.length - 1]);
+};
+
+exports[''] = function (t, a) {
+       var x;
+       a(t.call([]), undefined, "Empty");
+       a(t.call(new Array(234), undefined, "Sparse empty"));
+       x = new Array(2342);
+       x[434] = {};
+       x[450] = {};
+       a(t.call(x), x[450], "Sparse");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/implement.js
new file mode 100644 (file)
index 0000000..cdcbc8d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/map/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/shim.js
new file mode 100644 (file)
index 0000000..bbfefe8
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, Boolean), [true, false, false, true, false, true, false],
+               "Plain array");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, Boolean);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, [true, false, false, true, false, true, false],
+               "Result of subclass");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/remove.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/remove.js
new file mode 100644 (file)
index 0000000..3ebdca2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var y = {}, z = {}, x = [9, z, 5, y, 'foo'];
+       t.call(x, y);
+       a.deep(x, [9, z, 5, 'foo']);
+       t.call(x, {});
+       a.deep(x, [9, z, 5, 'foo'], "Not existing");
+       t.call(x, 5);
+       a.deep(x, [9, z, 'foo'], "Primitive");
+       x = [9, z, 5, y, 'foo'];
+       t.call(x, z, 5, 'foo');
+       a.deep(x, [9, y], "More than one argument");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/separate.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/separate.js
new file mode 100644 (file)
index 0000000..42918b5
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = [], y = {}, z = {};
+       a.deep(t.call(x, y), [], "Empty");
+       a.not(t.call(x), x, "Returns copy");
+       a.deep(t.call([1], y), [1], "One");
+       a.deep(t.call([1, 'raz'], y), [1, y, 'raz'], "One");
+       a.deep(t.call([1, 'raz', x], y), [1, y, 'raz', y, x], "More");
+       x = new Array(1000);
+       x[23] = 2;
+       x[3453] = 'raz';
+       x[500] = z;
+       a.deep(t.call(x, y), [2, y, z, y, 'raz'], "Sparse");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/implement.js
new file mode 100644 (file)
index 0000000..855ae2f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/slice/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/shim.js
new file mode 100644 (file)
index 0000000..f674f34
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, 2, 4), [0, '2d'], "Plain array: result");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, 2, 4);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, [0, '2d'], "Subclass: result");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/some-right.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/some-right.js
new file mode 100644 (file)
index 0000000..900771a
--- /dev/null
@@ -0,0 +1,43 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var count = 0, first, last, x, icount = this.length;
+               t.call(this, function (item, index, col) {
+                       ++count;
+                       if (!first) {
+                               first = item;
+                       }
+                       last = item;
+                       x = col;
+                       a(index, --icount, "Index");
+               });
+               a(count, this.length, "Iterated");
+               a(first, this[this.length - 1], "First is last");
+               a(last, this[0], "Last is first");
+               a.deep(x, Object(this), "Collection as third argument"); //jslint: skip
+       },
+       "": function (t, a) {
+               var x = {}, y, count;
+               t.call([1], function () { y = this; }, x);
+               a(y, x, "Scope");
+               y = 0;
+               t.call([3, 4, 4], function (a, i) { y += i; });
+               a(y, 3, "Indexes");
+
+               x = [1, 3];
+               x[5] = 'x';
+               y = 0;
+               count = 0;
+               a(t.call(x, function (a, i) { ++count; y += i; }), false, "Return");
+               a(y, 6, "Misssing Indexes");
+               a(count, 3, "Misssing Indexes, count");
+
+               count = 0;
+               a(t.call([-2, -3, -4, 2, -5], function (item) {
+                       ++count;
+                       return item > 0;
+               }), true, "Return");
+               a(count, 2, "Break after true is returned");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/implement.js
new file mode 100644 (file)
index 0000000..0d9f461
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/splice/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/shim.js
new file mode 100644 (file)
index 0000000..2c751e6
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, 2, 2, 'bar'), [0, '2d'], "Plain array: result");
+       a.deep(arr, ["foo", undefined, "bar", false, x, null], "Plain array: change");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, 2, 2, 'bar');
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, [0, '2d'], "Subclass: result");
+       a.deep(subArr, ["foo", undefined, "bar", false, x, null], "Subclass: change");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/uniq.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/uniq.js
new file mode 100644 (file)
index 0000000..2f7e6c4
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this).length, 3);
+       },
+       "": function (t, a) {
+               var o, x = {}, y = {}, z = {}, w;
+               o = [1, 2, x, 3, 1, 'raz', '1', y, x, 'trzy', z, 'raz'];
+
+               a.not(w = t.call(o), o, "Returns different object");
+               a.deep(w, [1, 2, x, 3, 'raz', '1', y, 'trzy', z], "Result");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/implement.js
new file mode 100644 (file)
index 0000000..9f40138
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/values/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/shim.js
new file mode 100644 (file)
index 0000000..e590d8f
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: '1', done: false });
+       a.deep(iterator.next(), { value: '2', done: false });
+       a.deep(iterator.next(), { value: '3', done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/__scopes.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/__scopes.js
new file mode 100644 (file)
index 0000000..fc240d3
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.Array = ['1', '2', '3'];
+
+exports.Arguments = (function () {
+       return arguments;
+}('1', '2', '3'));
+
+exports.String = "123";
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_is-extensible.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_is-extensible.js
new file mode 100644 (file)
index 0000000..d387126
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'boolean');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js
new file mode 100644 (file)
index 0000000..29d8699
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var isArray = Array.isArray;
+
+module.exports = function (t, a) {
+       t((t === null) || isArray(t.prototype), true);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy.js
new file mode 100644 (file)
index 0000000..29d8699
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var isArray = Array.isArray;
+
+module.exports = function (t, a) {
+       t((t === null) || isArray(t.prototype), true);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/implement.js
new file mode 100644 (file)
index 0000000..e0db846
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../array/from/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/shim.js
new file mode 100644 (file)
index 0000000..310302a
--- /dev/null
@@ -0,0 +1,60 @@
+// Some tests taken from: https://github.com/mathiasbynens/Array.from/blob/master/tests/tests.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       var o = [1, 2, 3], MyType;
+       a.not(t(o), o, "Array");
+       a.deep(t(o), o, "Array: same content");
+       a.deep(t('12r3v'), ['1', '2', 'r', '3', 'v'], "String");
+       a.deep(t((function () { return arguments; }(3, o, 'raz'))),
+               [3, o, 'raz'], "Arguments");
+       a.deep(t((function () { return arguments; }(3))), [3],
+               "Arguments with one numeric value");
+
+       a.deep(t({ 0: 'raz', 1: 'dwa', length: 2 }), ['raz', 'dwa'], "Other");
+
+       a.deep(t(o, function (val) { return (val + 2) * 10; }, 10), [30, 40, 50],
+               "Mapping");
+
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.deep(t(3), [], "Primitive");
+
+       a(t.length, 1, "Length");
+       a.deep(t({ length: 0 }), [], "No values Array-like");
+       a.deep(t({ length: -1 }), [], "Invalid length Array-like");
+       a.deep(t({ length: -Infinity }), [], "Invalid length Array-like #2");
+       a.throws(function () { t(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.deep(t(false), [], "Boolean");
+       a.deep(t(-Infinity), [], "Inifity");
+       a.deep(t(-0), [], "-0");
+       a.deep(t(+0), [], "+0");
+       a.deep(t(1), [], "1");
+       a.deep(t(+Infinity), [], "+Infinity");
+       a.deep(t({}), [], "Plain object");
+       a.deep(t({ length: 1 }), [undefined], "Sparse array-like");
+       a.deep(t({ '0': 'a', '1': 'b', length: 2 }, function (x) { return x + x; }), ['aa', 'bb'],
+               "Map");
+       a.deep(t({ '0': 'a', '1': 'b', length: 2 }, function (x) { return String(this); }, undefined),
+               ['undefined', 'undefined'], "Map context");
+       a.deep(t({ '0': 'a', '1': 'b', length: 2 }, function (x) { return String(this); }, 'x'),
+               ['x', 'x'], "Map primitive context");
+       a.throws(function () { t({}, 'foo', 'x'); }, TypeError, "Non callable for map");
+
+       a.deep(t.call(null, { length: 1, '0': 'a' }), ['a'], "Null context");
+
+       a(t({ __proto__: { '0': 'abc', length: 1 } })[0], 'abc', "Values on prototype");
+
+       a.throws(function () { t.call(function () { return Object.freeze({}); }, {}); },
+               TypeError, "Contructor producing freezed objects");
+
+       // Ensure no setters are called for the indexes
+       // Ensure no setters are called for the indexes
+       MyType = function () {};
+       Object.defineProperty(MyType.prototype, '0', {
+               set: function (x) { throw new Error('Setter called: ' + x); }
+       });
+       a.deep(t.call(MyType, { '0': 'abc', length: 1 }), { '0': 'abc', length: 1 },
+               "Defined not set");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/generate.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/generate.js
new file mode 100644 (file)
index 0000000..d72e056
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = {};
+       a.deep(t(3), [undefined, undefined, undefined], "Just length");
+       a.deep(t(0, 'x'), [], "No repeat");
+       a.deep(t(1, x, y), [x], "Arguments length larger than repeat number");
+       a.deep(t(3, x), [x, x, x], "Single argument");
+       a.deep(t(5, x, y), [x, y, x, y, x], "Many arguments");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/is-plain-array.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/is-plain-array.js
new file mode 100644 (file)
index 0000000..871a08a
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var SubArray = require('../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr = [1, 2, 3];
+       a(t(arr), true, "Array");
+       a(t(null), false, "Null");
+       a(t(), false, "Undefined");
+       a(t('234'), false, "String");
+       a(t(23), false, "Number");
+       a(t({}), false, "Plain object");
+       a(t({ length: 1, 0: 'raz' }), false, "Array-like");
+       a(t(Object.create(arr)), false, "Array extension");
+       if (!SubArray) return;
+       a(t(new SubArray(23)), false, "Subclass instance");
+       a(t(Array.prototype), false, "Array.prototype");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/implement.js
new file mode 100644 (file)
index 0000000..30d53be
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../array/of/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/shim.js
new file mode 100644 (file)
index 0000000..e697442
--- /dev/null
@@ -0,0 +1,68 @@
+// Most tests taken from https://github.com/mathiasbynens/Array.of/blob/master/tests/tests.js
+// Thanks @mathiasbynens
+
+'use strict';
+
+var defineProperty = Object.defineProperty;
+
+module.exports = function (t, a) {
+       var x = {}, testObject, MyType;
+
+       a.deep(t(), [], "No arguments");
+       a.deep(t(3), [3], "One numeric argument");
+       a.deep(t(3, 'raz', null, x, undefined), [3, 'raz', null, x, undefined],
+               "Many arguments");
+
+       a(t.length, 0, "Length");
+
+       a.deep(t('abc'), ['abc'], "String");
+       a.deep(t(undefined), [undefined], "Undefined");
+       a.deep(t(null), [null], "Null");
+       a.deep(t(false), [false], "Boolean");
+       a.deep(t(-Infinity), [-Infinity], "Infinity");
+       a.deep(t(-0), [-0], "-0");
+       a.deep(t(+0), [+0], "+0");
+       a.deep(t(1), [1], "1");
+       a.deep(t(1, 2, 3), [1, 2, 3], "Numeric args");
+       a.deep(t(+Infinity), [+Infinity], "+Infinity");
+       a.deep(t({ '0': 'a', '1': 'b', '2': 'c', length: 3 }),
+               [{ '0': 'a', '1': 'b', '2': 'c', length: 3 }], "Array like");
+       a.deep(t(undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity),
+               [undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity], "Falsy arguments");
+
+       a.h1("Null context");
+       a.deep(t.call(null, 'abc'), ['abc'], "String");
+       a.deep(t.call(null, undefined), [undefined], "Undefined");
+       a.deep(t.call(null, null), [null], "Null");
+       a.deep(t.call(null, false), [false], "Boolean");
+       a.deep(t.call(null, -Infinity), [-Infinity], "-Infinity");
+       a.deep(t.call(null, -0), [-0], "-0");
+       a.deep(t.call(null, +0), [+0], "+0");
+       a.deep(t.call(null, 1), [1], "1");
+       a.deep(t.call(null, 1, 2, 3), [1, 2, 3], "Numeric");
+       a.deep(t.call(null, +Infinity), [+Infinity], "+Infinity");
+       a.deep(t.call(null, { '0': 'a', '1': 'b', '2': 'c', length: 3 }),
+               [{ '0': 'a', '1': 'b', '2': 'c', length: 3 }], "Array-like");
+       a.deep(t.call(null, undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity),
+               [undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity], "Falsy");
+
+       a.h1("Other constructor context");
+       a.deep(t.call(Object, 1, 2, 3), { '0': 1, '1': 2, '2': 3, length: 3 }, "Many arguments");
+
+       testObject = Object(3);
+       testObject[0] = 1;
+       testObject[1] = 2;
+       testObject[2] = 3;
+       testObject.length = 3;
+       a.deep(t.call(Object, 1, 2, 3), testObject, "Test object");
+       a(t.call(Object).length, 0, "No arguments");
+       a.throws(function () { t.call(function () { return Object.freeze({}); }); }, TypeError,
+               "Frozen instance");
+
+       // Ensure no setters are called for the indexes
+       MyType = function () {};
+       defineProperty(MyType.prototype, '0', {
+               set: function (x) { throw new Error('Setter called: ' + x); }
+       });
+       a.deep(t.call(MyType, 'abc'), { '0': 'abc', length: 1 }, "Define, not set");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/to-array.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/to-array.js
new file mode 100644 (file)
index 0000000..4985b5e
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = [1, 2, 3];
+       a(t(o), o, "Array");
+       a.deep(t('12r3v'), ['1', '2', 'r', '3', 'v'], "String");
+       a.deep(t((function () { return arguments; }(3, o, 'raz'))),
+               [3, o, 'raz'], "Arguments");
+       a.deep(t((function () { return arguments; }(3))), [3],
+               "Arguments with one numeric value");
+
+       a.deep(t({ 0: 'raz', 1: 'dwa', length: 2 }), ['raz', 'dwa'], "Other");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/valid-array.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/valid-array.js
new file mode 100644 (file)
index 0000000..3732192
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.throws(function () { t(0); }, TypeError, "Number");
+       a.throws(function () { t(true); }, TypeError, "Boolean");
+       a.throws(function () { t('raz'); }, TypeError, "String");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a.throws(function () { t({}); }, TypeError, "Object");
+       a.throws(function () { t({ length: 0 }); }, TypeError, "Array-like");
+       a(t(x = []), x, "Array");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean/is-boolean.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean/is-boolean.js
new file mode 100644 (file)
index 0000000..4e6b3cb
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(false), true, "Boolean");
+       a(t(new Boolean(false)), true, "Boolean object");
+       a(t(new Date()), false, "Date");
+       a(t(new String('raz')), false, "String object");
+       a(t({}), false, "Plain object");
+       a(t(/a/), false, "Regular expression");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/copy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/copy.js
new file mode 100644 (file)
index 0000000..767c5e1
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = new Date(), o2;
+
+       o2 = t.call(o);
+       a.not(o, o2, "Different objects");
+       a.ok(o2 instanceof Date, "Instance of Date");
+       a(o.getTime(), o2.getTime(), "Same time");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/days-in-month.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/days-in-month.js
new file mode 100644 (file)
index 0000000..9ddba55
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2001, 0, 1)), 31, "January");
+       a(t.call(new Date(2001, 1, 1)), 28, "February");
+       a(t.call(new Date(2000, 1, 1)), 29, "February (leap)");
+       a(t.call(new Date(2001, 2, 1)), 31, "March");
+       a(t.call(new Date(2001, 3, 1)), 30, "April");
+       a(t.call(new Date(2001, 4, 1)), 31, "May");
+       a(t.call(new Date(2001, 5, 1)), 30, "June");
+       a(t.call(new Date(2001, 6, 1)), 31, "July");
+       a(t.call(new Date(2001, 7, 1)), 31, "August");
+       a(t.call(new Date(2001, 8, 1)), 30, "September");
+       a(t.call(new Date(2001, 9, 1)), 31, "October");
+       a(t.call(new Date(2001, 10, 1)), 30, "November");
+       a(t.call(new Date(2001, 11, 1)), 31, "December");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-day.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-day.js
new file mode 100644 (file)
index 0000000..d4f4a90
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2000, 0, 1, 13, 32, 34, 234)).valueOf(),
+               new Date(2000, 0, 1).valueOf());
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-month.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-month.js
new file mode 100644 (file)
index 0000000..b4a81be
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2000, 0, 15, 13, 32, 34, 234)).valueOf(),
+               new Date(2000, 0, 1).valueOf());
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-year.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-year.js
new file mode 100644 (file)
index 0000000..aae117e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2000, 5, 13, 13, 32, 34, 234)).valueOf(),
+               new Date(2000, 0, 1).valueOf());
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/format.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/format.js
new file mode 100644 (file)
index 0000000..e68e4bf
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var dt = new Date(2011, 2, 3, 3, 5, 5, 32);
+       a(t.call(dt, ' %Y.%y.%m.%d.%H.%M.%S.%L '), ' 2011.11.03.03.03.05.05.032 ');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/is-date.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/is-date.js
new file mode 100644 (file)
index 0000000..109093d
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(true), false, "Boolean");
+       a(t(new Date()), true, "Date");
+       a(t(new String('raz')), false, "String object");
+       a(t({}), false, "Plain object");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/valid-date.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/valid-date.js
new file mode 100644 (file)
index 0000000..98787e4
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var d = new Date();
+       a(t(d), d, "Date");
+       a.throws(function () {
+               t({});
+       }, "Object");
+       a.throws(function () {
+               t({ valueOf: function () { return 20; } });
+       }, "Number object");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#/throw.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#/throw.js
new file mode 100644 (file)
index 0000000..1213cfc
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var e = new Error();
+       try {
+               t.call(e);
+       } catch (e2) {
+               a(e2, e);
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/custom.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/custom.js
new file mode 100644 (file)
index 0000000..d4ff500
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var T = t, err = new T('My Error', 'MY_ERROR', { errno: 123 });
+       a(err instanceof Error, true, "Instance of error");
+       a(err.constructor, Error, "Constructor");
+       a(err.name, 'Error', "Name");
+       a(String(err), 'Error: My Error', "String representation");
+       a(err.code, 'MY_ERROR', "Code");
+       a(err.errno, 123, "Errno");
+       a(typeof err.stack, 'string', "Stack trace");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/is-error.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/is-error.js
new file mode 100644 (file)
index 0000000..f8b5e20
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(), false, "Undefined");
+       a(t(1), false, "Primitive");
+       a(t({}), false, "Objectt");
+       a(t({ toString: function () { return '[object Error]'; } }), false,
+               "Fake error");
+       a(t(new Error()), true, "Error");
+       a(t(new EvalError()), true, "EvalError");
+       a(t(new RangeError()), true, "RangeError");
+       a(t(new ReferenceError()), true, "ReferenceError");
+       a(t(new SyntaxError()), true, "SyntaxError");
+       a(t(new TypeError()), true, "TypeError");
+       a(t(new URIError()), true, "URIError");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/valid-error.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/valid-error.js
new file mode 100644 (file)
index 0000000..e04cdb3
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var e = new Error();
+       a(t(e), e, "Error");
+       a.throws(function () {
+               t({});
+       }, "Other");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/compose.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/compose.js
new file mode 100644 (file)
index 0000000..83de5e8
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var f = function (a, b) { return ['a', arguments.length, a, b]; }
+  , g = function (a) { return ['b', arguments.length].concat(a); }
+  , h = function (a) { return ['c', arguments.length].concat(a); };
+
+module.exports = function (t, a) {
+       a.deep(t.call(h, g, f)(1, 2), ['c', 1, 'b', 1, 'a', 2, 1, 2]);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/copy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/copy.js
new file mode 100644 (file)
index 0000000..7a22e2f
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var foo = 'raz', bar = 'dwa'
+         , fn = function marko(a, b) { return this + a + b + foo + bar; }
+         , result, o = {};
+
+       fn.prototype = o;
+
+       fn.foo = 'raz';
+
+       result = t.call(fn);
+
+       a(result.length, fn.length, "Length");
+       a(result.name, fn.name, "Length");
+       a(result.call('marko', 'el', 'fe'), 'markoelferazdwa', "Body");
+       a(result.prototype, fn.prototype, "Prototype");
+       a(result.foo, fn.foo, "Custom property");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/curry.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/curry.js
new file mode 100644 (file)
index 0000000..18fb038
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var toArray = require('../../../array/to-array')
+
+  , f = function () { return toArray(arguments); };
+
+module.exports = function (t, a) {
+       var x, y = {}, z;
+       a.deep(t.call(f, 0, 1, 2)(3), [], "0 arguments");
+       x = t.call(f, 5, {});
+       a(x.length, 5, "Length #1");
+       z = x(1, 2);
+       a(z.length, 3, "Length #2");
+       z = z(3, 4);
+       a(z.length, 1, "Length #1");
+       a.deep(z(5, 6), [1, 2, 3, 4, 5], "Many arguments");
+       a.deep(x(8, 3)(y, 45)('raz', 6), [8, 3, y, 45, 'raz'], "Many arguments #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/lock.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/lock.js
new file mode 100644 (file)
index 0000000..44a12d7
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(function () {
+               return arguments.length;
+       })(1, 2, 3), 0);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/not.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/not.js
new file mode 100644 (file)
index 0000000..c0f5e9d
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var identity = require('../../../function/identity')
+  , noop     = require('../../../function/noop');
+
+module.exports = function (t, a) {
+       a(t.call(identity)(''), true, "Falsy");
+       a(t.call(noop)(), true, "Undefined");
+       a(t.call(identity)({}), false, "Any object");
+       a(t.call(identity)(true), false, "True");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/partial.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/partial.js
new file mode 100644 (file)
index 0000000..bd00ce7
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toArray = require('../../../array/to-array')
+
+  , f = function () { return toArray(arguments); };
+
+module.exports = function (t, a) {
+       a.deep(t.call(f, 1)(2, 3), [1, 2, 3]);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/spread.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/spread.js
new file mode 100644 (file)
index 0000000..b82dfec
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var f = function (a, b) { return this[a] + this[b]; }
+  , o = { a: 3, b: 4 };
+
+module.exports = function (t, a) {
+       a(t.call(f).call(o, ['a', 'b']), 7);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/to-string-tokens.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/to-string-tokens.js
new file mode 100644 (file)
index 0000000..4c54d30
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t.call(function (a, b) { return this[a] + this[b]; }),
+               { args: 'a, b', body: ' return this[a] + this[b]; ' });
+       a.deep(t.call(function () {}),
+               { args: '', body: '' });
+       a.deep(t.call(function (raz) {}),
+               { args: 'raz', body: '' });
+       a.deep(t.call(function () { Object(); }),
+               { args: '', body: ' Object(); ' });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/_define-length.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/_define-length.js
new file mode 100644 (file)
index 0000000..8f037e8
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var foo = 'raz', bar = 'dwa'
+         , fn = function (a, b) { return this + a + b + foo + bar; }
+         , result;
+
+       result = t(fn, 3);
+       a(result.call('marko', 'el', 'fe'), 'markoelferazdwa', "Content");
+       a(result.length, 3, "Length");
+       a(result.prototype, fn.prototype, "Prototype");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/constant.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/constant.js
new file mode 100644 (file)
index 0000000..fda52aa
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var o = {};
+
+module.exports = function (t, a) {
+       a(t(o)(), o);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/identity.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/identity.js
new file mode 100644 (file)
index 0000000..8013e2e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var o = {};
+
+module.exports = function (t, a) {
+       a(t(o), o);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/invoke.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/invoke.js
new file mode 100644 (file)
index 0000000..fcce4aa
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var constant = require('../../function/constant')
+
+  , o = { b: constant('c') };
+
+module.exports = function (t, a) {
+       a(t('b')(o), 'c');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-arguments.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-arguments.js
new file mode 100644 (file)
index 0000000..f8de881
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var args, dummy;
+       args = (function () { return arguments; }());
+       dummy = { '0': 1, '1': 2 };
+       Object.defineProperty(dummy, 'length', { value: 2 });
+       a(t(args), true, "Arguments");
+       a(t(dummy), false, "Dummy");
+       a(t([]), false, "Array");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-function.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-function.js
new file mode 100644 (file)
index 0000000..83acc42
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var o = { call: Function.prototype.call, apply: Function.prototype.apply };
+
+module.exports = function (t, a) {
+       a(t(function () {}), true, "Function is function");
+       a(t(o), false, "Plain object is not function");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/noop.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/noop.js
new file mode 100644 (file)
index 0000000..4305c6f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t(1, 2, 3), 'undefined');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/pluck.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/pluck.js
new file mode 100644 (file)
index 0000000..5bf9583
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var o = { foo: 'bar' };
+
+module.exports = function (t, a) {
+       a(t('foo')(o), o.foo);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/valid-function.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/valid-function.js
new file mode 100644 (file)
index 0000000..59b1623
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var f = function () {};
+       a(t(f), f, "Function");
+       f = new Function();
+       a(t(f), f, "Function");
+       a.throws(function () {
+               t({});
+       }, "Object");
+       a.throws(function () {
+               t(/re/);
+       }, "RegExp");
+       a.throws(function () {
+               t({ call: function () { return 20; } });
+       }, "Plain object");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/global.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/global.js
new file mode 100644 (file)
index 0000000..1f452ae
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.ok(t && typeof t === 'object');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/for-each.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/for-each.js
new file mode 100644 (file)
index 0000000..0fed8ad
--- /dev/null
@@ -0,0 +1,40 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array')
+
+  , slice = Array.prototype.slice;
+
+module.exports = function (t, a) {
+       var i = 0, x = ['raz', 'dwa', 'trzy'], y = {};
+       t(x, function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Array " + i + "#");
+               a(this, y, "Array: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t((function () { return arguments; }('raz', 'dwa', 'trzy')), function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Arguments" + i + "#");
+               a(this, y, "Arguments: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t({ 0: 'raz', 1: 'dwa', 2: 'trzy', length: 3 }, function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Array-like" + i + "#");
+               a(this, y, "Array-like: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(x = 'foo', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Regular String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       x = ['r', '💩', 'z'];
+       t('r💩z', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Unicode String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(new ArrayIterator(x), function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Iterator " + i + "#");
+               a(this, y, "Iterator: context:  " + (i++) + "#");
+       }, y);
+
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/is.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/is.js
new file mode 100644 (file)
index 0000000..c0d2a43
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (t, a) {
+       var x;
+       a(t([]), true, "Array");
+       a(t(""), true, "String");
+       a(t((function () { return arguments; }())), true, "Arguments");
+       a(t({ length: 0 }), true, "List object");
+       a(t(function () {}), false, "Function");
+       a(t({}), false, "Plain object");
+       a(t(/raz/), false, "Regexp");
+       a(t(), false, "No argument");
+       a(t(null), false, "Null");
+       a(t(undefined), false, "Undefined");
+       x = {};
+       x[iteratorSymbol] = function () {};
+       a(t(x), true, "Iterable");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate-object.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate-object.js
new file mode 100644 (file)
index 0000000..da12529
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a.throws(function () { t(''); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+       x = {};
+       x[iteratorSymbol] = function () {};
+       a(t(x), x, "Iterable");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate.js
new file mode 100644 (file)
index 0000000..bcc2ad3
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a(t(''), '', "''");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+       x = {};
+       x[iteratorSymbol] = function () {};
+       a(t(x), x, "Iterable");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_pack-ieee754.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_pack-ieee754.js
new file mode 100644 (file)
index 0000000..9041431
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t(1.337, 8, 23), [63, 171, 34, 209]);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_unpack-ieee754.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_unpack-ieee754.js
new file mode 100644 (file)
index 0000000..ca30b82
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t([63, 171, 34, 209], 8, 23), 1.3370000123977661);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/implement.js
new file mode 100644 (file)
index 0000000..01fb6d0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/acosh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/shim.js
new file mode 100644 (file)
index 0000000..3d710c7
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-1), NaN, "Negative");
+       a(t(0), NaN, "Zero");
+       a(t(0.5), NaN, "Below 1");
+       a(t(1), 0, "1");
+       a(t(2), 1.3169578969248166, "Other");
+       a(t(Infinity), Infinity, "Infinity");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/implement.js
new file mode 100644 (file)
index 0000000..d1fcece
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/asinh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/shim.js
new file mode 100644 (file)
index 0000000..d9fbe49
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(-2), -1.4436354751788103, "Negative");
+       a(t(2), 1.4436354751788103, "Positive");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/implement.js
new file mode 100644 (file)
index 0000000..cba8fad
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/atanh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/shim.js
new file mode 100644 (file)
index 0000000..a857b49
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-2), NaN, "Less than -1");
+       a(t(2), NaN, "Greater than 1");
+       a(t(-1), -Infinity, "-1");
+       a(t(1), Infinity, "1");
+       a(t(0), 0, "Zero");
+       a(t(0.5), 0.5493061443340549, "Ohter");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/implement.js
new file mode 100644 (file)
index 0000000..374d4b3
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/cbrt/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/shim.js
new file mode 100644 (file)
index 0000000..43ab68b
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(-1), -1, "-1");
+       a(t(1), 1, "1");
+       a(t(2), 1.2599210498948732, "Ohter");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/implement.js
new file mode 100644 (file)
index 0000000..44f8815
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/clz32/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/shim.js
new file mode 100644 (file)
index 0000000..a769b39
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(1), 31, "1");
+       a(t(1000), 22, "1000");
+       a(t(), 32, "No arguments");
+       a(t(Infinity), 32, "Infinity");
+       a(t(-Infinity), 32, "-Infinity");
+       a(t("foo"), 32, "String");
+       a(t(true), 31, "Boolean");
+       a(t(3.5), 30, "Float");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/implement.js
new file mode 100644 (file)
index 0000000..f3c712b
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/cosh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/shim.js
new file mode 100644 (file)
index 0000000..419c123
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 1, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), Infinity, "-Infinity");
+       a(t(1), 1.5430806348152437, "1");
+       a(t(Number.MAX_VALUE), Infinity);
+       a(t(-Number.MAX_VALUE), Infinity);
+       a(t(Number.MIN_VALUE), 1);
+       a(t(-Number.MIN_VALUE), 1);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/implement.js
new file mode 100644 (file)
index 0000000..c212967
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/expm1/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/shim.js
new file mode 100644 (file)
index 0000000..15f0e79
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -1, "-Infinity");
+       a(t(1).toFixed(15), '1.718281828459045', "1");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/implement.js
new file mode 100644 (file)
index 0000000..c909af7
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/fround/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/shim.js
new file mode 100644 (file)
index 0000000..4ef6d4e
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(1.337), 1.3370000123977661, "1");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/implement.js
new file mode 100644 (file)
index 0000000..9946646
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/hypot/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/shim.js
new file mode 100644 (file)
index 0000000..91d950a
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(), 0, "No arguments");
+       a(t(0, -0, 0), 0, "Zeros");
+       a(t(4, NaN, Infinity), Infinity, "Infinity");
+       a(t(4, NaN, -Infinity), Infinity, "Infinity");
+       a(t(4, NaN, 34), NaN, "NaN");
+       a(t(3, 4), 5, "#1");
+       a(t(3, 4, 5), 7.0710678118654755, "#2");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/implement.js
new file mode 100644 (file)
index 0000000..7b2a2a6
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/imul/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/shim.js
new file mode 100644 (file)
index 0000000..a2ca7fe
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(), 0, "No arguments");
+       a(t(0, 0), 0, "Zeros");
+       a(t(2, 4), 8, "#1");
+       a(t(-1, 8), -8, "#2");
+       a(t(0xfffffffe, 5), -10, "#3");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/implement.js
new file mode 100644 (file)
index 0000000..4b3b4a4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/log10/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/shim.js
new file mode 100644 (file)
index 0000000..5fa0d5b
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-0.5), NaN, "Less than 0");
+       a(t(0), -Infinity, "0");
+       a(t(1), 0, "1");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(2), 0.3010299956639812, "Other");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/implement.js
new file mode 100644 (file)
index 0000000..5d269bd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/log1p/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/shim.js
new file mode 100644 (file)
index 0000000..d495ce0
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-1.5), NaN, "Less than -1");
+       a(t(-1), -Infinity, "-1");
+       a(t(0), 0, "0");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(1), 0.6931471805599453, "Other");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/implement.js
new file mode 100644 (file)
index 0000000..92b501a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/log2/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/shim.js
new file mode 100644 (file)
index 0000000..faa9c32
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-0.5), NaN, "Less than 0");
+       a(t(0), -Infinity, "0");
+       a(t(1), 0, "1");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(3).toFixed(15), '1.584962500721156', "Other");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/implement.js
new file mode 100644 (file)
index 0000000..5875c42
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/sign/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/shim.js
new file mode 100644 (file)
index 0000000..b6b89c1
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var is = require('../../../object/is');
+
+module.exports = function (t, a) {
+       a(is(t(0), +0), true, "+0");
+       a(is(t(-0), -0), true, "-0");
+       a(t({}), NaN, true, "NaN");
+       a(t(-234234234), -1, "Negative");
+       a(t(234234234), 1, "Positive");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/implement.js
new file mode 100644 (file)
index 0000000..e52089e
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/sinh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/shim.js
new file mode 100644 (file)
index 0000000..4f63b59
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(1), 1.1752011936438014, "1");
+       a(t(Number.MAX_VALUE), Infinity);
+       a(t(-Number.MAX_VALUE), -Infinity);
+       a(t(Number.MIN_VALUE), 5e-324);
+       a(t(-Number.MIN_VALUE), -5e-324);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/implement.js
new file mode 100644 (file)
index 0000000..a96bf19
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/tanh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/shim.js
new file mode 100644 (file)
index 0000000..2c67aaf
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), 1, "Infinity");
+       a(t(-Infinity), -1, "-Infinity");
+       a(t(1), 0.7615941559557649, "1");
+       a(t(Number.MAX_VALUE), 1);
+       a(t(-Number.MAX_VALUE), -1);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/implement.js
new file mode 100644 (file)
index 0000000..1830e61
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/trunc/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/shim.js
new file mode 100644 (file)
index 0000000..9e5eed7
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var is = require('../../../object/is');
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(is(t(0.234), 0), true, "0");
+       a(is(t(-0.234), -0), true, "-0");
+       a(t(13.7), 13, "Positive #1");
+       a(t(12.3), 12, "Positive #2");
+       a(t(-12.3), -12, "Negative #1");
+       a(t(-14.7), -14, "Negative #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#/pad.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#/pad.js
new file mode 100644 (file)
index 0000000..e020823
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(78, 4), '0078');
+       a(t.call(65.12323, 4, 3), '0065.123', "Precision");
+       a(t.call(65, 4, 3), '0065.000', "Precision integer");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/implement.js
new file mode 100644 (file)
index 0000000..574da75
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/epsilon/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/index.js
new file mode 100644 (file)
index 0000000..c892fd4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/implement.js
new file mode 100644 (file)
index 0000000..b35345f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-finite/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/shim.js
new file mode 100644 (file)
index 0000000..5205d1c
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), true, "Number");
+       a(t('23'), false, "Not numeric");
+       a(t(NaN), false, "NaN");
+       a(t(Infinity), false, "Infinity");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/implement.js
new file mode 100644 (file)
index 0000000..127149c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/shim.js
new file mode 100644 (file)
index 0000000..3f3985c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), true, "Number");
+       a(t(2.34), false, "Float");
+       a(t('23'), false, "Not numeric");
+       a(t(NaN), false, "NaN");
+       a(t(Infinity), false, "Infinity");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/implement.js
new file mode 100644 (file)
index 0000000..2f01d6d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-nan/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/shim.js
new file mode 100644 (file)
index 0000000..425723e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), false, "Number");
+       a(t({}), false, "Not numeric");
+       a(t(NaN), true, "NaN");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-number.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-number.js
new file mode 100644 (file)
index 0000000..2751334
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(0), true, "Zero");
+       a(t(NaN), true, "NaN");
+       a(t(Infinity), true, "Infinity");
+       a(t(12), true, "Number");
+       a(t(false), false, "Boolean");
+       a(t(new Date()), false, "Date");
+       a(t(new Number(2)), true, "Number object");
+       a(t('asdfaf'), false, "String");
+       a(t(''), false, "Empty String");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..33667e2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-safe-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/shim.js
new file mode 100644 (file)
index 0000000..77e0667
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), true, "Number");
+       a(t(2.34), false, "Float");
+       a(t(Math.pow(2, 53)), false, "Too large");
+       a(t(Math.pow(2, 53) - 1), true, "Maximum");
+       a(t('23'), false, "Not numeric");
+       a(t(NaN), false, "NaN");
+       a(t(Infinity), false, "Infinity");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..bef00ca
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/max-safe-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/index.js
new file mode 100644 (file)
index 0000000..c892fd4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..fa44024
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/min-safe-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/index.js
new file mode 100644 (file)
index 0000000..c892fd4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-integer.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-integer.js
new file mode 100644 (file)
index 0000000..ff326ba
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "NaN");
+       a(t(20), 20, "Positive integer");
+       a(t('-20'), -20, "String negative integer");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(15.343), 15, "Float");
+       a(t(-15.343), -15, "Negative float");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-pos-integer.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-pos-integer.js
new file mode 100644 (file)
index 0000000..2f3b4e6
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "NaN");
+       a(t(20), 20, "Positive integer");
+       a(t(-20), 0, "Negative integer");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(15.343), 15, "Float");
+       a(t(-15.343), 0, "Negative float");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-uint32.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-uint32.js
new file mode 100644 (file)
index 0000000..00d05bd
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "Not numeric");
+       a(t(-4), 4294967292, "Negative");
+       a(t(133432), 133432, "Positive");
+       a(t(8589934592), 0, "Greater than maximum");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/_iterate.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/_iterate.js
new file mode 100644 (file)
index 0000000..179afed
--- /dev/null
@@ -0,0 +1,30 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { raz: 1, dwa: 2, trzy: 3 }
+         , o2 = {}, o3 = {}, arr, i = -1;
+
+       t = t('forEach');
+       t(o, function (value, name, self, index) {
+               o2[name] = value;
+               a(index, ++i, "Index");
+               a(self, o, "Self");
+               a(this, o3, "Scope");
+       }, o3);
+       a.deep(o2, o);
+
+       arr = [];
+       o2 = {};
+       i = -1;
+       t(o, function (value, name, self, index) {
+               arr.push(value);
+               o2[name] = value;
+               a(index, ++i, "Index");
+               a(self, o, "Self");
+               a(this, o3, "Scope");
+       }, o3, function (a, b) {
+               return o[b] - o[a];
+       });
+       a.deep(o2, o, "Sort by Values: Content");
+       a.deep(arr, [3, 2, 1], "Sort by Values: Order");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/implement.js
new file mode 100644 (file)
index 0000000..4006559
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../object/assign/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/shim.js
new file mode 100644 (file)
index 0000000..9afe5f6
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o1 = { a: 1, b: 2 }
+         , o2 = { b: 3, c: 4 };
+
+       a(t(o1, o2), o1, "Returns self");
+       a.deep(o1, { a: 1, b: 3, c: 4 }, "Single: content");
+
+       a.deep(t({}, o1, o2), { a: 1, b: 3, c: 4 }, "Multi argument");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/clear.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/clear.js
new file mode 100644 (file)
index 0000000..bfc08cc
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var isEmpty = require('../../object/is-empty');
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t(x), x, "Empty: Returns same object");
+       a(isEmpty(x), true, "Empty: Not changed");
+       x.foo = 'raz';
+       x.bar = 'dwa';
+       a(t(x), x, "Same object");
+       a(isEmpty(x), true, "Emptied");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compact.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compact.js
new file mode 100644 (file)
index 0000000..9c9064c
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = {}, z;
+       z = t(x);
+       a.not(z, x, "Returns different object");
+       a.deep(z, {}, "Empty on empty");
+
+       x = { foo: 'bar', a: 0, b: false, c: '', d: '0', e: null, bar: y,
+               elo: undefined };
+       z = t(x);
+       a.deep(z, { foo: 'bar', a: 0, b: false, c: '', d: '0', bar: y },
+               "Cleared null values");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compare.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compare.js
new file mode 100644 (file)
index 0000000..cb94241
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var d = new Date();
+
+       a.ok(t(12, 3) > 0, "Numbers");
+       a.ok(t(2, 13) < 0, "Numbers #2");
+       a.ok(t("aaa", "aa") > 0, "Strings");
+       a.ok(t("aa", "ab") < 0, "Strings #2");
+       a(t("aa", "aa"), 0, "Strings same");
+       a(t(d, new Date(d.getTime())), 0, "Same date");
+       a.ok(t(d, new Date(d.getTime() + 1)) < 0, "Different date");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy-deep.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy-deep.js
new file mode 100644 (file)
index 0000000..a4023bc
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var stringify = JSON.stringify;
+
+module.exports = function (t, a) {
+       var o = { 1: 'raz', 2: 'dwa', 3: 'trzy' }
+         , no = t(o);
+
+       a.not(no, o, "Return different object");
+       a(stringify(no), stringify(o), "Match properties and values");
+
+       o = { foo: 'bar', raz: { dwa: 'dwa',
+               trzy: { cztery: 'pięć', 'sześć': 'siedem' }, osiem: {},
+               'dziewięć': function () { } }, 'dziesięć': 10 };
+       o.raz.rec = o;
+
+       no = t(o);
+       a.not(o.raz, no.raz, "Deep");
+       a.not(o.raz.trzy, no.raz.trzy, "Deep #2");
+       a(stringify(o.raz.trzy), stringify(no.raz.trzy), "Deep content");
+       a(no.raz.rec, no, "Recursive");
+       a.not(o.raz.osiem, no.raz.osiem, "Empty object");
+       a(o.raz['dziewięć'], no.raz['dziewięć'], "Function");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy.js
new file mode 100644 (file)
index 0000000..2f222ef
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var stringify = JSON.stringify;
+
+module.exports = function (t, a) {
+       var o = { 1: 'raz', 2: 'dwa', 3: 'trzy' }
+         , no = t(o);
+
+       a.not(no, o, "Return different object");
+       a(stringify(no), stringify(o), "Match properties and values");
+
+       o = { foo: 'bar', raz: { dwa: 'dwa',
+               trzy: { cztery: 'pięć', 'sześć': 'siedem' }, osiem: {},
+               'dziewięć': function () { } }, 'dziesięć': 10 };
+       o.raz.rec = o;
+
+       no = t(o);
+       a(o.raz, no.raz, "Shallow");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/count.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/count.js
new file mode 100644 (file)
index 0000000..494f4f1
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "Empty");
+       a(t({ raz: 1, dwa: null, trzy: undefined, cztery: 0 }), 4,
+               "Some properties");
+       a(t(Object.defineProperties({}, {
+               raz: { value: 'raz' },
+               dwa: { value: 'dwa', enumerable: true }
+       })), 1, "Some properties hidden");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/create.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/create.js
new file mode 100644 (file)
index 0000000..8b7be21
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var setPrototypeOf = require('../../object/set-prototype-of')
+
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+       var x = {}, obj;
+
+       a(getPrototypeOf(t(x)), x, "Normal object");
+       a(getPrototypeOf(t(null)),
+               (setPrototypeOf && setPrototypeOf.nullPolyfill) || null, "Null");
+
+       a.h1("Properties");
+       a.h2("Normal object");
+       a(getPrototypeOf(obj = t(x, { foo: { value: 'bar' } })), x, "Prototype");
+       a(obj.foo, 'bar', "Property");
+       a.h2("Null");
+       a(getPrototypeOf(obj = t(null, { foo: { value: 'bar2' } })),
+               (setPrototypeOf && setPrototypeOf.nullPolyfill) || null, "Prototype");
+       a(obj.foo, 'bar2', "Property");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/eq.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/eq.js
new file mode 100644 (file)
index 0000000..02b3f00
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = {};
+       a(t(o, {}), false, "Different objects");
+       a(t(o, o), true, "Same objects");
+       a(t('1', '1'), true, "Same primitive");
+       a(t('1', 1), false, "Different primitive types");
+       a(t(NaN, NaN), true, "NaN");
+       a(t(0, 0), true, "0,0");
+       a(t(0, -0), true, "0,-0");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/every.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/every.js
new file mode 100644 (file)
index 0000000..07d5bbb
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+       var o2 = {};
+       t(o, function (value, name) {
+               o2[name] = value;
+               return true;
+       });
+       a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+       a(t(o, function () {
+               return true;
+       }), true, "Succeeds");
+
+       a(t(o, function () {
+               return false;
+       }), false, "Fails");
+
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/filter.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/filter.js
new file mode 100644 (file)
index 0000000..7307da8
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ 1: 1, 2: 2, 3: 3, 4: 4 },
+               function (value) { return Boolean(value % 2); }), { 1: 1, 3: 3 });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/first-key.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/first-key.js
new file mode 100644 (file)
index 0000000..8169cd2
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = Object.create(null);
+       a(t(x), null, "Normal: Empty");
+       a(t(y), null, "Null extension: Empty");
+       x.foo = 'raz';
+       x.bar = 343;
+       a(['foo', 'bar'].indexOf(t(x)) !== -1, true, "Normal");
+       y.elo = 'foo';
+       y.mar = 'wew';
+       a(['elo', 'mar'].indexOf(t(y)) !== -1, true, "Null extension");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/flatten.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/flatten.js
new file mode 100644 (file)
index 0000000..ca342ea
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ a: { aa: 1, ab: 2 }, b: { ba: 3, bb: 4 } }),
+               { aa: 1, ab: 2, ba: 3, bb: 4 });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/for-each.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/for-each.js
new file mode 100644 (file)
index 0000000..8690d1e
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { raz: 1, dwa: 2, trzy: 3 }
+         , o2 = {};
+       a(t(o, function (value, name) {
+               o2[name] = value;
+       }), undefined, "Return");
+       a.deep(o2, o);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/get-property-names.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/get-property-names.js
new file mode 100644 (file)
index 0000000..b91c3dd
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { first: 1, second: 4 }, r1, r2;
+       o = Object.create(o, {
+               third: { value: null }
+       });
+       o.first = 2;
+       o = Object.create(o);
+       o.fourth = 3;
+
+       r1 = t(o);
+       r1.sort();
+       r2 = ['first', 'second', 'third', 'fourth']
+               .concat(Object.getOwnPropertyNames(Object.prototype));
+       r2.sort();
+       a.deep(r1, r2);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-array-like.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-array-like.js
new file mode 100644 (file)
index 0000000..6295973
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t([]), true, "Array");
+       a(t(""), true, "String");
+       a(t((function () { return arguments; }())), true, "Arguments");
+       a(t({ length: 0 }), true, "List object");
+       a(t(function () {}), false, "Function");
+       a(t({}), false, "Plain object");
+       a(t(/raz/), false, "Regexp");
+       a(t(), false, "No argument");
+       a(t(null), false, "Null");
+       a(t(undefined), false, "Undefined");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-callable.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-callable.js
new file mode 100644 (file)
index 0000000..625e221
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(function () {}), true, "Function");
+       a(t({}), false, "Object");
+       a(t(), false, "Undefined");
+       a(t(null), false, "Null");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy-deep.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy-deep.js
new file mode 100644 (file)
index 0000000..4f14cbb
--- /dev/null
@@ -0,0 +1,46 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x, y;
+
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 3 }), true, "Same");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Different property value");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2 }), false,
+               "Property only in source");
+       a(t({ 1: 1, 2: 2 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Property only in target");
+
+       a(t("raz", "dwa"), false, "String: diff");
+       a(t("raz", "raz"), true, "String: same");
+       a(t("32", 32), false, "String & Number");
+
+       a(t([1, 'raz', true], [1, 'raz', true]), true, "Array: same");
+       a(t([1, 'raz', undefined], [1, 'raz']), false, "Array: diff");
+       a(t(['foo'], ['one']), false, "Array: One value comparision");
+
+       x = { foo: { bar: { mar: {} } } };
+       y = { foo: { bar: { mar: {} } } };
+       a(t(x, y), true, "Deep");
+
+       a(t({ foo: { bar: { mar: 'foo' } } }, { foo: { bar: { mar: {} } } }),
+               false, "Deep: false");
+
+       x = { foo: { bar: { mar: {} } } };
+       x.rec = { foo: x };
+
+       y = { foo: { bar: { mar: {} } } };
+       y.rec = { foo: x };
+
+       a(t(x, y), true, "Object: Infinite Recursion: Same #1");
+
+       x.rec.foo = y;
+       a(t(x, y), true, "Object: Infinite Recursion: Same #2");
+
+       x.rec.foo = x;
+       y.rec.foo = y;
+       a(t(x, y), true, "Object: Infinite Recursion: Same #3");
+
+       y.foo.bar.mar = 'raz';
+       a(t(x, y), false, "Object: Infinite Recursion: Diff");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy.js
new file mode 100644 (file)
index 0000000..394e2ed
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 3 }), true, "Same");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Different property value");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2 }), false,
+               "Property only in source");
+       a(t({ 1: 1, 2: 2 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Property only in target");
+
+       a(t("raz", "dwa"), false, "String: diff");
+       a(t("raz", "raz"), true, "String: same");
+       a(t("32", 32), false, "String & Number");
+
+       a(t([1, 'raz', true], [1, 'raz', true]), true, "Array: same");
+       a(t([1, 'raz', undefined], [1, 'raz']), false, "Array: diff");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-empty.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-empty.js
new file mode 100644 (file)
index 0000000..b560c2c
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), true, "Empty");
+       a(t({ 1: 1 }), false, "Not empty");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-object.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-object.js
new file mode 100644 (file)
index 0000000..72c8aa6
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(true), false, "Boolean");
+       a(t(null), false, "Null");
+       a(t(new Date()), true, "Date");
+       a(t(new String('raz')), true, "String object");
+       a(t({}), true, "Plain object");
+       a(t(/a/), true, "Regular expression");
+       a(t(function () {}), true, "Function");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-plain-object.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-plain-object.js
new file mode 100644 (file)
index 0000000..e988829
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), true, "Empty {} is plain object");
+       a(t({ a: true }), true, "{} with property is plain object");
+       a(t({ prototype: 1, constructor: 2, __proto__:  3 }), true,
+               "{} with any property keys is plain object");
+       a(t(null), false, "Null is not plain object");
+       a(t('string'), false, "Primitive is not plain object");
+       a(t(function () {}), false, "Function is not plain object");
+       a(t(Object.create({})), false,
+               "Object whose prototype is not Object.prototype is not plain object");
+       a(t(Object.create(Object.prototype)), true,
+               "Object whose prototype is Object.prototype is plain object");
+       a(t(Object.create(null)), true,
+               "Object whose prototype is null is plain object");
+       a(t(Object.prototype), false, "Object.prototype");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is.js
new file mode 100644 (file)
index 0000000..4f8948c
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = {};
+       a(t(o, {}), false, "Different objects");
+       a(t(o, o), true, "Same objects");
+       a(t('1', '1'), true, "Same primitive");
+       a(t('1', 1), false, "Different primitive types");
+       a(t(NaN, NaN), true, "NaN");
+       a(t(0, 0), true, "0,0");
+       a(t(0, -0), false, "0,-0");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/key-of.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/key-of.js
new file mode 100644 (file)
index 0000000..a9225a0
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = {}
+         , o = { foo: 'bar', raz: x, trzy: 'cztery', five: '6' };
+
+       a(t(o, 'bar'), 'foo', "First property");
+       a(t(o, 6), null, "Primitive that's not there");
+       a(t(o, x), 'raz', "Object");
+       a(t(o, y), null, "Object that's not there");
+       a(t(o, '6'), 'five', "Last property");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/implement.js
new file mode 100644 (file)
index 0000000..179e1e5
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../object/keys/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/shim.js
new file mode 100644 (file)
index 0000000..ed29eeb
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ foo: 'bar' }), ['foo'], "Object");
+       a.deep(t('raz'), ['0', '1', '2'], "Primitive");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Undefined");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map-keys.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map-keys.js
new file mode 100644 (file)
index 0000000..be84825
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ 1: 1, 2: 2, 3: 3 }, function (key, value) {
+               return 'x' + (key + value);
+       }), { x11: 1, x22: 2, x33: 3 });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map.js
new file mode 100644 (file)
index 0000000..f9cc09c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var obj = { 1: 1, 2: 2, 3: 3 };
+       a.deep(t(obj, function (value, key, context) {
+               a(context, obj, "Context argument");
+               return (value + 1) + key;
+       }), { 1: '21', 2: '32', 3: '43' });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin-prototypes.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin-prototypes.js
new file mode 100644 (file)
index 0000000..d1c727a
--- /dev/null
@@ -0,0 +1,67 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o, o1, o2, x, y = {}, z = {};
+       o = { inherited: true, visible: 23 };
+       o1 = Object.create(o);
+       o1.visible = z;
+       o1.nonremovable = 'raz';
+       Object.defineProperty(o1, 'hidden', { value: 'hidden' });
+
+       o2 = Object.defineProperties({}, { nonremovable: { value: y } });
+       o2.other = 'other';
+
+       try { t(o2, o1); } catch (ignore) {}
+
+       a(o2.visible, z, "Enumerable");
+       a(o1.hidden, 'hidden', "Not Enumerable");
+       a(o2.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(o2.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(o2.inherited, true, "Extend deep");
+
+       a(o2.nonremovable, y, "Do not overwrite non configurable");
+       a(o2.other, 'other', "Own kept");
+
+       x = {};
+       t(x, o2);
+       try { t(x, o1); } catch (ignore) {}
+
+       a(x.visible, z, "Enumerable");
+       a(x.hidden, 'hidden', "Not Enumerable");
+       a(x.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(x.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(x.inherited, true, "Extend deep");
+
+       a(x.nonremovable, y, "Ignored non configurable");
+       a(x.other, 'other', "Other");
+
+       x.visible = 3;
+       a(x.visible, 3, "Writable is writable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               x.hidden = 3;
+       }, "Not writable is not writable");
+
+       x = {};
+       t(x, o1);
+       delete x.visible;
+       a.ok(!x.hasOwnProperty('visible'), "Configurable is configurable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               delete x.hidden;
+       }, "Not configurable is not configurable");
+
+       x = Object.defineProperty({}, 'foo',
+               { configurable: false, writable: true, enumerable: false, value: 'bar' });
+
+       try { t(x, { foo: 'lorem' }); } catch (ignore) {}
+       a(x.foo, 'bar', "Writable, not enumerable");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin.js
new file mode 100644 (file)
index 0000000..866005b
--- /dev/null
@@ -0,0 +1,69 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o, o1, o2, x, y = {}, z = {};
+       o = { inherited: true };
+       o1 = Object.create(o);
+       o1.visible = z;
+       o1.nonremovable = 'raz';
+       Object.defineProperty(o1, 'hidden', { value: 'hidden' });
+
+       o2 = Object.defineProperties({}, { nonremovable: { value: y } });
+       o2.other = 'other';
+
+       try { t(o2, o1); } catch (ignore) {}
+
+       a(o2.visible, z, "Enumerable");
+       a(o1.hidden, 'hidden', "Not Enumerable");
+       a(o2.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(o2.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(o2.hasOwnProperty('inherited'), false, "Extend only own");
+       a(o2.inherited, undefined, "Extend ony own: value");
+
+       a(o2.nonremovable, y, "Do not overwrite non configurable");
+       a(o2.other, 'other', "Own kept");
+
+       x = {};
+       t(x, o2);
+       try { t(x, o1); } catch (ignore) {}
+
+       a(x.visible, z, "Enumerable");
+       a(x.hidden, 'hidden', "Not Enumerable");
+       a(x.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(x.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(x.hasOwnProperty('inherited'), false, "Extend only own");
+       a(x.inherited, undefined, "Extend ony own: value");
+
+       a(x.nonremovable, y, "Ignored non configurable");
+       a(x.other, 'other', "Other");
+
+       x.visible = 3;
+       a(x.visible, 3, "Writable is writable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               x.hidden = 3;
+       }, "Not writable is not writable");
+
+       x = {};
+       t(x, o1);
+       delete x.visible;
+       a.ok(!x.hasOwnProperty('visible'), "Configurable is configurable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               delete x.hidden;
+       }, "Not configurable is not configurable");
+
+       x = Object.defineProperty({}, 'foo',
+               { configurable: false, writable: true, enumerable: false, value: 'bar' });
+
+       try { t(x, { foo: 'lorem' }); } catch (ignore) {}
+       a(x.foo, 'bar', "Writable, not enumerable");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/normalize-options.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/normalize-options.js
new file mode 100644 (file)
index 0000000..0d2d4da
--- /dev/null
@@ -0,0 +1,32 @@
+'use strict';
+
+var create = Object.create, defineProperty = Object.defineProperty;
+
+module.exports = function (t, a) {
+       var x = { foo: 'raz', bar: 'dwa' }, y;
+       y = t(x);
+       a.not(y, x, "Returns copy");
+       a.deep(y, x, "Plain");
+
+       x = { raz: 'one', dwa: 'two' };
+       defineProperty(x, 'get', {
+               configurable: true,
+               enumerable: true,
+               get: function () { return this.dwa; }
+       });
+       x = create(x);
+       x.trzy = 'three';
+       x.cztery = 'four';
+       x = create(x);
+       x.dwa = 'two!';
+       x.trzy = 'three!';
+       x.piec = 'five';
+       x.szesc = 'six';
+
+       a.deep(t(x), { raz: 'one', dwa: 'two!', trzy: 'three!', cztery: 'four',
+               piec: 'five', szesc: 'six', get: 'two!' }, "Deep object");
+
+       a.deep(t({ marko: 'raz', raz: 'foo' }, x, { szesc: 'elo', siedem: 'bibg' }),
+               { marko: 'raz', raz: 'one', dwa: 'two!', trzy: 'three!', cztery: 'four',
+                       piec: 'five', szesc: 'elo', siedem: 'bibg', get: 'two!' }, "Multiple options");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/primitive-set.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/primitive-set.js
new file mode 100644 (file)
index 0000000..839857e
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var getPropertyNames = require('../../object/get-property-names')
+  , isPlainObject    = require('../../object/is-plain-object');
+
+module.exports = function (t, a) {
+       var x = t();
+       a(isPlainObject(x), true, "Plain object");
+       a.deep(getPropertyNames(x), [], "No properties");
+       x.foo = 'bar';
+       a.deep(getPropertyNames(x), ['foo'], "Extensible");
+
+       a.deep(t('raz', 'dwa', 3), { raz: true, dwa: true, 3: true },
+               "Arguments handling");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/safe-traverse.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/safe-traverse.js
new file mode 100644 (file)
index 0000000..d30cdef
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var obj = { foo: { bar: { lorem: 12  } } };
+       a(t(obj), obj, "No props");
+       a(t(obj, 'foo'), obj.foo, "One");
+       a(t(obj, 'raz'), undefined, "One: Fail");
+       a(t(obj, 'foo', 'bar'), obj.foo.bar, "Two");
+       a(t(obj, 'dsd', 'raz'), undefined, "Two: Fail #1");
+       a(t(obj, 'foo', 'raz'), undefined, "Two: Fail #2");
+       a(t(obj, 'foo', 'bar', 'lorem'), obj.foo.bar.lorem, "Three");
+       a(t(obj, 'dsd', 'raz', 'fef'), undefined, "Three: Fail #1");
+       a(t(obj, 'foo', 'raz', 'asdf'), undefined, "Three: Fail #2");
+       a(t(obj, 'foo', 'bar', 'asd'), undefined, "Three: Fail #3");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/serialize.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/serialize.js
new file mode 100644 (file)
index 0000000..43eed6a
--- /dev/null
@@ -0,0 +1,25 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var fn = function (raz, dwa) { return raz + dwa; };
+       a(t(), 'undefined', "Undefined");
+       a(t(null), 'null', "Null");
+       a(t(null), 'null', "Null");
+       a(t('raz'), '"raz"', "String");
+       a(t('raz"ddwa\ntrzy'), '"raz\\"ddwa\\ntrzy"', "String with escape");
+       a(t(false), 'false', "Booelean");
+       a(t(fn), String(fn), "Function");
+
+       a(t(/raz-dwa/g), '/raz-dwa/g', "RegExp");
+       a(t(new Date(1234567)), 'new Date(1234567)', "Date");
+       a(t([]), '[]', "Empty array");
+       a(t([undefined, false, null, 'raz"ddwa\ntrzy', fn, /raz/g, new Date(1234567), ['foo']]),
+               '[undefined,false,null,"raz\\"ddwa\\ntrzy",' + String(fn) +
+               ',/raz/g,new Date(1234567),["foo"]]', "Rich Array");
+       a(t({}), '{}', "Empty object");
+       a(t({ raz: undefined, dwa: false, trzy: null, cztery: 'raz"ddwa\ntrzy', piec: fn, szesc: /raz/g,
+               siedem: new Date(1234567), osiem: ['foo', 32], dziewiec: { foo: 'bar', dwa: 343 } }),
+               '{"raz":undefined,"dwa":false,"trzy":null,"cztery":"raz\\"ddwa\\ntrzy","piec":' + String(fn) +
+               ',"szesc":/raz/g,"siedem":new Date(1234567),"osiem":["foo",32],' +
+               '"dziewiec":{"foo":"bar","dwa":343}}', "Rich object");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/implement.js
new file mode 100644 (file)
index 0000000..30b2ac4
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var create        = require('../../../object/create')
+  , isImplemented = require('../../../object/set-prototype-of/is-implemented');
+
+module.exports = function (a) { a(isImplemented(create), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/index.js
new file mode 100644 (file)
index 0000000..aec2605
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var create = require('../../../object/create')
+
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+       var x = {}, y = {};
+
+       if (t === null) return;
+       a(t(x, y), x, "Return self object");
+       a(getPrototypeOf(x), y, "Object");
+       a.throws(function () { t(x); }, TypeError, "Undefined");
+       a.throws(function () { t('foo'); }, TypeError, "Primitive");
+       a(getPrototypeOf(t(x, null)), t.nullPolyfill || null, "Null");
+       x = create(null);
+       a.h1("Change null prototype");
+       a(t(x, y), x, "Result");
+       a(getPrototypeOf(x), y, "Prototype");
+       a.h1("Set null prototype");
+       a(t(y, null), y, "Result");
+       a(getPrototypeOf(y), t.nullPolyfill || null, "Prototype");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/shim.js
new file mode 100644 (file)
index 0000000..aec2605
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var create = require('../../../object/create')
+
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+       var x = {}, y = {};
+
+       if (t === null) return;
+       a(t(x, y), x, "Return self object");
+       a(getPrototypeOf(x), y, "Object");
+       a.throws(function () { t(x); }, TypeError, "Undefined");
+       a.throws(function () { t('foo'); }, TypeError, "Primitive");
+       a(getPrototypeOf(t(x, null)), t.nullPolyfill || null, "Null");
+       x = create(null);
+       a.h1("Change null prototype");
+       a(t(x, y), x, "Result");
+       a(getPrototypeOf(x), y, "Prototype");
+       a.h1("Set null prototype");
+       a(t(y, null), y, "Result");
+       a(getPrototypeOf(y), t.nullPolyfill || null, "Prototype");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/some.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/some.js
new file mode 100644 (file)
index 0000000..490431e
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+       var o2 = {}, i = 0;
+       t(o, function (value, name) {
+               o2[name] = value;
+               return false;
+       });
+       a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+       a(t(o, function () {
+               ++i;
+               return true;
+       }), true, "Succeeds");
+       a(i, 1, "Stops iteration after condition is met");
+
+       a(t(o, function () {
+               return false;
+       }), false, "Fails");
+
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/to-array.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/to-array.js
new file mode 100644 (file)
index 0000000..1f4beef
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { 1: 1, 2: 2, 3: 3 }, o1 = {}
+         , o2 = t(o, function (value, name, self) {
+               a(self, o, "Self");
+               a(this, o1, "Scope");
+               return value + Number(name);
+       }, o1);
+       a.deep(o2, [2, 4, 6]);
+
+       t(o).sort().forEach(function (item) {
+               a.deep(item, [item[0], o[item[0]]], "Default");
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/unserialize.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/unserialize.js
new file mode 100644 (file)
index 0000000..405eef1
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var fn = function (raz, dwa) { return raz + dwa; };
+       a(t('undefined'), undefined, "Undefined");
+       a(t('null'), null, "Null");
+       a(t('"raz"'), 'raz', "String");
+       a(t('"raz\\"ddwa\\ntrzy"'), 'raz"ddwa\ntrzy', "String with escape");
+       a(t('false'), false, "Booelean");
+       a(String(t(String(fn))), String(fn), "Function");
+
+       a.deep(t('/raz-dwa/g'), /raz-dwa/g, "RegExp");
+       a.deep(t('new Date(1234567)'), new Date(1234567), "Date");
+       a.deep(t('[]'), [], "Empty array");
+       a.deep(t('[undefined,false,null,"raz\\"ddwa\\ntrzy",/raz/g,new Date(1234567),["foo"]]'),
+               [undefined, false, null, 'raz"ddwa\ntrzy', /raz/g, new Date(1234567), ['foo']], "Rich Array");
+       a.deep(t('{}'), {}, "Empty object");
+       a.deep(t('{"raz":undefined,"dwa":false,"trzy":null,"cztery":"raz\\"ddwa\\ntrzy",' +
+               '"szesc":/raz/g,"siedem":new Date(1234567),"osiem":["foo",32],' +
+               '"dziewiec":{"foo":"bar","dwa":343}}'),
+               { raz: undefined, dwa: false, trzy: null, cztery: 'raz"ddwa\ntrzy', szesc: /raz/g,
+                       siedem: new Date(1234567), osiem: ['foo', 32], dziewiec: { foo: 'bar', dwa: 343 } },
+               "Rich object");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-callable.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-callable.js
new file mode 100644 (file)
index 0000000..b40540b
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var f = function () {};
+       a(t(f), f, "Function");
+       a.throws(function () {
+               t({});
+       }, "Not Function");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-object.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-object.js
new file mode 100644 (file)
index 0000000..eaa8e7b
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a.throws(function () { t(''); }, TypeError, "''");
+       a(t(x = {}), x, "Object");
+       a(t(x = function () {}), x, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+       a(t(x = new Date()), x, "Date");
+
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-value.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-value.js
new file mode 100644 (file)
index 0000000..f1eeafa
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var numIsNaN = require('../../number/is-nan');
+
+module.exports = function (t, a) {
+       var x;
+       a(t(0), 0, "0");
+       a(t(false), false, "false");
+       a(t(''), '', "''");
+       a(numIsNaN(t(NaN)), true, "NaN");
+       a(t(x = {}), x, "{}");
+
+       a.throws(function () {
+               t();
+       }, "Undefined");
+       a.throws(function () {
+               t(null);
+       }, "null");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like-object.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like-object.js
new file mode 100644 (file)
index 0000000..2f3e31b
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a.throws(function () { t(''); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like.js
new file mode 100644 (file)
index 0000000..53bd112
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a(t(''), '', "''");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable-value.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable-value.js
new file mode 100644 (file)
index 0000000..ae9bd17
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a(t(0), "0");
+       a(t(false), "false");
+       a(t(''), "");
+       a(t({}), String({}), "Object");
+       a(t(x = function () {}), String(x), "Function");
+       a(t(x = new String('raz')), String(x), "String object"); //jslint: ignore
+       a(t(x = new Date()), String(x), "Date");
+
+       a.throws(function () { t(Object.create(null)); }, TypeError, "Null prototype object");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable.js
new file mode 100644 (file)
index 0000000..4a46bb5
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a(t(), 'undefined', "Undefined");
+       a(t(null), 'null', "Null");
+       a(t(0), "0");
+       a(t(false), "false");
+       a(t(''), "");
+       a(t({}), String({}), "Object");
+       a(t(x = function () {}), String(x), "Function");
+       a(t(x = new String('raz')), String(x), "String object"); //jslint: ignore
+       a(t(x = new Date()), String(x), "Date");
+
+       a.throws(function () { t(Object.create(null)); }, TypeError, "Null prototype object");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/index.js
new file mode 100644 (file)
index 0000000..ca2bd65
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexTest = require('tad/lib/utils/index-test')
+
+  , path = require('path').resolve(__dirname, '../../../reg-exp/#');
+
+module.exports = function (t, a, d) {
+       indexTest(indexTest.readDir(path).aside(function (data) {
+               delete data.sticky;
+               delete data.unicode;
+       }))(t, a, d);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-sticky.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-sticky.js
new file mode 100644 (file)
index 0000000..e154ac2
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var re;
+       a(t.call(/raz/), false, "Normal");
+       a(t.call(/raz/g), false, "Global");
+       try { re = new RegExp('raz', 'y'); } catch (ignore) {}
+       if (!re) return;
+       a(t.call(re), true, "Sticky");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-unicode.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-unicode.js
new file mode 100644 (file)
index 0000000..2ffb9e8
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var re;
+       a(t.call(/raz/), false, "Normal");
+       a(t.call(/raz/g), false, "Global");
+       try { re = new RegExp('raz', 'u'); } catch (ignore) {}
+       if (!re) return;
+       a(t.call(re), true, "Unicode");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/implement.js
new file mode 100644 (file)
index 0000000..89825a4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/match/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/shim.js
new file mode 100644 (file)
index 0000000..5249139
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var result = ['foo'];
+       result.index = 0;
+       result.input = 'foobar';
+       a.deep(t.call(/foo/, 'foobar'), result);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/implement.js
new file mode 100644 (file)
index 0000000..c32b23a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/replace/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/shim.js
new file mode 100644 (file)
index 0000000..2b378fd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(/foo/, 'foobar', 'mar'), 'marbar');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/implement.js
new file mode 100644 (file)
index 0000000..ff1b808
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/search/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/shim.js
new file mode 100644 (file)
index 0000000..596bcdb
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(/foo/, 'barfoo'), 3);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/implement.js
new file mode 100644 (file)
index 0000000..1cee441
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/split/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/shim.js
new file mode 100644 (file)
index 0000000..6a95cd0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t.call(/\|/, 'bar|foo'), ['bar', 'foo']);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js
new file mode 100644 (file)
index 0000000..d94e7b9
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/sticky/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js
new file mode 100644 (file)
index 0000000..9b1aa0f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/unicode/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/escape.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/escape.js
new file mode 100644 (file)
index 0000000..5b00f67
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var str = "(?:^te|er)s{2}t\\[raz]+$";
+       a(RegExp('^' + t(str) + '$').test(str), true);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/is-reg-exp.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/is-reg-exp.js
new file mode 100644 (file)
index 0000000..785ca28
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(true), false, "Boolean");
+       a(t(new Date()), false, "Date");
+       a(t(new String('raz')), false, "String object");
+       a(t({}), false, "Plain object");
+       a(t(/a/), true, "Regular expression");
+       a(t(new RegExp('a')), true, "Regular expression via constructor");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js
new file mode 100644 (file)
index 0000000..cd12cf1
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var r = /raz/;
+       a(t(r), r, "Direct");
+       r = new RegExp('foo');
+       a(t(r), r, "Constructor");
+       a.throws(function () {
+               t({});
+       }, "Object");
+       a.throws(function () {
+               t(function () {});
+       }, "Function");
+       a.throws(function () {
+               t({ exec: function () { return 20; } });
+       }, "Plain object");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..09bf336
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/@@iterator/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..3b0e0b7
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var it = t.call('r💩z');
+       a.deep(it.next(), { done: false, value: 'r' }, "#1");
+       a.deep(it.next(), { done: false, value: '💩' }, "#2");
+       a.deep(it.next(), { done: false, value: 'z' }, "#3");
+       a.deep(it.next(), { done: true, value: undefined }, "End");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/at.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/at.js
new file mode 100644 (file)
index 0000000..2447a9f
--- /dev/null
@@ -0,0 +1,97 @@
+// See tests at https://github.com/mathiasbynens/String.prototype.at
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.length, 1, "Length");
+
+       a.h1("BMP");
+       a(t.call('abc\uD834\uDF06def', -Infinity), '', "-Infinity");
+       a(t.call('abc\uD834\uDF06def', -1), '', "-1");
+       a(t.call('abc\uD834\uDF06def', -0), 'a', "-0");
+       a(t.call('abc\uD834\uDF06def', +0), 'a', "+0");
+       a(t.call('abc\uD834\uDF06def', 1), 'b', "1");
+       a(t.call('abc\uD834\uDF06def', 3), '\uD834\uDF06', "3");
+       a(t.call('abc\uD834\uDF06def', 4), '\uDF06', "4");
+       a(t.call('abc\uD834\uDF06def', 5), 'd', "5");
+       a(t.call('abc\uD834\uDF06def', 42), '', "42");
+       a(t.call('abc\uD834\uDF06def', +Infinity), '', "+Infinity");
+       a(t.call('abc\uD834\uDF06def', null), 'a', "null");
+       a(t.call('abc\uD834\uDF06def', undefined), 'a', "undefined");
+       a(t.call('abc\uD834\uDF06def'), 'a', "No argument");
+       a(t.call('abc\uD834\uDF06def', false), 'a', "false");
+       a(t.call('abc\uD834\uDF06def', NaN), 'a', "NaN");
+       a(t.call('abc\uD834\uDF06def', ''), 'a', "Empty string");
+       a(t.call('abc\uD834\uDF06def', '_'), 'a', "_");
+       a(t.call('abc\uD834\uDF06def', '1'), 'b', "'1'");
+       a(t.call('abc\uD834\uDF06def', []), 'a', "[]");
+       a(t.call('abc\uD834\uDF06def', {}), 'a', "{}");
+       a(t.call('abc\uD834\uDF06def', -0.9), 'a', "-0.9");
+       a(t.call('abc\uD834\uDF06def', 1.9), 'b', "1.9");
+       a(t.call('abc\uD834\uDF06def', 7.9), 'f', "7.9");
+       a(t.call('abc\uD834\uDF06def', Math.pow(2, 32)), '', "Big number");
+
+       a.h1("Astral symbol");
+       a(t.call('\uD834\uDF06def', -Infinity), '', "-Infinity");
+       a(t.call('\uD834\uDF06def', -1), '', "-1");
+       a(t.call('\uD834\uDF06def', -0), '\uD834\uDF06', "-0");
+       a(t.call('\uD834\uDF06def', +0), '\uD834\uDF06', "+0");
+       a(t.call('\uD834\uDF06def', 1), '\uDF06', "1");
+       a(t.call('\uD834\uDF06def', 2), 'd', "2");
+       a(t.call('\uD834\uDF06def', 3), 'e', "3");
+       a(t.call('\uD834\uDF06def', 4), 'f', "4");
+       a(t.call('\uD834\uDF06def', 42), '', "42");
+       a(t.call('\uD834\uDF06def', +Infinity), '', "+Infinity");
+       a(t.call('\uD834\uDF06def', null), '\uD834\uDF06', "null");
+       a(t.call('\uD834\uDF06def', undefined), '\uD834\uDF06', "undefined");
+       a(t.call('\uD834\uDF06def'), '\uD834\uDF06', "No arguments");
+       a(t.call('\uD834\uDF06def', false), '\uD834\uDF06', "false");
+       a(t.call('\uD834\uDF06def', NaN), '\uD834\uDF06', "NaN");
+       a(t.call('\uD834\uDF06def', ''), '\uD834\uDF06', "Empty string");
+       a(t.call('\uD834\uDF06def', '_'), '\uD834\uDF06', "_");
+       a(t.call('\uD834\uDF06def', '1'), '\uDF06', "'1'");
+
+       a.h1("Lone high surrogates");
+       a(t.call('\uD834abc', -Infinity), '', "-Infinity");
+       a(t.call('\uD834abc', -1), '',  "-1");
+       a(t.call('\uD834abc', -0), '\uD834', "-0");
+       a(t.call('\uD834abc', +0), '\uD834', "+0");
+       a(t.call('\uD834abc', 1), 'a', "1");
+       a(t.call('\uD834abc', 42), '', "42");
+       a(t.call('\uD834abc', +Infinity), '', "Infinity");
+       a(t.call('\uD834abc', null), '\uD834', "null");
+       a(t.call('\uD834abc', undefined), '\uD834', "undefined");
+       a(t.call('\uD834abc'), '\uD834', "No arguments");
+       a(t.call('\uD834abc', false), '\uD834', "false");
+       a(t.call('\uD834abc', NaN), '\uD834', "NaN");
+       a(t.call('\uD834abc', ''), '\uD834', "Empty string");
+       a(t.call('\uD834abc', '_'), '\uD834', "_");
+       a(t.call('\uD834abc', '1'), 'a', "'a'");
+
+       a.h1("Lone low surrogates");
+       a(t.call('\uDF06abc', -Infinity), '', "-Infinity");
+       a(t.call('\uDF06abc', -1), '', "-1");
+       a(t.call('\uDF06abc', -0), '\uDF06', "-0");
+       a(t.call('\uDF06abc', +0), '\uDF06', "+0");
+       a(t.call('\uDF06abc', 1), 'a', "1");
+       a(t.call('\uDF06abc', 42), '', "42");
+       a(t.call('\uDF06abc', +Infinity), '', "+Infinity");
+       a(t.call('\uDF06abc', null), '\uDF06', "null");
+       a(t.call('\uDF06abc', undefined), '\uDF06', "undefined");
+       a(t.call('\uDF06abc'), '\uDF06', "No arguments");
+       a(t.call('\uDF06abc', false), '\uDF06', "false");
+       a(t.call('\uDF06abc', NaN), '\uDF06', "NaN");
+       a(t.call('\uDF06abc', ''), '\uDF06', "Empty string");
+       a(t.call('\uDF06abc', '_'), '\uDF06', "_");
+       a(t.call('\uDF06abc', '1'), 'a', "'1'");
+
+       a.h1("Context");
+       a.throws(function () { t.call(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t.call(undefined, 4); }, TypeError,
+               "Undefined + argument");
+       a.throws(function () { t.call(null); }, TypeError, "Null");
+       a.throws(function () { t.call(null, 4); }, TypeError, "Null + argument");
+       a(t.call(42, 0), '4', "Number #1");
+       a(t.call(42, 1), '2', "Number #2");
+       a(t.call({ toString: function () { return 'abc'; } }, 2), 'c', "Object");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/camel-to-hyphen.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/camel-to-hyphen.js
new file mode 100644 (file)
index 0000000..8b47a81
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('razDwaTRzy4yFoo45My'), 'raz-dwa-t-rzy4y-foo45-my');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/capitalize.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/capitalize.js
new file mode 100644 (file)
index 0000000..fa11ff8
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('raz'), 'Raz', "Word");
+       a(t.call('BLA'), 'BLA', "Uppercase");
+       a(t.call(''), '', "Empty");
+       a(t.call('a'), 'A', "One letter");
+       a(t.call('this is a test'), 'This is a test', "Sentence");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/case-insensitive-compare.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/case-insensitive-compare.js
new file mode 100644 (file)
index 0000000..01a90c3
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call("AA", "aa"), 0, "Same");
+       a.ok(t.call("Amber", "zebra") < 0, "Less");
+       a.ok(t.call("Zebra", "amber") > 0, "Greater");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/implement.js
new file mode 100644 (file)
index 0000000..5e33cd7
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var isImplemented =
+       require('../../../../string/#/code-point-at/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/shim.js
new file mode 100644 (file)
index 0000000..0df4751
--- /dev/null
@@ -0,0 +1,81 @@
+// Taken from: https://github.com/mathiasbynens/String.prototype.codePointAt
+//             /blob/master/tests/tests.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.length, 1, "Length");
+
+       // String that starts with a BMP symbol
+       a(t.call('abc\uD834\uDF06def', ''), 0x61);
+       a(t.call('abc\uD834\uDF06def', '_'), 0x61);
+       a(t.call('abc\uD834\uDF06def'), 0x61);
+       a(t.call('abc\uD834\uDF06def', -Infinity), undefined);
+       a(t.call('abc\uD834\uDF06def', -1), undefined);
+       a(t.call('abc\uD834\uDF06def', -0), 0x61);
+       a(t.call('abc\uD834\uDF06def', 0), 0x61);
+       a(t.call('abc\uD834\uDF06def', 3), 0x1D306);
+       a(t.call('abc\uD834\uDF06def', 4), 0xDF06);
+       a(t.call('abc\uD834\uDF06def', 5), 0x64);
+       a(t.call('abc\uD834\uDF06def', 42), undefined);
+       a(t.call('abc\uD834\uDF06def', Infinity), undefined);
+       a(t.call('abc\uD834\uDF06def', Infinity), undefined);
+       a(t.call('abc\uD834\uDF06def', NaN), 0x61);
+       a(t.call('abc\uD834\uDF06def', false), 0x61);
+       a(t.call('abc\uD834\uDF06def', null), 0x61);
+       a(t.call('abc\uD834\uDF06def', undefined), 0x61);
+
+       // String that starts with an astral symbol
+       a(t.call('\uD834\uDF06def', ''), 0x1D306);
+       a(t.call('\uD834\uDF06def', '1'), 0xDF06);
+       a(t.call('\uD834\uDF06def', '_'), 0x1D306);
+       a(t.call('\uD834\uDF06def'), 0x1D306);
+       a(t.call('\uD834\uDF06def', -1), undefined);
+       a(t.call('\uD834\uDF06def', -0), 0x1D306);
+       a(t.call('\uD834\uDF06def', 0), 0x1D306);
+       a(t.call('\uD834\uDF06def', 1), 0xDF06);
+       a(t.call('\uD834\uDF06def', 42), undefined);
+       a(t.call('\uD834\uDF06def', false), 0x1D306);
+       a(t.call('\uD834\uDF06def', null), 0x1D306);
+       a(t.call('\uD834\uDF06def', undefined), 0x1D306);
+
+       // Lone high surrogates
+       a(t.call('\uD834abc', ''), 0xD834);
+       a(t.call('\uD834abc', '_'), 0xD834);
+       a(t.call('\uD834abc'), 0xD834);
+       a(t.call('\uD834abc', -1), undefined);
+       a(t.call('\uD834abc', -0), 0xD834);
+       a(t.call('\uD834abc', 0), 0xD834);
+       a(t.call('\uD834abc', false), 0xD834);
+       a(t.call('\uD834abc', NaN), 0xD834);
+       a(t.call('\uD834abc', null), 0xD834);
+       a(t.call('\uD834abc', undefined), 0xD834);
+
+       // Lone low surrogates
+       a(t.call('\uDF06abc', ''), 0xDF06);
+       a(t.call('\uDF06abc', '_'), 0xDF06);
+       a(t.call('\uDF06abc'), 0xDF06);
+       a(t.call('\uDF06abc', -1), undefined);
+       a(t.call('\uDF06abc', -0), 0xDF06);
+       a(t.call('\uDF06abc', 0), 0xDF06);
+       a(t.call('\uDF06abc', false), 0xDF06);
+       a(t.call('\uDF06abc', NaN), 0xDF06);
+       a(t.call('\uDF06abc', null), 0xDF06);
+       a(t.call('\uDF06abc', undefined), 0xDF06);
+
+       a.throws(function () { t.call(undefined); }, TypeError);
+       a.throws(function () { t.call(undefined, 4); }, TypeError);
+       a.throws(function () { t.call(null); }, TypeError);
+       a.throws(function () { t.call(null, 4); }, TypeError);
+       a(t.call(42, 0), 0x34);
+       a(t.call(42, 1), 0x32);
+       a(t.call({ toString: function () { return 'abc'; } }, 2), 0x63);
+
+       a.throws(function () { t.apply(undefined); }, TypeError);
+       a.throws(function () { t.apply(undefined, [4]); }, TypeError);
+       a.throws(function () { t.apply(null); }, TypeError);
+       a.throws(function () { t.apply(null, [4]); }, TypeError);
+       a(t.apply(42, [0]), 0x34);
+       a(t.apply(42, [1]), 0x32);
+       a(t.apply({ toString: function () { return 'abc'; } }, [2]), 0x63);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/implement.js
new file mode 100644 (file)
index 0000000..220f50d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/contains/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/shim.js
new file mode 100644 (file)
index 0000000..a0ea4db
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('raz', ''), true, "Empty");
+       a(t.call('', ''), true, "Both Empty");
+       a(t.call('raz', 'raz'), true, "Same");
+       a(t.call('razdwa', 'raz'), true, "Starts with");
+       a(t.call('razdwa', 'dwa'), true, "Ends with");
+       a(t.call('razdwa', 'zdw'), true, "In middle");
+       a(t.call('', 'raz'), false, "Something in empty");
+       a(t.call('az', 'raz'), false, "Longer");
+       a(t.call('azasdfasdf', 'azff'), false, "Not found");
+       a(t.call('razdwa', 'raz', 1), false, "Position");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/implement.js
new file mode 100644 (file)
index 0000000..93bd2dd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/ends-with/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/shim.js
new file mode 100644 (file)
index 0000000..e4b93c4
--- /dev/null
@@ -0,0 +1,16 @@
+// In some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog/
+// string/string_test.html
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('abc', ''), true, "Empty needle");
+       a(t.call('abcd', 'cd'), true, "Ends with needle");
+       a(t.call('abcd', 'abcd'), true, "Needle equals haystack");
+       a(t.call('abcd', 'ab'), false, "Doesn't end with needle");
+       a(t.call('abc', 'defg'), false, "Length trick");
+       a(t.call('razdwa', 'zd', 3), false, "Position: false");
+       a(t.call('razdwa', 'zd', 4), true, "Position: true");
+       a(t.call('razdwa', 'zd', 5), false, "Position: false #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/hyphen-to-camel.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/hyphen-to-camel.js
new file mode 100644 (file)
index 0000000..bd7ded4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('raz-dwa-t-rzy-4y-rtr4-tiu-45-pa'), 'razDwaTRzy4yRtr4Tiu45Pa');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/indent.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/indent.js
new file mode 100644 (file)
index 0000000..eb92b36
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('ra\nzz', ''), 'ra\nzz', "Empty");
+       a(t.call('ra\nzz', '\t', 3), '\t\t\tra\n\t\t\tzz', "String repeat");
+       a(t.call('ra\nzz\nsss\nfff\n', '\t'), '\tra\n\tzz\n\tsss\n\tfff\n',
+               "Multi-line");
+       a(t.call('ra\n\nzz\n', '\t'), '\tra\n\n\tzz\n', "Don't touch empty lines");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/last.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/last.js
new file mode 100644 (file)
index 0000000..ad36a21
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(''), null, "Null");
+       a(t.call('abcdef'), 'f', "String");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/_data.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/_data.js
new file mode 100644 (file)
index 0000000..c741add
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t[0], 'object'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/implement.js
new file mode 100644 (file)
index 0000000..4886c9b
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/normalize/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/shim.js
new file mode 100644 (file)
index 0000000..28e27f5
--- /dev/null
@@ -0,0 +1,13 @@
+// Taken from: https://github.com/walling/unorm/blob/master/test/es6-shim.js
+
+'use strict';
+
+var str = 'äiti';
+
+module.exports = function (t, a) {
+       a(t.call(str), "\u00e4iti");
+       a(t.call(str, "NFC"), "\u00e4iti");
+       a(t.call(str, "NFD"), "a\u0308iti");
+       a(t.call(str, "NFKC"), "\u00e4iti");
+       a(t.call(str, "NFKD"), "a\u0308iti");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/pad.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/pad.js
new file mode 100644 (file)
index 0000000..28c3fca
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var partial = require('../../../function/#/partial');
+
+module.exports = {
+       Left: function (t, a) {
+               t = partial.call(t, 'x', 5);
+
+               a(t.call('yy'), 'xxxyy');
+               a(t.call(''), 'xxxxx', "Empty string");
+
+               a(t.call('yyyyy'), 'yyyyy', 'Equal length');
+               a(t.call('yyyyyyy'), 'yyyyyyy', 'Longer');
+       },
+       Right: function (t, a) {
+               t = partial.call(t, 'x', -5);
+
+               a(t.call('yy'), 'yyxxx');
+               a(t.call(''), 'xxxxx', "Empty string");
+
+               a(t.call('yyyyy'), 'yyyyy', 'Equal length');
+               a(t.call('yyyyyyy'), 'yyyyyyy', 'Longer');
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace-all.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace-all.js
new file mode 100644 (file)
index 0000000..a425c87
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('razdwatrzy', 'dwa', 'olera'), 'razoleratrzy', "Basic");
+       a(t.call('razdwatrzy', 'dwa', 'ole$&a'), 'razole$&atrzy', "Inserts");
+       a(t.call('razdwa', 'ola', 'sdfs'), 'razdwa', "No replace");
+
+       a(t.call('$raz$$dwa$trzy$', '$', '&&'), '&&raz&&&&dwa&&trzy&&', "Multi");
+       a(t.call('$raz$$dwa$$$$trzy$', '$$', '&'), '$raz&dwa&&trzy$',
+               "Multi many chars");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace.js
new file mode 100644 (file)
index 0000000..54522ed
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('razdwatrzy', 'dwa', 'olera'), 'razoleratrzy', "Basic");
+       a(t.call('razdwatrzy', 'dwa', 'ole$&a'), 'razole$&atrzy', "Inserts");
+       a(t.call('razdwa', 'ola', 'sdfs'), 'razdwa', "No replace");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/implement.js
new file mode 100644 (file)
index 0000000..7ff65a8
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/repeat/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/shim.js
new file mode 100644 (file)
index 0000000..7e0d077
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('a', 0), '', "Empty");
+       a(t.call('a', 1), 'a', "1");
+       a(t.call('\t', 5), '\t\t\t\t\t', "Whitespace");
+       a(t.call('raz', 3), 'razrazraz', "Many chars");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/implement.js
new file mode 100644 (file)
index 0000000..fc8490f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/starts-with/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/shim.js
new file mode 100644 (file)
index 0000000..e0e123b
--- /dev/null
@@ -0,0 +1,14 @@
+// Inspired and in some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog
+// /string/string_test.html
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('abc', ''), true, "Empty needle");
+       a(t.call('abcd', 'ab'), true, "Starts with needle");
+       a(t.call('abcd', 'abcd'), true, "Needle equals haystack");
+       a(t.call('abcd', 'bcde', 1), false, "Needle larger than haystack");
+       a(!t.call('abcd', 'cd'), true, "Doesn't start with needle");
+       a(t.call('abcd', 'bc', 1), true, "Position");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/format-method.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/format-method.js
new file mode 100644 (file)
index 0000000..bb5561e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       t = t({ a: 'A', aa: 'B', ab: 'C', b: 'D',
+               c: function () { return ++this.a; } });
+       a(t.call({ a: 0 }, ' %a%aab%abb%b\\%aa%ab%c%c '), ' ABbCbD%aaC12 ');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/implement.js
new file mode 100644 (file)
index 0000000..0aceb97
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../string/from-code-point/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/shim.js
new file mode 100644 (file)
index 0000000..88cda3d
--- /dev/null
@@ -0,0 +1,47 @@
+// Taken from: https://github.com/mathiasbynens/String.fromCodePoint/blob/master
+//             /tests/tests.js
+
+'use strict';
+
+var pow = Math.pow;
+
+module.exports = function (t, a) {
+       var counter, result;
+
+       a(t.length, 1, "Length");
+       a(String.propertyIsEnumerable('fromCodePoint'), false, "Not enumerable");
+
+       a(t(''), '\0', "Empty string");
+       a(t(), '', "No arguments");
+       a(t(-0), '\0', "-0");
+       a(t(0), '\0', "0");
+       a(t(0x1D306), '\uD834\uDF06', "Unicode");
+       a(t(0x1D306, 0x61, 0x1D307), '\uD834\uDF06a\uD834\uDF07', "Complex unicode");
+       a(t(0x61, 0x62, 0x1D307), 'ab\uD834\uDF07', "Complex");
+       a(t(false), '\0', "false");
+       a(t(null), '\0', "null");
+
+       a.throws(function () { t('_'); }, RangeError, "_");
+       a.throws(function () { t(Infinity); }, RangeError, "Infinity");
+       a.throws(function () { t(-Infinity); }, RangeError, "-Infinity");
+       a.throws(function () { t(-1); }, RangeError, "-1");
+       a.throws(function () { t(0x10FFFF + 1); }, RangeError, "Range error #1");
+       a.throws(function () { t(3.14); }, RangeError, "Range error #2");
+       a.throws(function () { t(3e-2); }, RangeError, "Range error #3");
+       a.throws(function () { t(-Infinity); }, RangeError, "Range error #4");
+       a.throws(function () { t(+Infinity); }, RangeError, "Range error #5");
+       a.throws(function () { t(NaN); }, RangeError, "Range error #6");
+       a.throws(function () { t(undefined); }, RangeError, "Range error #7");
+       a.throws(function () { t({}); }, RangeError, "Range error #8");
+       a.throws(function () { t(/re/); }, RangeError, "Range error #9");
+
+       counter = pow(2, 15) * 3 / 2;
+       result = [];
+       while (--counter >= 0) result.push(0); // one code unit per symbol
+       t.apply(null, result); // must not throw
+
+       counter = pow(2, 15) * 3 / 2;
+       result = [];
+       while (--counter >= 0) result.push(0xFFFF + 1); // two code units per symbol
+       t.apply(null, result); // must not throw
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/is-string.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/is-string.js
new file mode 100644 (file)
index 0000000..32f5958
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(null), false, "Null");
+       a(t(''), true, "Empty string");
+       a(t(12), false, "Number");
+       a(t(false), false, "Boolean");
+       a(t(new Date()), false, "Date");
+       a(t(new String('raz')), true, "String object");
+       a(t('asdfaf'), true, "String");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/random-uniq.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/random-uniq.js
new file mode 100644 (file)
index 0000000..6791ac2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var isValidFormat = RegExp.prototype.test.bind(/^[a-z0-9]+$/);
+
+module.exports = function (t, a) {
+       a(typeof t(), 'string');
+       a.ok(t().length > 7);
+       a.not(t(), t());
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/implement.js
new file mode 100644 (file)
index 0000000..59416de
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../string/raw/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/shim.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/shim.js
new file mode 100644 (file)
index 0000000..025ed78
--- /dev/null
@@ -0,0 +1,15 @@
+// Partially taken from:
+// https://github.com/paulmillr/es6-shim/blob/master/test/string.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       var callSite = [];
+
+       callSite.raw = ["The total is ", " ($", " with tax)"];
+       a(t(callSite, '{total}', '{total * 1.01}'),
+               'The total is {total} (${total * 1.01} with tax)');
+
+       callSite.raw = [];
+       a(t(callSite, '{total}', '{total * 1.01}'), '');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js
new file mode 100644 (file)
index 0000000..6dc1543
--- /dev/null
@@ -0,0 +1,40 @@
+'use strict';
+
+var setPrototypeOf = require('es5-ext/object/set-prototype-of')
+  , d              = require('d')
+  , Iterator       = require('../')
+  , validIterable  = require('../valid-iterable')
+
+  , push = Array.prototype.push
+  , defineProperties = Object.defineProperties
+  , IteratorChain;
+
+IteratorChain = function (iterators) {
+       defineProperties(this, {
+               __iterators__: d('', iterators),
+               __current__: d('w', iterators.shift())
+       });
+};
+if (setPrototypeOf) setPrototypeOf(IteratorChain, Iterator);
+
+IteratorChain.prototype = Object.create(Iterator.prototype, {
+       constructor: d(IteratorChain),
+       next: d(function () {
+               var result;
+               if (!this.__current__) return { done: true, value: undefined };
+               result = this.__current__.next();
+               while (result.done) {
+                       this.__current__ = this.__iterators__.shift();
+                       if (!this.__current__) return { done: true, value: undefined };
+                       result = this.__current__.next();
+               }
+               return result;
+       })
+});
+
+module.exports = function () {
+       var iterators = [this];
+       push.apply(iterators, arguments);
+       iterators.forEach(validIterable);
+       return new IteratorChain(iterators);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.lint b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.lint
new file mode 100644 (file)
index 0000000..cf54d81
--- /dev/null
@@ -0,0 +1,11 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.npmignore b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.travis.yml b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.travis.yml
new file mode 100644 (file)
index 0000000..02c277c
--- /dev/null
@@ -0,0 +1,11 @@
+language: node_js
+node_js:
+  - 0.8
+  - 0.10
+  - 0.11
+
+notifications:
+  email:
+    - medikoo+es6-iterator@medikoo.com
+
+script: "npm test && npm run lint"
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/CHANGES b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/CHANGES
new file mode 100644 (file)
index 0000000..a2d1ec7
--- /dev/null
@@ -0,0 +1,28 @@
+v0.1.3  --  2015.02.02
+* Update dependencies
+* Fix spelling of LICENSE
+
+v0.1.2  --  2014.11.19
+* Optimise internal `_next` to not verify internal's list length at all times
+  (#2 thanks @RReverser)
+* Fix documentation examples
+* Configure lint scripts
+
+v0.1.1  --  2014.04.29
+* Fix es6-symbol dependency version
+
+v0.1.0  --  2014.04.29
+* Assure strictly npm hosted dependencies
+* Remove sparse arrays dedicated handling (as per spec)
+* Add: isIterable, validIterable and chain (method)
+* Remove toArray, it's addressed by Array.from (polyfil can be found in es5-ext/array/from)
+* Add break possiblity to 'forOf' via 'doBreak' function argument
+* Provide dedicated iterator for array-likes (ArrayIterator) and for strings (StringIterator)
+* Provide @@toStringTag symbol
+* When available rely on @@iterator symbol
+* Remove 32bit integer maximum list length restriction
+* Improve Iterator internals
+* Update to use latest version of dependencies
+
+v0.0.0  --  2013.10.12
+Initial (dev version)
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/LICENSE b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/LICENSE
new file mode 100644 (file)
index 0000000..04724a3
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.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/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/README.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/README.md
new file mode 100644 (file)
index 0000000..288373d
--- /dev/null
@@ -0,0 +1,148 @@
+# es6-iterator
+## ECMAScript 6 Iterator interface
+
+### Installation
+
+       $ npm install es6-iterator
+       
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+## API
+
+### Constructors
+
+#### Iterator(list) _(es6-iterator)_
+
+Abstract Iterator interface. Meant for extensions and not to be used on its own.
+
+Accepts any _list_ object (technically object with numeric _length_ property).
+
+_Mind it doesn't iterate strings properly, for that use dedicated [StringIterator](#string-iterator)_
+
+```javascript
+var Iterator = require('es6-iterator')
+var iterator = new Iterator([1, 2, 3]);
+
+iterator.next(); // { value: 1, done: false }
+iterator.next(); // { value: 2, done: false }
+iterator.next(); // { value: 3, done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+
+#### ArrayIterator(arrayLike[, kind]) _(es6-iterator/array)_
+
+Dedicated for arrays and array-likes. Supports three iteration kinds:
+* __value__ _(default)_ - Iterates values
+* __key__ - Iterates indexes
+* __key+value__ - Iterates keys and indexes, each iteration value is in _[key, value]_ form.
+
+
+```javascript
+var ArrayIterator = require('es6-iterator/array')
+var iterator = new ArrayIterator([1, 2, 3], 'key+value');
+
+iterator.next(); // { value: [0, 1], done: false }
+iterator.next(); // { value: [1, 2], done: false }
+iterator.next(); // { value: [2, 3], done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+May also be used for _arguments_ objects:
+
+```javascript
+(function () {
+  var iterator = new ArrayIterator(arguments);
+
+  iterator.next(); // { value: 1, done: false }
+  iterator.next(); // { value: 2, done: false }
+  iterator.next(); // { value: 3, done: false }
+  iterator.next(); // { value: undefined, done: true }
+}(1, 2, 3));
+```
+
+#### StringIterator(str) _(es6-iterator/string)_
+
+Assures proper iteration over unicode symbols.  
+See: http://mathiasbynens.be/notes/javascript-unicode
+
+```javascript
+var StringIterator = require('es6-iterator/string');
+var iterator = new StringIterator('f🙈o🙉o🙊');
+
+iterator.next(); // { value: 'f', done: false }
+iterator.next(); // { value: '🙈', done: false }
+iterator.next(); // { value: 'o', done: false }
+iterator.next(); // { value: '🙉', done: false }
+iterator.next(); // { value: 'o', done: false }
+iterator.next(); // { value: '🙊', done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+### Function utilities
+
+#### forOf(iterable, callback[, thisArg]) _(es6-iterator/for-of)_
+
+Polyfill for ECMAScript 6 [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) statement.
+
+```
+var forOf = require('es6-iterator/for-of');
+var result = [];
+
+forOf('🙈🙉🙊', function (monkey) { result.push(monkey); });
+console.log(result); // ['🙈', '🙉', '🙊'];
+```
+
+Optionally you can break iteration at any point:
+
+```javascript
+var result = [];
+
+forOf([1,2,3,4]', function (val, doBreak) {
+  result.push(monkey);
+  if (val >= 3) doBreak();
+});
+console.log(result); // [1, 2, 3];
+```
+
+#### get(obj) _(es6-iterator/get)_
+
+Return iterator for any iterable object.
+
+```javascript
+var getIterator = require('es6-iterator/get');
+var iterator = get([1,2,3]);
+
+iterator.next(); // { value: 1, done: false }
+iterator.next(); // { value: 2, done: false }
+iterator.next(); // { value: 3, done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+#### isIterable(obj) _(es6-iterator/is-iterable)_
+
+Whether _obj_ is iterable
+
+```javascript
+var isIterable = require('es6-iterator/is-iterable');
+
+isIterable(null); // false
+isIterable(true); // false
+isIterable('str'); // true
+isIterable(['a', 'r', 'r']); // true
+isIterable(new ArrayIterator([])); // true
+```
+
+#### validIterable(obj) _(es6-iterator/valid-iterable)_
+
+If _obj_ is an iterable it is returned. Otherwise _TypeError_ is thrown.
+
+### Method extensions
+
+#### iterator.chain(iterator1[, …iteratorn]) _(es6-iterator/#/chain)_
+
+Chain multiple iterators into one.
+
+### Tests [![Build Status](https://travis-ci.org/medikoo/es6-iterator.png)](https://travis-ci.org/medikoo/es6-iterator)
+
+       $ npm test
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js
new file mode 100644 (file)
index 0000000..885ad0a
--- /dev/null
@@ -0,0 +1,30 @@
+'use strict';
+
+var setPrototypeOf = require('es5-ext/object/set-prototype-of')
+  , contains       = require('es5-ext/string/#/contains')
+  , d              = require('d')
+  , Iterator       = require('./')
+
+  , defineProperty = Object.defineProperty
+  , ArrayIterator;
+
+ArrayIterator = module.exports = function (arr, kind) {
+       if (!(this instanceof ArrayIterator)) return new ArrayIterator(arr, kind);
+       Iterator.call(this, arr);
+       if (!kind) kind = 'value';
+       else if (contains.call(kind, 'key+value')) kind = 'key+value';
+       else if (contains.call(kind, 'key')) kind = 'key';
+       else kind = 'value';
+       defineProperty(this, '__kind__', d('', kind));
+};
+if (setPrototypeOf) setPrototypeOf(ArrayIterator, Iterator);
+
+ArrayIterator.prototype = Object.create(Iterator.prototype, {
+       constructor: d(ArrayIterator),
+       _resolve: d(function (i) {
+               if (this.__kind__ === 'value') return this.__list__[i];
+               if (this.__kind__ === 'key+value') return [i, this.__list__[i]];
+               return i;
+       }),
+       toString: d(function () { return '[object Array Iterator]'; })
+});
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js
new file mode 100644 (file)
index 0000000..111f552
--- /dev/null
@@ -0,0 +1,44 @@
+'use strict';
+
+var callable = require('es5-ext/object/valid-callable')
+  , isString = require('es5-ext/string/is-string')
+  , get      = require('./get')
+
+  , isArray = Array.isArray, call = Function.prototype.call;
+
+module.exports = function (iterable, cb/*, thisArg*/) {
+       var mode, thisArg = arguments[2], result, doBreak, broken, i, l, char, code;
+       if (isArray(iterable)) mode = 'array';
+       else if (isString(iterable)) mode = 'string';
+       else iterable = get(iterable);
+
+       callable(cb);
+       doBreak = function () { broken = true; };
+       if (mode === 'array') {
+               iterable.some(function (value) {
+                       call.call(cb, thisArg, value, doBreak);
+                       if (broken) return true;
+               });
+               return;
+       }
+       if (mode === 'string') {
+               l = iterable.length;
+               for (i = 0; i < l; ++i) {
+                       char = iterable[i];
+                       if ((i + 1) < l) {
+                               code = char.charCodeAt(0);
+                               if ((code >= 0xD800) && (code <= 0xDBFF)) char += iterable[++i];
+                       }
+                       call.call(cb, thisArg, char, doBreak);
+                       if (broken) break;
+               }
+               return;
+       }
+       result = iterable.next();
+
+       while (!result.done) {
+               call.call(cb, thisArg, result.value, doBreak);
+               if (broken) return;
+               result = iterable.next();
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js
new file mode 100644 (file)
index 0000000..38230fd
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var isString = require('es5-ext/string/is-string')
+  , ArrayIterator  = require('./array')
+  , StringIterator = require('./string')
+  , iterable       = require('./valid-iterable')
+  , iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (obj) {
+       if (typeof iterable(obj)[iteratorSymbol] === 'function') return obj[iteratorSymbol]();
+       if (isString(obj)) return new StringIterator(obj);
+       return new ArrayIterator(obj);
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js
new file mode 100644 (file)
index 0000000..10fd089
--- /dev/null
@@ -0,0 +1,90 @@
+'use strict';
+
+var clear    = require('es5-ext/array/#/clear')
+  , assign   = require('es5-ext/object/assign')
+  , callable = require('es5-ext/object/valid-callable')
+  , value    = require('es5-ext/object/valid-value')
+  , d        = require('d')
+  , autoBind = require('d/auto-bind')
+  , Symbol   = require('es6-symbol')
+
+  , defineProperty = Object.defineProperty
+  , defineProperties = Object.defineProperties
+  , Iterator;
+
+module.exports = Iterator = function (list, context) {
+       if (!(this instanceof Iterator)) return new Iterator(list, context);
+       defineProperties(this, {
+               __list__: d('w', value(list)),
+               __context__: d('w', context),
+               __nextIndex__: d('w', 0)
+       });
+       if (!context) return;
+       callable(context.on);
+       context.on('_add', this._onAdd);
+       context.on('_delete', this._onDelete);
+       context.on('_clear', this._onClear);
+};
+
+defineProperties(Iterator.prototype, assign({
+       constructor: d(Iterator),
+       _next: d(function () {
+               var i;
+               if (!this.__list__) return;
+               if (this.__redo__) {
+                       i = this.__redo__.shift();
+                       if (i !== undefined) return i;
+               }
+               if (this.__nextIndex__ < this.__list__.length) return this.__nextIndex__++;
+               this._unBind();
+       }),
+       next: d(function () { return this._createResult(this._next()); }),
+       _createResult: d(function (i) {
+               if (i === undefined) return { done: true, value: undefined };
+               return { done: false, value: this._resolve(i) };
+       }),
+       _resolve: d(function (i) { return this.__list__[i]; }),
+       _unBind: d(function () {
+               this.__list__ = null;
+               delete this.__redo__;
+               if (!this.__context__) return;
+               this.__context__.off('_add', this._onAdd);
+               this.__context__.off('_delete', this._onDelete);
+               this.__context__.off('_clear', this._onClear);
+               this.__context__ = null;
+       }),
+       toString: d(function () { return '[object Iterator]'; })
+}, autoBind({
+       _onAdd: d(function (index) {
+               if (index >= this.__nextIndex__) return;
+               ++this.__nextIndex__;
+               if (!this.__redo__) {
+                       defineProperty(this, '__redo__', d('c', [index]));
+                       return;
+               }
+               this.__redo__.forEach(function (redo, i) {
+                       if (redo >= index) this.__redo__[i] = ++redo;
+               }, this);
+               this.__redo__.push(index);
+       }),
+       _onDelete: d(function (index) {
+               var i;
+               if (index >= this.__nextIndex__) return;
+               --this.__nextIndex__;
+               if (!this.__redo__) return;
+               i = this.__redo__.indexOf(index);
+               if (i !== -1) this.__redo__.splice(i, 1);
+               this.__redo__.forEach(function (redo, i) {
+                       if (redo > index) this.__redo__[i] = --redo;
+               }, this);
+       }),
+       _onClear: d(function () {
+               if (this.__redo__) clear.call(this.__redo__);
+               this.__nextIndex__ = 0;
+       })
+})));
+
+defineProperty(Iterator.prototype, Symbol.iterator, d(function () {
+       return this;
+}));
+defineProperty(Iterator.prototype, Symbol.toStringTag, d('', 'Iterator'));
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js
new file mode 100644 (file)
index 0000000..bbcf104
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var isString       = require('es5-ext/string/is-string')
+  , iteratorSymbol = require('es6-symbol').iterator
+
+  , isArray = Array.isArray;
+
+module.exports = function (value) {
+       if (value == null) return false;
+       if (isArray(value)) return true;
+       if (isString(value)) return true;
+       return (typeof value[iteratorSymbol] === 'function');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json
new file mode 100644 (file)
index 0000000..b861638
--- /dev/null
@@ -0,0 +1,66 @@
+{
+  "name": "es6-iterator",
+  "version": "0.1.3",
+  "description": "Iterator abstraction based on ES6 specification",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "iterator",
+    "array",
+    "list",
+    "set",
+    "map",
+    "generator"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es6-iterator.git"
+  },
+  "dependencies": {
+    "d": "~0.1.1",
+    "es5-ext": "~0.10.5",
+    "es6-symbol": "~2.0.1"
+  },
+  "devDependencies": {
+    "event-emitter": "~0.3.3",
+    "tad": "~0.2.1",
+    "xlint": "~0.2.2",
+    "xlint-jslint-medikoo": "~0.1.2"
+  },
+  "scripts": {
+    "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+    "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "2addc362c6f139e4941cf4726eeb59e5960c5cef",
+  "bugs": {
+    "url": "https://github.com/medikoo/es6-iterator/issues"
+  },
+  "homepage": "https://github.com/medikoo/es6-iterator",
+  "_id": "es6-iterator@0.1.3",
+  "_shasum": "d6f58b8c4fc413c249b4baa19768f8e4d7c8944e",
+  "_from": "es6-iterator@>=0.1.3 <0.2.0",
+  "_npmVersion": "2.3.0",
+  "_nodeVersion": "0.11.16",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "d6f58b8c4fc413c249b4baa19768f8e4d7c8944e",
+    "tarball": "http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js
new file mode 100644 (file)
index 0000000..cdb39ea
--- /dev/null
@@ -0,0 +1,37 @@
+// Thanks @mathiasbynens
+// http://mathiasbynens.be/notes/javascript-unicode#iterating-over-symbols
+
+'use strict';
+
+var setPrototypeOf = require('es5-ext/object/set-prototype-of')
+  , d              = require('d')
+  , Iterator       = require('./')
+
+  , defineProperty = Object.defineProperty
+  , StringIterator;
+
+StringIterator = module.exports = function (str) {
+       if (!(this instanceof StringIterator)) return new StringIterator(str);
+       str = String(str);
+       Iterator.call(this, str);
+       defineProperty(this, '__length__', d('', str.length));
+
+};
+if (setPrototypeOf) setPrototypeOf(StringIterator, Iterator);
+
+StringIterator.prototype = Object.create(Iterator.prototype, {
+       constructor: d(StringIterator),
+       _next: d(function () {
+               if (!this.__list__) return;
+               if (this.__nextIndex__ < this.__length__) return this.__nextIndex__++;
+               this._unBind();
+       }),
+       _resolve: d(function (i) {
+               var char = this.__list__[i], code;
+               if (this.__nextIndex__ === this.__length__) return char;
+               code = char.charCodeAt(0);
+               if ((code >= 0xD800) && (code <= 0xDBFF)) return char + this.__list__[this.__nextIndex__++];
+               return char;
+       }),
+       toString: d(function () { return '[object String Iterator]'; })
+});
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#/chain.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#/chain.js
new file mode 100644 (file)
index 0000000..a414c66
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var Iterator = require('../../');
+
+module.exports = function (t, a) {
+       var i1 = new Iterator(['raz', 'dwa', 'trzy'])
+         , i2 = new Iterator(['cztery', 'pięć', 'sześć'])
+         , i3 = new Iterator(['siedem', 'osiem', 'dziewięć'])
+
+         , iterator = t.call(i1, i2, i3);
+
+       a.deep(iterator.next(), { done: false, value: 'raz' }, "#1");
+       a.deep(iterator.next(), { done: false, value: 'dwa' }, "#2");
+       a.deep(iterator.next(), { done: false, value: 'trzy' }, "#3");
+       a.deep(iterator.next(), { done: false, value: 'cztery' }, "#4");
+       a.deep(iterator.next(), { done: false, value: 'pięć' }, "#5");
+       a.deep(iterator.next(), { done: false, value: 'sześć' }, "#6");
+       a.deep(iterator.next(), { done: false, value: 'siedem' }, "#7");
+       a.deep(iterator.next(), { done: false, value: 'osiem' }, "#8");
+       a.deep(iterator.next(), { done: false, value: 'dziewięć' }, "#9");
+       a.deep(iterator.next(), { done: true, value: undefined }, "Done #1");
+       a.deep(iterator.next(), { done: true, value: undefined }, "Done #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/array.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/array.js
new file mode 100644 (file)
index 0000000..ae7c219
--- /dev/null
@@ -0,0 +1,67 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (T) {
+       return {
+               Values: function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it;
+
+                       it = new T(x);
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.splice(1, 0, 'elo');
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "Insert");
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       x.pop();
+                       a.deep(it.next(), { done: false, value: 'pięć' }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Keys & Values": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it;
+
+                       it = new T(x, 'key+value');
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       a.deep(it.next(), { done: false, value: [0, 'raz'] }, "#1");
+                       a.deep(it.next(), { done: false, value: [1, 'dwa'] }, "#2");
+                       x.splice(1, 0, 'elo');
+                       a.deep(it.next(), { done: false, value: [2, 'dwa'] }, "Insert");
+                       a.deep(it.next(), { done: false, value: [3, 'trzy'] }, "#3");
+                       a.deep(it.next(), { done: false, value: [4, 'cztery'] }, "#4");
+                       x.pop();
+                       a.deep(it.next(), { done: false, value: [5, 'pięć'] }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               Keys: function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it;
+
+                       it = new T(x, 'key');
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       a.deep(it.next(), { done: false, value: 0 }, "#1");
+                       a.deep(it.next(), { done: false, value: 1 }, "#2");
+                       x.splice(1, 0, 'elo');
+                       a.deep(it.next(), { done: false, value: 2 }, "Insert");
+                       a.deep(it.next(), { done: false, value: 3 }, "#3");
+                       a.deep(it.next(), { done: false, value: 4 }, "#4");
+                       x.pop();
+                       a.deep(it.next(), { done: false, value: 5 }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               Sparse: function (a) {
+                       var x = new Array(6), it;
+
+                       x[2] = 'raz';
+                       x[4] = 'dwa';
+                       it = new T(x);
+                       a.deep(it.next(), { done: false, value: undefined }, "#1");
+                       a.deep(it.next(), { done: false, value: undefined }, "#2");
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#3");
+                       a.deep(it.next(), { done: false, value: undefined }, "#4");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#5");
+                       a.deep(it.next(), { done: false, value: undefined }, "#6");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               }
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/for-of.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/for-of.js
new file mode 100644 (file)
index 0000000..502e7b7
--- /dev/null
@@ -0,0 +1,35 @@
+'use strict';
+
+var ArrayIterator = require('../array')
+
+  , slice = Array.prototype.slice;
+
+module.exports = function (t, a) {
+       var i = 0, x = ['raz', 'dwa', 'trzy'], y = {}, called = 0;
+       t(x, function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Array " + i + "#");
+               a(this, y, "Array: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(x = 'foo', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Regular String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       x = ['r', '💩', 'z'];
+       t('r💩z', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Unicode String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(new ArrayIterator(x), function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Iterator " + i + "#");
+               a(this, y, "Iterator: context:  " + (i++) + "#");
+       }, y);
+
+       t(x = ['raz', 'dwa', 'trzy'], function (value, doBreak) {
+               ++called;
+               return doBreak();
+       });
+       a(called, 1, "Break");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/get.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/get.js
new file mode 100644 (file)
index 0000000..7309590
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , Iterator       = require('../');
+
+module.exports = function (t, a) {
+       var iterator;
+       a.throws(function () { t(); }, TypeError, "Null");
+       a.throws(function () { t({}); }, TypeError, "Plain object");
+       a.throws(function () { t({ length: 0 }); }, TypeError, "Array-like");
+       iterator = {};
+       iterator[iteratorSymbol] = function () { return new Iterator([]); };
+       a(t(iterator) instanceof Iterator, true, "Iterator");
+       a(String(t([])), '[object Array Iterator]', " Array");
+       a(String(t('foo')), '[object String Iterator]', "String");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/index.js
new file mode 100644 (file)
index 0000000..ea3621a
--- /dev/null
@@ -0,0 +1,99 @@
+'use strict';
+
+var ee             = require('event-emitter')
+  , iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (T) {
+       return {
+               "": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć'], it, y, z;
+
+                       it = new T(x);
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       y = it.next();
+                       a.deep(y, { done: false, value: 'raz' }, "#1");
+                       z = it.next();
+                       a.not(y, z, "Recreate result");
+                       a.deep(z, { done: false, value: 'dwa' }, "#2");
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       a.deep(it.next(), { done: false, value: 'pięć' }, "#5");
+                       a.deep(y = it.next(), { done: true, value: undefined }, "End");
+                       a.not(y, it.next(), "Recreate result on dead");
+               },
+               Emited: function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       y.emit('_add', x.push('sześć') - 1);
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       x.splice(1, 0, 'półtora');
+                       y.emit('_add', 1);
+                       a.deep(it.next(), { done: false, value: 'półtora' }, "Insert");
+                       x.splice(5, 1);
+                       y.emit('_delete', 5);
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       a.deep(it.next(), { done: false, value: 'sześć' }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Emited #2": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.splice(1, 0, 'półtora');
+                       y.emit('_add', 1);
+                       x.splice(1, 0, '1.25');
+                       y.emit('_add', 1);
+                       x.splice(0, 1);
+                       y.emit('_delete', 0);
+                       a.deep(it.next(), { done: false, value: 'półtora' }, "Insert");
+                       a.deep(it.next(), { done: false, value: '1.25' }, "Insert #2");
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       x.splice(5, 1);
+                       y.emit('_delete', 5);
+                       a.deep(it.next(), { done: false, value: 'sześć' }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Emited: Clear #1": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.length = 0;
+                       y.emit('_clear');
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Emited: Clear #2": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.length = 0;
+                       y.emit('_clear');
+                       x.push('foo');
+                       x.push('bar');
+                       a.deep(it.next(), { done: false, value: 'foo' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'bar' }, "#4");
+                       x.splice(1, 0, 'półtora');
+                       y.emit('_add', 1);
+                       x.splice(1, 0, '1.25');
+                       y.emit('_add', 1);
+                       x.splice(0, 1);
+                       y.emit('_delete', 0);
+                       a.deep(it.next(), { done: false, value: 'półtora' }, "Insert");
+                       a.deep(it.next(), { done: false, value: '1.25' }, "Insert #2");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               }
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/is-iterable.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/is-iterable.js
new file mode 100644 (file)
index 0000000..7c5c59b
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , Iterator       = require('../');
+
+module.exports = function (t, a) {
+       var iterator;
+       a(t(), false, "Undefined");
+       a(t(123), false, "Number");
+       a(t({}), false, "Plain object");
+       a(t({ length: 0 }), false, "Array-like");
+       iterator = {};
+       iterator[iteratorSymbol] = function () { return new Iterator([]); };
+       a(t(iterator), true, "Iterator");
+       a(t([]), true, "Array");
+       a(t('foo'), true, "String");
+       a(t(''), true, "Empty string");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/string.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/string.js
new file mode 100644 (file)
index 0000000..d11855f
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (T, a) {
+       var it = new T('foobar');
+
+       a(it[iteratorSymbol](), it, "@@iterator");
+       a.deep(it.next(), { done: false, value: 'f' }, "#1");
+       a.deep(it.next(), { done: false, value: 'o' }, "#2");
+       a.deep(it.next(), { done: false, value: 'o' }, "#3");
+       a.deep(it.next(), { done: false, value: 'b' }, "#4");
+       a.deep(it.next(), { done: false, value: 'a' }, "#5");
+       a.deep(it.next(), { done: false, value: 'r' }, "#6");
+       a.deep(it.next(), { done: true, value: undefined }, "End");
+
+       a.h1("Outside of BMP");
+       it = new T('r💩z');
+       a.deep(it.next(), { done: false, value: 'r' }, "#1");
+       a.deep(it.next(), { done: false, value: '💩' }, "#2");
+       a.deep(it.next(), { done: false, value: 'z' }, "#3");
+       a.deep(it.next(), { done: true, value: undefined }, "End");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/valid-iterable.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/valid-iterable.js
new file mode 100644 (file)
index 0000000..7760b01
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , Iterator       = require('../');
+
+module.exports = function (t, a) {
+       var obj;
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t({}); }, TypeError, "Plain object");
+       a.throws(function () { t({ length: 0 }); }, TypeError, "Array-like");
+       obj = {};
+       obj[iteratorSymbol] = function () { return new Iterator([]); };
+       a(t(obj), obj, "Iterator");
+       obj = [];
+       a(t(obj), obj, 'Array');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js
new file mode 100644 (file)
index 0000000..d330997
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isIterable = require('./is-iterable');
+
+module.exports = function (value) {
+       if (!isIterable(value)) throw new TypeError(value + " is not iterable");
+       return value;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.lint b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.lint
new file mode 100644 (file)
index 0000000..1851752
--- /dev/null
@@ -0,0 +1,13 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
+newcap
+vars
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.npmignore b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.travis.yml b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.travis.yml
new file mode 100644 (file)
index 0000000..afd3509
--- /dev/null
@@ -0,0 +1,9 @@
+language: node_js
+node_js:
+  - 0.8
+  - 0.10
+  - 0.11
+
+notifications:
+  email:
+    - medikoo+es6-symbol@medikoo.com
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/CHANGES b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/CHANGES
new file mode 100644 (file)
index 0000000..df8c27e
--- /dev/null
@@ -0,0 +1,34 @@
+v2.0.1  --  2015.01.28
+* Fix Symbol.prototype[Symbol.isPrimitive] implementation
+* Improve validation within Symbol.prototype.toString and
+  Symbol.prototype.valueOf
+
+v2.0.0  --  2015.01.28
+* Update up to changes in specification:
+  * Implement `for` and `keyFor`
+  * Remove `Symbol.create` and `Symbol.isRegExp`
+  * Add `Symbol.match`, `Symbol.replace`, `Symbol.search`, `Symbol.species` and
+    `Symbol.split`
+* Rename `validSymbol` to `validateSymbol`
+* Improve documentation
+* Remove dead test modules
+
+v1.0.0  --  2015.01.26
+* Fix enumerability for symbol properties set normally (e.g. obj[symbol] = value)
+* Introduce initialization via hidden constructor
+* Fix isSymbol handling of polyfill values when native Symbol is present
+* Fix spelling of LICENSE
+* Configure lint scripts
+
+v0.1.1  --  2014.10.07
+* Fix isImplemented, so it returns true in case of polyfill
+* Improve documentations
+
+v0.1.0  --  2014.04.28
+* Assure strictly npm dependencies
+* Update to use latest versions of dependencies
+* Fix implementation detection so it doesn't crash on `String(symbol)`
+* throw on `new Symbol()` (as decided by TC39)
+
+v0.0.0  --  2013.11.15
+* Initial (dev) version
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/LICENSE b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/LICENSE
new file mode 100644 (file)
index 0000000..04724a3
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.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/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/README.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/README.md
new file mode 100644 (file)
index 0000000..95d6780
--- /dev/null
@@ -0,0 +1,71 @@
+# es6-symbol
+## ECMAScript 6 Symbol polyfill
+
+For more information about symbols see following links
+- [Symbols in ECMAScript 6 by Axel Rauschmayer](http://www.2ality.com/2014/12/es6-symbols.html)
+- [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol)
+- [Specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-constructor)
+
+### Limitations
+
+Underneath it uses real string property names which can easily be retrieved, however accidental collision with other property names is unlikely.
+
+### Usage
+
+If you'd like to use native version when it exists and fallback to polyfill if it doesn't (but without implementing `Symbol` on global scope), do:
+
+```javascript
+var Symbol = require('es6-symbol');
+```
+
+If you want to make sure your environment implements `Symbol`, do:
+
+```javascript
+require('es6-symbol/implement');
+```
+
+If you strictly want to use polyfill even if native `Symbol` exists (hard to find a good reason for that), do:
+
+```javascript
+var Symbol = require('es6-symbol/polyfill');
+```
+
+#### API
+
+Best is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-objects). Still if you want quick look, follow examples:
+
+```javascript
+var Symbol = require('es6-symbol');
+
+var symbol = Symbol('My custom symbol');
+var x = {};
+
+x[symbol] = 'foo';
+console.log(x[symbol]); 'foo'
+
+// Detect iterable:
+var iterator, result;
+if (possiblyIterable[Symbol.iterator]) {
+  iterator = possiblyIterable[Symbol.iterator]();
+  result = iterator.next();
+  while(!result.done) {
+    console.log(result.value);
+    result = iterator.next();
+  }
+}
+```
+
+### Installation
+#### NPM
+
+In your project path:
+
+       $ npm install es6-symbol
+
+##### Browser
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/es6-symbol.png)](https://travis-ci.org/medikoo/es6-symbol)
+
+       $ npm test
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js
new file mode 100644 (file)
index 0000000..153edac
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(require('es5-ext/global'), 'Symbol',
+               { value: require('./polyfill'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js
new file mode 100644 (file)
index 0000000..609f1fa
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ? Symbol : require('./polyfill');
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js
new file mode 100644 (file)
index 0000000..53759f3
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function () {
+       var symbol;
+       if (typeof Symbol !== 'function') return false;
+       symbol = Symbol('test symbol');
+       try { String(symbol); } catch (e) { return false; }
+       if (typeof Symbol.iterator === 'symbol') return true;
+
+       // Return 'true' for polyfills
+       if (typeof Symbol.isConcatSpreadable !== 'object') return false;
+       if (typeof Symbol.iterator !== 'object') return false;
+       if (typeof Symbol.toPrimitive !== 'object') return false;
+       if (typeof Symbol.toStringTag !== 'object') return false;
+       if (typeof Symbol.unscopables !== 'object') return false;
+
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js
new file mode 100644 (file)
index 0000000..a8cb8b8
--- /dev/null
@@ -0,0 +1,8 @@
+// Exports true if environment provides native `Symbol` implementation
+
+'use strict';
+
+module.exports = (function () {
+       if (typeof Symbol !== 'function') return false;
+       return (typeof Symbol.iterator === 'symbol');
+}());
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js
new file mode 100644 (file)
index 0000000..beeba2c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (x) {
+       return (x && ((typeof x === 'symbol') || (x['@@toStringTag'] === 'Symbol'))) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json
new file mode 100644 (file)
index 0000000..0efffea
--- /dev/null
@@ -0,0 +1,63 @@
+{
+  "name": "es6-symbol",
+  "version": "2.0.1",
+  "description": "ECMAScript6 Symbol polyfill",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "symbol",
+    "private",
+    "property",
+    "es6",
+    "ecmascript",
+    "harmony"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es6-symbol.git"
+  },
+  "dependencies": {
+    "d": "~0.1.1",
+    "es5-ext": "~0.10.5"
+  },
+  "devDependencies": {
+    "tad": "~0.2.1",
+    "xlint": "~0.2.2",
+    "xlint-jslint-medikoo": "~0.1.2"
+  },
+  "scripts": {
+    "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+    "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "51f6938d7830269fefa38f02eb912f5472b3ccd7",
+  "bugs": {
+    "url": "https://github.com/medikoo/es6-symbol/issues"
+  },
+  "homepage": "https://github.com/medikoo/es6-symbol",
+  "_id": "es6-symbol@2.0.1",
+  "_shasum": "761b5c67cfd4f1d18afb234f691d678682cb3bf3",
+  "_from": "es6-symbol@>=2.0.1 <2.1.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "761b5c67cfd4f1d18afb234f691d678682cb3bf3",
+    "tarball": "http://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js
new file mode 100644 (file)
index 0000000..735eb67
--- /dev/null
@@ -0,0 +1,77 @@
+'use strict';
+
+var d              = require('d')
+  , validateSymbol = require('./validate-symbol')
+
+  , create = Object.create, defineProperties = Object.defineProperties
+  , defineProperty = Object.defineProperty, objPrototype = Object.prototype
+  , Symbol, HiddenSymbol, globalSymbols = create(null);
+
+var generateName = (function () {
+       var created = create(null);
+       return function (desc) {
+               var postfix = 0, name;
+               while (created[desc + (postfix || '')]) ++postfix;
+               desc += (postfix || '');
+               created[desc] = true;
+               name = '@@' + desc;
+               defineProperty(objPrototype, name, d.gs(null, function (value) {
+                       defineProperty(this, name, d(value));
+               }));
+               return name;
+       };
+}());
+
+HiddenSymbol = function Symbol(description) {
+       if (this instanceof HiddenSymbol) throw new TypeError('TypeError: Symbol is not a constructor');
+       return Symbol(description);
+};
+module.exports = Symbol = function Symbol(description) {
+       var symbol;
+       if (this instanceof Symbol) throw new TypeError('TypeError: Symbol is not a constructor');
+       symbol = create(HiddenSymbol.prototype);
+       description = (description === undefined ? '' : String(description));
+       return defineProperties(symbol, {
+               __description__: d('', description),
+               __name__: d('', generateName(description))
+       });
+};
+defineProperties(Symbol, {
+       for: d(function (key) {
+               if (globalSymbols[key]) return globalSymbols[key];
+               return (globalSymbols[key] = Symbol(String(key)));
+       }),
+       keyFor: d(function (s) {
+               var key;
+               validateSymbol(s);
+               for (key in globalSymbols) if (globalSymbols[key] === s) return key;
+       }),
+       hasInstance: d('', Symbol('hasInstance')),
+       isConcatSpreadable: d('', Symbol('isConcatSpreadable')),
+       iterator: d('', Symbol('iterator')),
+       match: d('', Symbol('match')),
+       replace: d('', Symbol('replace')),
+       search: d('', Symbol('search')),
+       species: d('', Symbol('species')),
+       split: d('', Symbol('split')),
+       toPrimitive: d('', Symbol('toPrimitive')),
+       toStringTag: d('', Symbol('toStringTag')),
+       unscopables: d('', Symbol('unscopables'))
+});
+defineProperties(HiddenSymbol.prototype, {
+       constructor: d(Symbol),
+       toString: d('', function () { return this.__name__; })
+});
+
+defineProperties(Symbol.prototype, {
+       toString: d(function () { return 'Symbol (' + validateSymbol(this).__description__ + ')'; }),
+       valueOf: d(function () { return validateSymbol(this); })
+});
+defineProperty(Symbol.prototype, Symbol.toPrimitive, d('',
+       function () { return validateSymbol(this); }));
+defineProperty(Symbol.prototype, Symbol.toStringTag, d('c', 'Symbol'));
+
+defineProperty(HiddenSymbol.prototype, Symbol.toPrimitive,
+       d('c', Symbol.prototype[Symbol.toPrimitive]));
+defineProperty(HiddenSymbol.prototype, Symbol.toStringTag,
+       d('c', Symbol.prototype[Symbol.toStringTag]));
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/implement.js
new file mode 100644 (file)
index 0000000..eb35c30
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof Symbol, 'function'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/index.js
new file mode 100644 (file)
index 0000000..62b3296
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var d = require('d')
+
+  , defineProperty = Object.defineProperty;
+
+module.exports = function (T, a) {
+       var symbol = T('test'), x = {};
+       defineProperty(x, symbol, d('foo'));
+       a(x.test, undefined, "Name");
+       a(x[symbol], 'foo', "Get");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-implemented.js
new file mode 100644 (file)
index 0000000..bb0d645
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var global   = require('es5-ext/global')
+  , polyfill = require('../polyfill');
+
+module.exports = function (t, a) {
+       var cache;
+       a(typeof t(), 'boolean');
+       cache = global.Symbol;
+       global.Symbol = polyfill;
+       a(t(), true);
+       if (cache === undefined) delete global.Symbol;
+       else global.Symbol = cache;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-native-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-native-implemented.js
new file mode 100644 (file)
index 0000000..df8ba03
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t, 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-symbol.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-symbol.js
new file mode 100644 (file)
index 0000000..ac24b9a
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var SymbolPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       a(t(undefined), false, "Undefined");
+       a(t(null), false, "Null");
+       a(t(true), false, "Primitive");
+       a(t('raz'), false, "String");
+       a(t({}), false, "Object");
+       a(t([]), false, "Array");
+       if (typeof Symbol !== 'undefined') {
+               a(t(Symbol()), true, "Native");
+       }
+       a(t(SymbolPoly()), true, "Polyfill");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/polyfill.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/polyfill.js
new file mode 100644 (file)
index 0000000..83fb5e9
--- /dev/null
@@ -0,0 +1,27 @@
+'use strict';
+
+var d        = require('d')
+  , isSymbol = require('../is-symbol')
+
+  , defineProperty = Object.defineProperty;
+
+module.exports = function (T, a) {
+       var symbol = T('test'), x = {};
+       defineProperty(x, symbol, d('foo'));
+       a(x.test, undefined, "Name");
+       a(x[symbol], 'foo', "Get");
+       a(x instanceof T, false);
+
+       a(isSymbol(symbol), true, "Symbol");
+       a(isSymbol(T.iterator), true, "iterator");
+       a(isSymbol(T.toStringTag), true, "toStringTag");
+
+       x = {};
+       x[symbol] = 'foo';
+       a.deep(Object.getOwnPropertyDescriptor(x, symbol), { configurable: true, enumerable: false,
+               value: 'foo', writable: true });
+       symbol = T.for('marko');
+       a(isSymbol(symbol), true);
+       a(T.for('marko'), symbol);
+       a(T.keyFor(symbol), 'marko');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/validate-symbol.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/validate-symbol.js
new file mode 100644 (file)
index 0000000..2c8f84c
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var SymbolPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       var symbol;
+       a.throws(function () { t(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.throws(function () { t(true); }, TypeError, "Primitive");
+       a.throws(function () { t('raz'); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Object");
+       a.throws(function () { t([]); }, TypeError, "Array");
+       if (typeof Symbol !== 'undefined') {
+               symbol = Symbol();
+               a(t(symbol), symbol, "Native");
+       }
+       symbol = SymbolPoly();
+       a(t(symbol), symbol, "Polyfill");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js
new file mode 100644 (file)
index 0000000..4275004
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isSymbol = require('./is-symbol');
+
+module.exports = function (value) {
+       if (!isSymbol(value)) throw new TypeError(value + " is not a symbol");
+       return value;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json
new file mode 100644 (file)
index 0000000..07973df
--- /dev/null
@@ -0,0 +1,64 @@
+{
+  "name": "es6-weak-map",
+  "version": "0.1.4",
+  "description": "ECMAScript6 WeakMap polyfill",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "map",
+    "weakmap",
+    "collection",
+    "es6",
+    "harmony",
+    "list",
+    "hash",
+    "gc"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es6-weak-map.git"
+  },
+  "dependencies": {
+    "d": "~0.1.1",
+    "es5-ext": "~0.10.6",
+    "es6-iterator": "~0.1.3",
+    "es6-symbol": "~2.0.1"
+  },
+  "devDependencies": {
+    "tad": "~0.2.2"
+  },
+  "scripts": {
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "e68802395b82a700257374c379cfaafe84ee8552",
+  "bugs": {
+    "url": "https://github.com/medikoo/es6-weak-map/issues"
+  },
+  "homepage": "https://github.com/medikoo/es6-weak-map",
+  "_id": "es6-weak-map@0.1.4",
+  "_shasum": "706cef9e99aa236ba7766c239c8b9e286ea7d228",
+  "_from": "es6-weak-map@>=0.1.2 <0.2.0",
+  "_npmVersion": "2.7.4",
+  "_nodeVersion": "0.12.2",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "706cef9e99aa236ba7766c239c8b9e286ea7d228",
+    "tarball": "http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js
new file mode 100644 (file)
index 0000000..1d15660
--- /dev/null
@@ -0,0 +1,75 @@
+'use strict';
+
+var setPrototypeOf    = require('es5-ext/object/set-prototype-of')
+  , object            = require('es5-ext/object/valid-object')
+  , value             = require('es5-ext/object/valid-value')
+  , d                 = require('d')
+  , getIterator       = require('es6-iterator/get')
+  , forOf             = require('es6-iterator/for-of')
+  , toStringTagSymbol = require('es6-symbol').toStringTag
+  , isNative          = require('./is-native-implemented')
+
+  , isArray = Array.isArray, defineProperty = Object.defineProperty, random = Math.random
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , genId, WeakMapPoly;
+
+genId = (function () {
+       var generated = Object.create(null);
+       return function () {
+               var id;
+               do { id = random().toString(36).slice(2); } while (generated[id]);
+               generated[id] = true;
+               return id;
+       };
+}());
+
+module.exports = WeakMapPoly = function (/*iterable*/) {
+       var iterable = arguments[0];
+       if (!(this instanceof WeakMapPoly)) return new WeakMapPoly(iterable);
+       if (this.__weakMapData__ !== undefined) {
+               throw new TypeError(this + " cannot be reinitialized");
+       }
+       if (iterable != null) {
+               if (!isArray(iterable)) iterable = getIterator(iterable);
+       }
+       defineProperty(this, '__weakMapData__', d('c', '$weakMap$' + genId()));
+       if (!iterable) return;
+       forOf(iterable, function (val) {
+               value(val);
+               this.set(val[0], val[1]);
+       }, this);
+};
+
+if (isNative) {
+       if (setPrototypeOf) setPrototypeOf(WeakMapPoly, WeakMap);
+       WeakMapPoly.prototype = Object.create(WeakMap.prototype, {
+               constructor: d(WeakMapPoly)
+       });
+}
+
+Object.defineProperties(WeakMapPoly.prototype, {
+       clear: d(function () {
+               defineProperty(this, '__weakMapData__', d('c', '$weakMap$' + genId()));
+       }),
+       delete: d(function (key) {
+               if (hasOwnProperty.call(object(key), this.__weakMapData__)) {
+                       delete key[this.__weakMapData__];
+                       return true;
+               }
+               return false;
+       }),
+       get: d(function (key) {
+               if (hasOwnProperty.call(object(key), this.__weakMapData__)) {
+                       return key[this.__weakMapData__];
+               }
+       }),
+       has: d(function (key) {
+               return hasOwnProperty.call(object(key), this.__weakMapData__);
+       }),
+       set: d(function (key, value) {
+               defineProperty(object(key), this.__weakMapData__, d('c', value));
+               return this;
+       }),
+       toString: d(function () { return '[object WeakMap]'; })
+});
+defineProperty(WeakMapPoly.prototype, toStringTagSymbol, d('c', 'WeakMap'));
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/implement.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/implement.js
new file mode 100644 (file)
index 0000000..860027e
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof WeakMap, 'function'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/index.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/index.js
new file mode 100644 (file)
index 0000000..9b26e4f
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (T, a) {
+       var x = {};
+       a((new T([[x, 'foo']])).get(x), 'foo');
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-native-implemented.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-native-implemented.js
new file mode 100644 (file)
index 0000000..df8ba03
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t, 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-weak-map.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-weak-map.js
new file mode 100644 (file)
index 0000000..ba8c045
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var WeakMapPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       a(t(undefined), false, "Undefined");
+       a(t(null), false, "Null");
+       a(t(true), false, "Primitive");
+       a(t('raz'), false, "String");
+       a(t({}), false, "Object");
+       a(t([]), false, "Array");
+       if (typeof WeakMap !== 'undefined') {
+               a(t(new WeakMap()), true, "Native");
+       }
+       a(t(new WeakMapPoly()), true, "Polyfill");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/polyfill.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/polyfill.js
new file mode 100644 (file)
index 0000000..1a4885b
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+module.exports = function (T, a) {
+       var x = {}, y = {}, z = {}, arr = [[x, 'raz'], [y, 'dwa']], map = new T(arr);
+
+       a(map instanceof T, true, "WeakMap");
+       a(map.has(x), true, "Has: true");
+       a(map.get(x), 'raz', "Get: contains");
+       a(map.has(z), false, "Has: false");
+       a(map.get(z), undefined, "Get: doesn't contain");
+       a(map.set(z, 'trzy'), map, "Set: return");
+       a(map.has(z), true, "Add");
+       a(map.delete({}), false, "Delete: false");
+
+       a(map.delete(x), true, "Delete: true");
+       a(map.get(x), undefined, "Get: after delete");
+       a(map.has(x), false, "Has: after delete");
+
+       a(map.has(y), true, "Has: pre clear");
+       map.clear();
+       a(map.has(y), false, "Has: after clear");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/valid-weak-map.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/valid-weak-map.js
new file mode 100644 (file)
index 0000000..a782342
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var WeakMapPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       var map;
+       a.throws(function () { t(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.throws(function () { t(true); }, TypeError, "Primitive");
+       a.throws(function () { t('raz'); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Object");
+       a.throws(function () { t([]); }, TypeError, "Array");
+       if (typeof WeakMap !== 'undefined') {
+               map = new WeakMap();
+               a(t(map), map, "Native");
+       }
+       map = new WeakMapPoly();
+       a(t(map), map, "Polyfill");
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js
new file mode 100644 (file)
index 0000000..bfb579f
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isWeakMap = require('./is-weak-map');
+
+module.exports = function (x) {
+       if (!isWeakMap(x)) throw new TypeError(x + " is not a WeakMap");
+       return x;
+};
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/LICENSE.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/README.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/README.md
new file mode 100644 (file)
index 0000000..7c450e3
--- /dev/null
@@ -0,0 +1,36 @@
+# Mixto: A simple mixin superclass [![Build Status](https://travis-ci.org/atom/mixto.png?branch=master)](https://travis-ci.org/atom/mixto)
+
+To create a mixin, subclass mixto:
+
+```coffee
+Mixin = require 'mixto'
+
+class MyMixin extends Mixin
+  @classMethod: -> console.log("foo")
+  instanceMethod: -> console.log("bar")
+```
+
+Then mix into classes with `.includeInto`:
+
+```coffee
+class MyClass
+  MyMixin.includeInto(this)
+  
+MyClass.classMethod()
+(new MyClass).instanceMethod()
+```
+
+Or extend individual objects with `.extend`:
+
+```coffee-script
+myObject = {a: 1, b: 2}
+MyMixin.extend(myObject)
+myObject.instanceMethod()
+```
+
+Or build standalone instances of your 'mixin':
+
+```
+standalone = new MyMixin
+standalone.instanceMethod()
+```
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js
new file mode 100644 (file)
index 0000000..a6fdd4f
--- /dev/null
@@ -0,0 +1,51 @@
+(function() {
+  var ExcludedClassProperties, ExcludedPrototypeProperties, Mixin, name;
+
+  module.exports = Mixin = (function() {
+    Mixin.includeInto = function(constructor) {
+      var name, value, _ref;
+      this.extend(constructor.prototype);
+      for (name in this) {
+        value = this[name];
+        if (ExcludedClassProperties.indexOf(name) === -1) {
+          if (!constructor.hasOwnProperty(name)) {
+            constructor[name] = value;
+          }
+        }
+      }
+      return (_ref = this.included) != null ? _ref.call(constructor) : void 0;
+    };
+
+    Mixin.extend = function(object) {
+      var name, _i, _len, _ref, _ref1;
+      _ref = Object.getOwnPropertyNames(this.prototype);
+      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+        name = _ref[_i];
+        if (ExcludedPrototypeProperties.indexOf(name) === -1) {
+          if (!object.hasOwnProperty(name)) {
+            object[name] = this.prototype[name];
+          }
+        }
+      }
+      return (_ref1 = this.prototype.extended) != null ? _ref1.call(object) : void 0;
+    };
+
+    function Mixin() {
+      if (typeof this.extended === "function") {
+        this.extended();
+      }
+    }
+
+    return Mixin;
+
+  })();
+
+  ExcludedClassProperties = ['__super__'];
+
+  for (name in Mixin) {
+    ExcludedClassProperties.push(name);
+  }
+
+  ExcludedPrototypeProperties = ['constructor', 'extended'];
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json
new file mode 100644 (file)
index 0000000..1eace4a
--- /dev/null
@@ -0,0 +1,66 @@
+{
+  "name": "mixto",
+  "version": "1.0.0",
+  "description": "A mixin superclass. Its subclasses have `.extend` and `.includeInto` methods to mix behavior into other objects and classes.",
+  "main": "lib/mixin",
+  "scripts": {
+    "prepublish": "grunt clean coffee lint",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/mixto"
+  },
+  "keywords": [
+    "mixin",
+    "trait"
+  ],
+  "bugs": {
+    "url": "https://github.com/atom/mixto/issues"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/mixto/raw/master/LICENSE.md"
+    }
+  ],
+  "devDependencies": {
+    "coffee-script": "~1.6.3",
+    "jasmine-focused": "~0.19.0",
+    "grunt-contrib-coffee": "~0.7.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "rimraf": "~2.2.2"
+  },
+  "author": {
+    "name": "Nathan Sobo"
+  },
+  "_id": "mixto@1.0.0",
+  "dist": {
+    "shasum": "c320ef61b52f2898f522e17d8bbc6d506d8425b6",
+    "tarball": "http://registry.npmjs.org/mixto/-/mixto-1.0.0.tgz"
+  },
+  "_from": "mixto@>=1.0.0 <2.0.0",
+  "_npmVersion": "1.3.2",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    }
+  ],
+  "directories": {},
+  "_shasum": "c320ef61b52f2898f522e17d8bbc6d506d8425b6",
+  "_resolved": "https://registry.npmjs.org/mixto/-/mixto-1.0.0.tgz",
+  "readme": "ERROR: No README data found!",
+  "homepage": "https://github.com/atom/mixto"
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/LICENSE.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/README.md b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/README.md
new file mode 100644 (file)
index 0000000..6ef1e04
--- /dev/null
@@ -0,0 +1,80 @@
+# Property Accessors Mixin [![Build Status](https://travis-ci.org/atom/property-accessors.svg?branch=master)](https://travis-ci.org/atom/property-accessors)
+
+A mixin for defining dynamic properties.
+
+## Basic Usage
+
+To define a basic property accessor, use the `accessor` declaration. If you've
+included the mixin into a class, you define a prototype property by calling
+`@::accessor` on its prototype.
+
+```coffee
+PropertyAccessors = require 'property-accessors'
+
+class Vehicle
+  PropertyAccessors.includeInto(this)
+
+  @::accessor 'type',
+    get: ->
+      switch @doorCount
+        when 4 then 'sedan' # i know this isn't strictly accurate
+        when 2 then 'coupe'
+    set: (type) ->
+      switch type
+        when 'sedan' then @doorCount = 4
+        when 'coupe' then @doorCount = 2
+
+car = new Vehicle
+car.doorCount = 2
+car.type # => 'coupe'
+```
+
+You can define a class-level property by *extending* with the mixin rather than
+including it (which extends the prototype).
+
+```coffee
+class Vehicle
+  PropertyAccessors.extend(this)
+
+  @accessor 'vehicleCount', get: -> @allVehicles.length  
+```
+
+You can just pass a single function if you only want to define a getter:
+
+```coffee
+class Vehicle
+  PropertyAccessors.includeInto(this)
+
+  @::accessor 'type', -> # ...
+```
+
+## Fancy Usage
+
+### Lazy Accessors
+
+Lazy accessors call a function the first time a property is accessed. You are
+still free to overwrite this value by assigning the property explicitly.
+
+```coffee
+class ScienceLab
+  PropertyAccessors.includeInto(this)
+
+  @::lazyAccessor 'crazyComputation', -> computeCrazyComputation()
+```
+
+### Advised Accessors
+
+Advised accessors allow you to call code before the reading or writing of a
+property value. If a property is being assigned, your advice function is called
+with the value being assigned and the old value.
+
+```coffee
+class SpyStation
+  @advisedAccessor 'online',
+    get: -> @ensureAllSystemsNominal()
+    set: -> @ensureUserIsSpy()
+
+station = new SpyStation
+station.online = true # ensures user is a spy, then assigns true
+station.online # ensures all systems are nominal, then returns true
+```
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js
new file mode 100644 (file)
index 0000000..4cb92d8
--- /dev/null
@@ -0,0 +1,74 @@
+(function() {
+  var Mixin, PropertyAccessors, WeakMap, _ref, _ref1,
+    __hasProp = {}.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; };
+
+  Mixin = require('mixto');
+
+  WeakMap = (_ref = global.WeakMap) != null ? _ref : require('es6-weak-map');
+
+  module.exports = PropertyAccessors = (function(_super) {
+    __extends(PropertyAccessors, _super);
+
+    function PropertyAccessors() {
+      _ref1 = PropertyAccessors.__super__.constructor.apply(this, arguments);
+      return _ref1;
+    }
+
+    PropertyAccessors.prototype.accessor = function(name, definition) {
+      if (typeof definition === 'function') {
+        definition = {
+          get: definition
+        };
+      }
+      return Object.defineProperty(this, name, definition);
+    };
+
+    PropertyAccessors.prototype.advisedAccessor = function(name, definition) {
+      var getAdvice, setAdvice, values;
+      if (typeof definition === 'function') {
+        getAdvice = definition;
+      } else {
+        getAdvice = definition.get;
+        setAdvice = definition.set;
+      }
+      values = new WeakMap;
+      return this.accessor(name, {
+        get: function() {
+          if (getAdvice != null) {
+            getAdvice.call(this);
+          }
+          return values.get(this);
+        },
+        set: function(newValue) {
+          if (setAdvice != null) {
+            setAdvice.call(this, newValue, values.get(this));
+          }
+          return values.set(this, newValue);
+        }
+      });
+    };
+
+    PropertyAccessors.prototype.lazyAccessor = function(name, definition) {
+      var values;
+      values = new WeakMap;
+      return this.accessor(name, {
+        get: function() {
+          if (values.has(this)) {
+            return values.get(this);
+          } else {
+            values.set(this, definition.call(this));
+            return values.get(this);
+          }
+        },
+        set: function(value) {
+          return values.set(this, value);
+        }
+      });
+    };
+
+    return PropertyAccessors;
+
+  })(Mixin);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json
new file mode 100644 (file)
index 0000000..7c7f365
--- /dev/null
@@ -0,0 +1,75 @@
+{
+  "name": "property-accessors",
+  "version": "1.1.3",
+  "description": "A mixin for declaring property accessors",
+  "main": "lib/property-accessors",
+  "scripts": {
+    "test": "grunt test",
+    "publish": "grunt"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/property-accessors"
+  },
+  "keywords": [
+    "property",
+    "accessors",
+    "metaprogramming"
+  ],
+  "author": {
+    "name": "Nathan Sobo"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/telepath/raw/master/LICENSE.md"
+    }
+  ],
+  "bugs": {
+    "url": "https://github.com/atom/property-accessors/issues"
+  },
+  "homepage": "http://atom.github.io/property-accessors/",
+  "dependencies": {
+    "mixto": "1.x",
+    "es6-weak-map": "^0.1.2"
+  },
+  "devDependencies": {
+    "jasmine-focused": "1.x",
+    "grunt-contrib-coffee": "~0.7.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "rimraf": "~2.2.2"
+  },
+  "gitHead": "c90f096dfc8f589ecb8186cadfbfcf97dc5f5cc6",
+  "_id": "property-accessors@1.1.3",
+  "_shasum": "1dde84024631865909ef30703365680c5f928b15",
+  "_from": "property-accessors@>=1.1.0 <2.0.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "1dde84024631865909ef30703365680c5f928b15",
+    "tarball": "http://registry.npmjs.org/property-accessors/-/property-accessors-1.1.3.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/property-accessors/-/property-accessors-1.1.3.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/package.json b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/package.json
new file mode 100644 (file)
index 0000000..ccd6522
--- /dev/null
@@ -0,0 +1,78 @@
+{
+  "name": "emissary",
+  "version": "1.3.3",
+  "description": "Utility mixins for subscribing to and emitting events.",
+  "main": "lib/emissary.js",
+  "scripts": {
+    "test": "grunt test",
+    "prepublish": "grunt clean lint coffee"
+  },
+  "repository": {
+    "type": "git",
+    "url": "http://github.com/atom/emissary.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/emissary/issues"
+  },
+  "homepage": "http://atom.github.io/emissary",
+  "keywords": [
+    "event-emitter",
+    "events",
+    "subscribe",
+    "subscriber"
+  ],
+  "author": {
+    "name": "Nathan Sobo"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/emissary/raw/master/LICENSE.md"
+    }
+  ],
+  "dependencies": {
+    "underscore-plus": "1.x",
+    "mixto": "1.x",
+    "property-accessors": "^1.1",
+    "es6-weak-map": "^0.1.2"
+  },
+  "devDependencies": {
+    "jasmine-focused": "1.x",
+    "grunt-contrib-coffee": "~0.7.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "rimraf": "~2.2.2"
+  },
+  "gitHead": "13170d3e1f8b1cd4396d6dceb3c3bccf0887dae2",
+  "_id": "emissary@1.3.3",
+  "_shasum": "a618d92d682b232d31111dc3625a5df661799606",
+  "_from": "emissary@>=1.2.0 <2.0.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "a618d92d682b232d31111dc3625a5df661799606",
+    "tarball": "http://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/package.json b/atom/packages/ex-mode/node_modules/event-kit/node_modules/grim/package.json
new file mode 100644 (file)
index 0000000..8635d08
--- /dev/null
@@ -0,0 +1,74 @@
+{
+  "name": "grim",
+  "version": "0.12.0",
+  "description": "Log usage of deprecated methods",
+  "main": "./lib/grim",
+  "scripts": {
+    "prepublish": "grunt clean lint coffee",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/grim.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/grim/issues"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/grim/raw/master/LICENSE.md"
+    }
+  ],
+  "dependencies": {
+    "underscore-plus": "^1.0.0",
+    "emissary": "^1.2.0"
+  },
+  "devDependencies": {
+    "coffee-script": "^1.7.0",
+    "jasmine-focused": "^1.0.4",
+    "grunt-contrib-coffee": "^0.9.0",
+    "grunt-cli": "^0.1.8",
+    "grunt": "^0.4.1",
+    "grunt-shell": "^0.2.2",
+    "grunt-coffeelint": "^0.0.6",
+    "rimraf": "^2.2.2",
+    "coffee-cache": "^0.2.0",
+    "temp": "^0.6.0"
+  },
+  "gitHead": "c24f22a7e415d5d6b695967e341f7fb7aa27d83f",
+  "homepage": "https://github.com/atom/grim",
+  "_id": "grim@0.12.0",
+  "_shasum": "86d4ea11bf57b960688c624878bdc126fe4b7d1b",
+  "_from": "grim@>=0.12.0 <0.13.0",
+  "_npmVersion": "1.4.23",
+  "_npmUser": {
+    "name": "benogle",
+    "email": "ogle.ben@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "probablycorey",
+      "email": "probablycorey@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "nathansobo",
+      "email": "nathan@github.com"
+    }
+  ],
+  "dist": {
+    "shasum": "86d4ea11bf57b960688c624878bdc126fe4b7d1b",
+    "tarball": "http://registry.npmjs.org/grim/-/grim-0.12.0.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/grim/-/grim-0.12.0.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/event-kit/package.json b/atom/packages/ex-mode/node_modules/event-kit/package.json
new file mode 100644 (file)
index 0000000..5ca1859
--- /dev/null
@@ -0,0 +1,74 @@
+{
+  "name": "event-kit",
+  "version": "0.7.2",
+  "description": "Simple library for implementing and consuming evented APIs",
+  "main": "./lib/event-kit",
+  "scripts": {
+    "prepublish": "grunt clean lint coffee shell:update-atomdoc atomdoc",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/event-kit.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/event-kit/issues"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/event-kit/raw/master/LICENSE.md"
+    }
+  ],
+  "dependencies": {
+    "grim": "^0.12.0"
+  },
+  "devDependencies": {
+    "coffee-cache": "^0.2.0",
+    "coffee-script": "^1.7.0",
+    "grunt": "^0.4.1",
+    "grunt-atomdoc": "^1.0.0",
+    "grunt-cli": "^0.1.8",
+    "grunt-coffeelint": "^0.0.6",
+    "grunt-contrib-coffee": "^0.9.0",
+    "grunt-shell": "^0.2.2",
+    "jasmine-focused": "^1.0.4",
+    "rimraf": "^2.2.2",
+    "temp": "^0.6.0"
+  },
+  "gitHead": "997b618b19566d5740c77507492528c52b5edb6a",
+  "homepage": "https://github.com/atom/event-kit",
+  "_id": "event-kit@0.7.2",
+  "_shasum": "331f5c36fde2ebd6413b69b56633e2b6b5cf9e60",
+  "_from": "event-kit@>=0.7.2 <0.8.0",
+  "_npmVersion": "1.4.23",
+  "_npmUser": {
+    "name": "benogle",
+    "email": "ogle.ben@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathan@github.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    },
+    {
+      "name": "zcbenz",
+      "email": "zcbenz@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "331f5c36fde2ebd6413b69b56633e2b6b5cf9e60",
+    "tarball": "http://registry.npmjs.org/event-kit/-/event-kit-0.7.2.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/event-kit/-/event-kit-0.7.2.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/LICENSE b/atom/packages/ex-mode/node_modules/space-pen/LICENSE
new file mode 100644 (file)
index 0000000..246df56
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2012 Nathan Sobo
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION 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/atom/packages/ex-mode/node_modules/space-pen/README.md b/atom/packages/ex-mode/node_modules/space-pen/README.md
new file mode 100644 (file)
index 0000000..715170f
--- /dev/null
@@ -0,0 +1,250 @@
+# SpacePen [![Build Status](https://travis-ci.org/atom/space-pen.svg?branch=master)](https://travis-ci.org/atom/space-pen)
+
+**Version 5.x of SpacePen is intended to be included as a direct dependency of 1.0-compatible Atom packages. If you're looking for SpacePen 3.x, used in [Atom Core](https://github.com/atom/atom), check out the [3.x branch](https://github.com/atom/space-pen/tree/3.x).**
+
+## Write markup on the final frontier
+
+SpacePen is a powerful but minimalistic client-side view framework for
+CoffeeScript. It combines the "view" and "controller" into a single jQuery
+object, whose markup is expressed with an embedded DSL similar to Markaby for
+Ruby.
+
+## Changes In Version 4
+
+This version of SpacePen depends on HTML 5 custom elements to support lifecycle
+hooks that previously depended on all DOM manipulation being performed via
+jQuery. The `afterAttach` and `beforeRemove` hooks have been replaced with
+`attached` and `detached` and their semantics have been altered.
+
+If you need to use SpacePen in an environment that doesn't support custom
+elements, consider using the previous major version or switching frameworks.
+
+## Basics
+
+View objects extend from the View class and have a @content class method where
+you express their HTML contents with an embedded markup DSL:
+
+```coffeescript
+class Spacecraft extends View
+  @content: ->
+    @div =>
+      @h1 "Spacecraft"
+      @ol =>
+        @li "Apollo"
+        @li "Soyuz"
+        @li "Space Shuttle"
+```
+
+Views descend from jQuery's prototype, so when you construct one you can call
+jQuery methods on it just as you would a DOM fragment created with `$(...)`.
+
+```coffeescript
+view = new Spacecraft
+view.find('ol').append('<li>Star Destroyer</li>')
+
+view.on 'click', 'li', ->
+  alert "They clicked on #{$(this).text()}"
+```
+
+But SpacePen views are more powerful than normal jQuery fragments because they
+let you define custom methods:
+
+```coffeescript
+class Spacecraft extends View
+  @content: -> ...
+
+  addSpacecraft: (name) ->
+    @find('ol').append "<li>#{name}</li>"
+
+
+view = new Spacecraft
+view.addSpacecraft "Enterprise"
+```
+
+You can also pass arguments on construction, which get passed to both the
+`@content` method and the view's constructor.
+
+```coffeescript
+class Spacecraft extends View
+  @content: (params) ->
+    @div =>
+      @h1 params.title
+      @ol =>
+        @li name for name in params.spacecraft
+
+view = new Spacecraft(title: "Space Weapons", spacecraft: ["TIE Fighter", "Death Star", "Warbird"])
+```
+
+Methods from the jQuery prototype can be gracefully overridden using `super`:
+
+```coffeescript
+class Spacecraft extends View
+  @content: -> ...
+
+  hide: ->
+    console.log "Hiding Spacecraft List"
+    super()
+```
+
+If you override the View class's constructor, ensure you call `super`.
+Alternatively, you can define an `initialize` method, which the constructor will
+call for you automatically with the constructor's arguments.
+
+```coffeescript
+class Spacecraft extends View
+  @content: -> ...
+
+  initialize: (params) ->
+    @title = params.title
+```
+
+## Outlets and Events
+
+SpacePen will automatically create named reference for any element with an
+`outlet` attribute. For example, if the `ol` element has an attribute
+`outlet=list`, the view object will have a `list` entry pointing to a jQuery
+wrapper for the `ol` element.
+
+```coffeescript
+class Spacecraft extends View
+  @content: ->
+    @div =>
+      @h1 "Spacecraft"
+      @ol outlet: "list", =>
+        @li "Apollo"
+        @li "Soyuz"
+        @li "Space Shuttle"
+
+  addSpacecraft: (name) ->
+    @list.append("<li>#{name}</li>")
+```
+
+Elements can also have event name attributes whose value references a custom
+method. For example, if a `button` element has an attribute
+`click=launchSpacecraft`, then SpacePen will invoke the `launchSpacecraft`
+method on the button's parent view when it is clicked:
+
+```coffeescript
+class Spacecraft extends View
+  @content: ->
+    @div =>
+      @h1 "Spacecraft"
+      @ol =>
+        @li click: 'launchSpacecraft', "Saturn V"
+
+  launchSpacecraft: (event, element) ->
+    console.log "Preparing #{element.name} for launch!"
+```
+## Markup DSL Details
+
+### Tag Methods (`@div`, `@h1`, etc.)
+
+As you've seen so far, the markup DSL is pretty straightforward. From the
+`@content` class method or any method it calls, just invoke instance methods
+named for the HTML tags you want to generate. There are 3 types of arguments you
+can pass to a tag method:
+
+* *Strings*: The string will be HTML-escaped and used as the text contents of the generated tag.
+
+* *Hashes*: The key-value pairs will be used as the attributes of the generated tag.
+
+* *Functions* (bound with `=>`): The function will be invoked in-between the open and closing tag to produce the HTML element's contents.
+
+If you need to emit a non-standard tag, you can use the `@tag(name, args...)`
+method to name the tag with a string:
+
+```coffeescript
+@tag 'bubble', type: "speech", => ...
+```
+
+### Text Methods
+
+* `@text(string)`: Emits the HTML-escaped string as text wherever it is called.
+
+* `@raw(string)`: Passes the given string through unescaped. Use this when you need to emit markup directly that was generated beforehand.
+
+## Subviews
+
+Subviews are a great way to make your view code more modular. The
+`@subview(name, view)` method takes a name and another view object. The view
+object will be inserted at the location of the call, and a reference with the
+given name will be wired to it from the parent view. A `parentView` reference
+will be created on the subview pointing at the parent.
+
+```coffeescript
+class Spacecraft extends View
+  @content: (params) ->
+    @div =>
+      @subview 'launchController', new LaunchController(countdown: params.countdown)
+      @h1 "Spacecraft"
+      ...
+```
+
+## Freeform Markup Generation
+
+You don't need a View class to use the SpacePen markup DSL. Call `View.render`
+with an unbound function (`->`, not `=>`) that calls tag methods, and it will
+return a document fragment for ad-hoc use. This method is also assigned to the
+`$$` global variable for convenience.
+
+```coffeescript
+view.list.append $$ ->
+  @li =>
+    @text "Starship"
+    @em "Enterprise"
+```
+
+## jQuery extensions
+
+### $.fn.view
+You can retrieve the view object for any DOM element by calling `view()` on it.
+This usually shouldn't be necessary, as most DOM manipulation will take place
+within the view itself using outlet references, but is occasionally helpful.
+
+```coffeescript
+view = new Spacecraft
+$('body').append(view)
+
+# assuming no other li elements on the DOM, for example purposes,
+# the following expression should be true
+$('li').view() == view
+```
+
+### Attached/Detached Hooks
+The `initialize` method is always called when the view is still a detached DOM
+fragment, before it is appended to the DOM. This is usually okay, but
+occasionally you'll have some initialization logic that depends on the view
+actually being on the DOM. For example, you may depend on applying a CSS rule
+before measuring an element's height.
+
+For these situations, use the `attached` hook. It will be called whenever your
+element is actually attached to the DOM. Past versions of SpacePen would also
+call this hook when your element was attached to another detached node, but that
+behavior is no longer supported.
+
+To be notified when your element is detached from the DOM, implement the
+`detached` hook.
+
+```coffeescript
+class Spacecraft extends View
+  @content: -> ...
+
+  attached: ->
+    console.log "With CSS applied, my height is", @height()
+
+  detached: ->
+    console.log "I have been detached."
+```
+
+## Hacking on SpacePen
+
+```sh
+git clone https://github.com/atom/space-pen.git
+cd space-pen
+npm install
+npm start
+```
+
+* Open http://localhost:1337 to run the specs
+* Open http://localhost:1337/benchmark to run the benchmarks
+* Open http://localhost:1337/examples to browse the examples
diff --git a/atom/packages/ex-mode/node_modules/space-pen/api.json b/atom/packages/ex-mode/node_modules/space-pen/api.json
new file mode 100644 (file)
index 0000000..619f572
--- /dev/null
@@ -0,0 +1,132 @@
+{
+  "classes": {
+    "View": {
+      "name": "View",
+      "superClass": "jQuery",
+      "filename": "src/space-pen.coffee",
+      "srcUrl": "https://github.com/atom/space-pen/blob/v5.1.1/src/space-pen.coffee#L75",
+      "sections": [],
+      "classMethods": [
+        {
+          "name": "subview",
+          "sectionName": null,
+          "srcUrl": "https://github.com/atom/space-pen/blob/v5.1.1/src/space-pen.coffee#L85",
+          "visibility": "Public",
+          "summary": "Add the given subview wired to an outlet with the given name",
+          "description": "Add the given subview wired to an outlet with the given name",
+          "arguments": [
+            {
+              "name": "name",
+              "description": "{String} name of the subview",
+              "type": "String",
+              "isOptional": false
+            },
+            {
+              "name": "view",
+              "description": "DOM element or jQuery node subview ",
+              "type": null,
+              "isOptional": false
+            }
+          ]
+        },
+        {
+          "name": "text",
+          "sectionName": null,
+          "srcUrl": "https://github.com/atom/space-pen/blob/v5.1.1/src/space-pen.coffee#L91",
+          "visibility": "Public",
+          "summary": "Add a text node with the given text content",
+          "description": "Add a text node with the given text content",
+          "arguments": [
+            {
+              "name": "string",
+              "description": "{String} text contents of the node ",
+              "type": "String",
+              "isOptional": false
+            }
+          ]
+        },
+        {
+          "name": "tag",
+          "sectionName": null,
+          "srcUrl": "https://github.com/atom/space-pen/blob/v5.1.1/src/space-pen.coffee#L97",
+          "visibility": "Public",
+          "summary": "Add a new tag with the given name",
+          "description": "Add a new tag with the given name",
+          "arguments": [
+            {
+              "name": "tagName",
+              "description": "{String} name of the tag like 'li', etc",
+              "type": "String",
+              "isOptional": false
+            },
+            {
+              "name": "args...",
+              "description": "other arguments ",
+              "type": null,
+              "isOptional": false
+            }
+          ]
+        },
+        {
+          "name": "raw",
+          "sectionName": null,
+          "srcUrl": "https://github.com/atom/space-pen/blob/v5.1.1/src/space-pen.coffee#L102",
+          "visibility": "Public",
+          "summary": "Add new child DOM nodes from the given raw HTML string.",
+          "description": "Add new child DOM nodes from the given raw HTML string.",
+          "arguments": [
+            {
+              "name": "string",
+              "description": "{String} HTML content ",
+              "type": "String",
+              "isOptional": false
+            }
+          ]
+        }
+      ],
+      "instanceMethods": [
+        {
+          "name": "preempt",
+          "sectionName": null,
+          "srcUrl": "https://github.com/atom/space-pen/blob/v5.1.1/src/space-pen.coffee#L205",
+          "visibility": "Public",
+          "summary": "Preempt events registered with jQuery's `::on`.",
+          "description": "Preempt events registered with jQuery's `::on`.",
+          "arguments": [
+            {
+              "name": "eventName",
+              "description": "A event name {String}.",
+              "type": "String",
+              "isOptional": false
+            },
+            {
+              "name": "handler",
+              "description": "A {Function} to execute when the eventName is triggered. ",
+              "type": "Function",
+              "isOptional": false
+            }
+          ]
+        }
+      ],
+      "classProperties": [],
+      "instanceProperties": [],
+      "visibility": "Public",
+      "summary": "View class that extends the jQuery prototype.",
+      "description": "View class that extends the jQuery prototype.\n\nExtending classes must implement a `@content` method.",
+      "examples": [
+        {
+          "description": "",
+          "lang": "coffee",
+          "code": "class Spacecraft extends View\n  @content: ->\n    @div =>\n      @h1 'Spacecraft'\n      @ol =>\n        @li 'Apollo'\n        @li 'Soyuz'\n        @li 'Space Shuttle'",
+          "raw": "```coffee\nclass Spacecraft extends View\n  @content: ->\n    @div =>\n      @h1 'Spacecraft'\n      @ol =>\n        @li 'Apollo'\n        @li 'Soyuz'\n        @li 'Space Shuttle'\n```"
+        },
+        {
+          "description": "Each view instance will have all the methods from the jQuery prototype\navailable on it.",
+          "lang": "coffee",
+          "code": "  craft = new Spacecraft()\n  craft.find('h1').text() # 'Spacecraft'\n  craft.appendTo(document.body) # View is now a child of the <body> tag",
+          "raw": "```coffee\n  craft = new Spacecraft()\n  craft.find('h1').text() # 'Spacecraft'\n  craft.appendTo(document.body) # View is now a child of the <body> tag\n```"
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/lib/space-pen.js b/atom/packages/ex-mode/node_modules/space-pen/lib/space-pen.js
new file mode 100644 (file)
index 0000000..f8ed4ba
--- /dev/null
@@ -0,0 +1,634 @@
+(function() {
+  var $, Builder, CustomElementPrototype, Events, Grim, JQueryEventAdd, SelfClosingTags, Tags, View, docEl, exports, idCounter, jQuery, matches, matchesSelector, registerElement, _,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  if (typeof require === 'function') {
+    _ = require('underscore-plus');
+    $ = jQuery = require('jquery');
+    Grim = require('grim');
+  } else {
+    _ = window._, jQuery = window.jQuery;
+    $ = jQuery;
+  }
+
+  Tags = 'a abbr address article aside audio b bdi bdo blockquote body button canvas\
+   caption cite code colgroup datalist dd del details dfn dialog div dl dt em\
+   fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 head header html i\
+   iframe ins kbd label legend li main map mark menu meter nav noscript object\
+   ol optgroup option output p pre progress q rp rt ruby s samp script section\
+   select small span strong style sub summary sup table tbody td textarea tfoot\
+   th thead time title tr u ul var video area base br col command embed hr img\
+   input keygen link meta param source track wbr'.split(/\s+/);
+
+  SelfClosingTags = {};
+
+  'area base br col command embed hr img input keygen link meta param\
+ source track wbr'.split(/\s+/).forEach(function(tag) {
+    return SelfClosingTags[tag] = true;
+  });
+
+  Events = 'blur change click dblclick error focus input keydown\
+   keypress keyup load mousedown mousemove mouseout mouseover\
+   mouseup resize scroll select submit unload'.split(/\s+/);
+
+  docEl = document.documentElement;
+
+  matches = docEl.matchesSelector || docEl.mozMatchesSelector || docEl.webkitMatchesSelector || docEl.oMatchesSelector || docEl.msMatchesSelector;
+
+  matchesSelector = matches ? (function(elem, selector) {
+    return matches.call(elem[0], selector);
+  }) : (function(elem, selector) {
+    return elem.is(selector);
+  });
+
+  idCounter = 0;
+
+  CustomElementPrototype = Object.create(HTMLElement.prototype);
+
+  CustomElementPrototype.attachedCallback = function() {
+    return typeof this.attached === "function" ? this.attached() : void 0;
+  };
+
+  CustomElementPrototype.detachedCallback = function() {
+    return typeof this.detached === "function" ? this.detached() : void 0;
+  };
+
+  if (window.__spacePenCustomElements == null) {
+    window.__spacePenCustomElements = {};
+  }
+
+  registerElement = function(tagName) {
+    var customTagName, _base;
+    customTagName = "space-pen-" + tagName;
+    if ((_base = window.__spacePenCustomElements)[customTagName] == null) {
+      _base[customTagName] = typeof document.registerElement === "function" ? document.registerElement(customTagName, {
+        prototype: Object.create(CustomElementPrototype),
+        "extends": tagName
+      }) : void 0;
+    }
+    return customTagName;
+  };
+
+  View = (function(_super) {
+    __extends(View, _super);
+
+    View.builderStack = null;
+
+    Tags.forEach(function(tagName) {
+      return View[tagName] = function() {
+        var args, _ref;
+        args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+        return (_ref = this.currentBuilder).tag.apply(_ref, [tagName].concat(__slice.call(args)));
+      };
+    });
+
+    View.subview = function(name, view) {
+      return this.currentBuilder.subview(name, view);
+    };
+
+    View.text = function(string) {
+      return this.currentBuilder.text(string);
+    };
+
+    View.tag = function() {
+      var args, tagName, _ref;
+      tagName = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      return (_ref = this.currentBuilder).tag.apply(_ref, [tagName].concat(__slice.call(args)));
+    };
+
+    View.raw = function(string) {
+      return this.currentBuilder.raw(string);
+    };
+
+    View.pushBuilder = function() {
+      var builder;
+      builder = new Builder;
+      if (this.builderStack == null) {
+        this.builderStack = [];
+      }
+      this.builderStack.push(builder);
+      return this.currentBuilder = builder;
+    };
+
+    View.popBuilder = function() {
+      this.currentBuilder = this.builderStack[this.builderStack.length - 2];
+      return this.builderStack.pop();
+    };
+
+    View.buildHtml = function(fn) {
+      var html, postProcessingSteps, _ref;
+      this.pushBuilder();
+      fn.call(this);
+      return _ref = this.popBuilder().buildHtml(), html = _ref[0], postProcessingSteps = _ref[1], _ref;
+    };
+
+    View.render = function(fn) {
+      var div, fragment, html, postProcessingSteps, step, _i, _len, _ref;
+      _ref = this.buildHtml(fn), html = _ref[0], postProcessingSteps = _ref[1];
+      div = document.createElement('div');
+      div.innerHTML = html;
+      fragment = $(div.childNodes);
+      for (_i = 0, _len = postProcessingSteps.length; _i < _len; _i++) {
+        step = postProcessingSteps[_i];
+        step(fragment);
+      }
+      return fragment;
+    };
+
+    View.prototype.element = null;
+
+    function View() {
+      var args, element, html, postProcessingSteps, step, treeWalker, _i, _len, _ref,
+        _this = this;
+      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+      if (typeof this.afterAttach === 'function') {
+        throw new Error("The ::afterAttach hook has been replaced by ::attached. See https://github.com/atom/space-pen#attacheddetached-hooks for details.");
+      }
+      if (typeof this.beforeRemove === 'function') {
+        throw new Error("The ::beforeRemove hook has been replaced by ::detached. See https://github.com/atom/space-pen#attacheddetached-hooks for details.");
+      }
+      if (this.element != null) {
+        jQuery.fn.init.call(this, this.element);
+      } else {
+        _ref = this.constructor.buildHtml(function() {
+          return this.content.apply(this, args);
+        }), html = _ref[0], postProcessingSteps = _ref[1];
+        jQuery.fn.init.call(this, html);
+        if (this.length !== 1) {
+          throw new Error("View markup must have a single root element");
+        }
+        this.element = this[0];
+        this.element.attached = function() {
+          return typeof _this.attached === "function" ? _this.attached() : void 0;
+        };
+        this.element.detached = function() {
+          return typeof _this.detached === "function" ? _this.detached() : void 0;
+        };
+      }
+      this.wireOutlets(this);
+      this.bindEventHandlers(this);
+      this.element.spacePenView = this;
+      treeWalker = document.createTreeWalker(this.element, NodeFilter.SHOW_ELEMENT);
+      while (element = treeWalker.nextNode()) {
+        element.spacePenView = this;
+      }
+      if (postProcessingSteps != null) {
+        for (_i = 0, _len = postProcessingSteps.length; _i < _len; _i++) {
+          step = postProcessingSteps[_i];
+          step(this);
+        }
+      }
+      if (typeof this.initialize === "function") {
+        this.initialize.apply(this, args);
+      }
+    }
+
+    View.prototype.buildHtml = function(params) {
+      var html, postProcessingSteps, _ref;
+      this.constructor.builder = new Builder;
+      this.constructor.content(params);
+      _ref = this.constructor.builder.buildHtml(), html = _ref[0], postProcessingSteps = _ref[1];
+      this.constructor.builder = null;
+      return postProcessingSteps;
+    };
+
+    View.prototype.wireOutlets = function(view) {
+      var element, outlet, _i, _len, _ref;
+      _ref = view[0].querySelectorAll('[outlet]');
+      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+        element = _ref[_i];
+        outlet = element.getAttribute('outlet');
+        view[outlet] = $(element);
+        element.removeAttribute('outlet');
+      }
+      return void 0;
+    };
+
+    View.prototype.bindEventHandlers = function(view) {
+      var element, eventName, methodName, selector, _fn, _i, _j, _len, _len1, _ref;
+      for (_i = 0, _len = Events.length; _i < _len; _i++) {
+        eventName = Events[_i];
+        selector = "[" + eventName + "]";
+        _ref = view[0].querySelectorAll(selector);
+        _fn = function(element) {
+          var methodName;
+          methodName = element.getAttribute(eventName);
+          element = $(element);
+          return element.on(eventName, function(event) {
+            return view[methodName](event, element);
+          });
+        };
+        for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
+          element = _ref[_j];
+          _fn(element);
+        }
+        if (matchesSelector(view, selector)) {
+          methodName = view[0].getAttribute(eventName);
+          (function(methodName) {
+            return view.on(eventName, function(event) {
+              return view[methodName](event, view);
+            });
+          })(methodName);
+        }
+      }
+      return void 0;
+    };
+
+    View.prototype.pushStack = function(elems) {
+      var ret;
+      ret = jQuery.merge(jQuery(), elems);
+      ret.prevObject = this;
+      ret.context = this.context;
+      return ret;
+    };
+
+    View.prototype.end = function() {
+      var _ref;
+      return (_ref = this.prevObject) != null ? _ref : jQuery(null);
+    };
+
+    View.prototype.preempt = function(eventName, handler) {
+      return View.__super__.preempt.call(this, eventName, handler);
+    };
+
+    return View;
+
+  })(jQuery);
+
+  Builder = (function() {
+    function Builder() {
+      this.document = [];
+      this.postProcessingSteps = [];
+    }
+
+    Builder.prototype.buildHtml = function() {
+      return [this.document.join(''), this.postProcessingSteps];
+    };
+
+    Builder.prototype.tag = function() {
+      var args, name, options;
+      name = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      options = this.extractOptions(args);
+      this.openTag(name, options.attributes);
+      if (SelfClosingTags.hasOwnProperty(name)) {
+        if ((options.text != null) || (options.content != null)) {
+          throw new Error("Self-closing tag " + name + " cannot have text or content");
+        }
+      } else {
+        if (typeof options.content === "function") {
+          options.content();
+        }
+        if (options.text) {
+          this.text(options.text);
+        }
+        return this.closeTag(name);
+      }
+    };
+
+    Builder.prototype.openTag = function(name, attributes) {
+      var attributeName, attributePairs, attributesString, value;
+      if (this.document.length === 0) {
+        if (attributes == null) {
+          attributes = {};
+        }
+        if (attributes.is == null) {
+          attributes.is = registerElement(name);
+        }
+      }
+      attributePairs = (function() {
+        var _results;
+        _results = [];
+        for (attributeName in attributes) {
+          value = attributes[attributeName];
+          _results.push("" + attributeName + "=\"" + value + "\"");
+        }
+        return _results;
+      })();
+      attributesString = attributePairs.length ? " " + attributePairs.join(" ") : "";
+      return this.document.push("<" + name + attributesString + ">");
+    };
+
+    Builder.prototype.closeTag = function(name) {
+      return this.document.push("</" + name + ">");
+    };
+
+    Builder.prototype.text = function(string) {
+      var escapedString;
+      escapedString = string.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+      return this.document.push(escapedString);
+    };
+
+    Builder.prototype.raw = function(string) {
+      return this.document.push(string);
+    };
+
+    Builder.prototype.subview = function(outletName, subview) {
+      var subviewId;
+      subviewId = "subview-" + (++idCounter);
+      this.tag('div', {
+        id: subviewId
+      });
+      return this.postProcessingSteps.push(function(view) {
+        view[outletName] = subview;
+        subview.parentView = view;
+        return view.find("div#" + subviewId).replaceWith(subview);
+      });
+    };
+
+    Builder.prototype.extractOptions = function(args) {
+      var arg, options, _i, _len;
+      options = {};
+      for (_i = 0, _len = args.length; _i < _len; _i++) {
+        arg = args[_i];
+        switch (typeof arg) {
+          case 'function':
+            options.content = arg;
+            break;
+          case 'string':
+          case 'number':
+            options.text = arg.toString();
+            break;
+          default:
+            options.attributes = arg;
+        }
+      }
+      return options;
+    };
+
+    return Builder;
+
+  })();
+
+  $.fn.view = function() {
+    var element, viewConstructorName;
+    if (element = this[0]) {
+      if ((element.__spacePenView != null) && !element.__allowViewAccess) {
+        viewConstructorName = element.__spacePenView.constructor.name;
+        if (Grim != null) {
+          Grim.deprecate("Accessing `" + viewConstructorName + "` via `$::view()` is deprecated. Use the raw DOM node or underlying model object instead.");
+        }
+      }
+      return element.spacePenView;
+    }
+  };
+
+  $.fn.views = function() {
+    return this.toArray().map(function(elt) {
+      var $elt, _ref;
+      $elt = $(elt);
+      return (_ref = $elt.view()) != null ? _ref : $elt;
+    });
+  };
+
+  $.fn.containingView = function() {
+    var element, view;
+    element = this[0];
+    while (element != null) {
+      if (view = element.spacePenView) {
+        return view;
+      }
+      element = element.parentNode;
+    }
+  };
+
+  $.fn.scrollBottom = function(newValue) {
+    if (newValue != null) {
+      return this.scrollTop(newValue - this.height());
+    } else {
+      return this.scrollTop() + this.height();
+    }
+  };
+
+  $.fn.scrollDown = function() {
+    return this.scrollTop(this.scrollTop() + $(window).height() / 20);
+  };
+
+  $.fn.scrollUp = function() {
+    return this.scrollTop(this.scrollTop() - $(window).height() / 20);
+  };
+
+  $.fn.scrollToTop = function() {
+    return this.scrollTop(0);
+  };
+
+  $.fn.scrollToBottom = function() {
+    return this.scrollTop(this.prop('scrollHeight'));
+  };
+
+  $.fn.scrollRight = function(newValue) {
+    if (newValue != null) {
+      return this.scrollLeft(newValue - this.width());
+    } else {
+      return this.scrollLeft() + this.width();
+    }
+  };
+
+  $.fn.pageUp = function() {
+    return this.scrollTop(this.scrollTop() - this.height());
+  };
+
+  $.fn.pageDown = function() {
+    return this.scrollTop(this.scrollTop() + this.height());
+  };
+
+  $.fn.isOnDom = function() {
+    return this.closest(document.body).length === 1;
+  };
+
+  $.fn.isVisible = function() {
+    return !this.isHidden();
+  };
+
+  $.fn.isHidden = function() {
+    var style;
+    style = this[0].style;
+    if (style.display === 'none' || !this.isOnDom()) {
+      return true;
+    } else if (style.display) {
+      return false;
+    } else {
+      return getComputedStyle(this[0]).display === 'none';
+    }
+  };
+
+  $.fn.isDisabled = function() {
+    return !!this.attr('disabled');
+  };
+
+  $.fn.enable = function() {
+    return this.removeAttr('disabled');
+  };
+
+  $.fn.disable = function() {
+    return this.attr('disabled', 'disabled');
+  };
+
+  $.fn.insertAt = function(index, element) {
+    var target;
+    target = this.children(":eq(" + index + ")");
+    if (target.length) {
+      return $(element).insertBefore(target);
+    } else {
+      return this.append(element);
+    }
+  };
+
+  $.fn.removeAt = function(index) {
+    return this.children(":eq(" + index + ")").remove();
+  };
+
+  $.fn.indexOf = function(child) {
+    return this.children().toArray().indexOf($(child)[0]);
+  };
+
+  $.fn.containsElement = function(element) {
+    return (element[0].compareDocumentPosition(this[0]) & 8) === 8;
+  };
+
+  $.fn.preempt = function(eventName, handler) {
+    var eventNameWithoutNamespace, handlers, wrappedHandler, _ref,
+      _this = this;
+    wrappedHandler = function() {
+      var args, e;
+      e = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      if (handler.apply(null, [e].concat(__slice.call(args))) === false) {
+        return e.stopImmediatePropagation();
+      }
+    };
+    this.on(eventName, wrappedHandler);
+    eventNameWithoutNamespace = eventName.split('.')[0];
+    handlers = (_ref = this.handlers()[eventNameWithoutNamespace]) != null ? _ref : [];
+    handlers.unshift(handlers.pop());
+    return {
+      off: function() {
+        return _this.off(eventName, wrappedHandler);
+      }
+    };
+  };
+
+  $.fn.handlers = function(eventName) {
+    var handlers, _ref, _ref1;
+    handlers = this.length ? (_ref = $._data(this[0], 'events')) != null ? _ref : {} : {};
+    if (arguments.length === 1) {
+      handlers = (_ref1 = handlers[eventName]) != null ? _ref1 : [];
+    }
+    return handlers;
+  };
+
+  $.fn.hasParent = function() {
+    return this.parent()[0] != null;
+  };
+
+  $.fn.hasFocus = function() {
+    return this.is(':focus') || this.is(':has(:focus)');
+  };
+
+  $.fn.flashError = function() {
+    var removeErrorClass,
+      _this = this;
+    this.addClass('error');
+    removeErrorClass = function() {
+      return _this.removeClass('error');
+    };
+    return window.setTimeout(removeErrorClass, 300);
+  };
+
+  $.fn.trueHeight = function() {
+    return this[0].getBoundingClientRect().height;
+  };
+
+  $.fn.trueWidth = function() {
+    return this[0].getBoundingClientRect().width;
+  };
+
+  $.fn.iconSize = function(size) {
+    return this.width(size).height(size).css('font-size', size);
+  };
+
+  $.fn.intValue = function() {
+    return parseInt(this.text());
+  };
+
+  $.Event.prototype.abortKeyBinding = function() {};
+
+  $.Event.prototype.currentTargetView = function() {
+    return $(this.currentTarget).containingView();
+  };
+
+  $.Event.prototype.targetView = function() {
+    return $(this.target).containingView();
+  };
+
+  View.prototype.subscribe = function() {
+    var message, _ref;
+    message = "The `::subscribe` method is no longer available on SpacePen views.\n\n";
+    if (arguments.length === 1) {
+      message += "To store multiple subscription objects for later disposal, add them to a\n`CompositeDisposable` instance (https://atom.io/docs/api/v0.150.0/CompositeDisposable)\nand call `.dispose()` on it explicitly in this view's `::detached` hook.";
+    } else {
+      if ((_ref = arguments[0]) != null ? _ref.jquery : void 0) {
+        message += "To subscribe to events on a jQuery object, use the traditional `::on` and\n`::off methods`.";
+      } else {
+        message += "To subscribe to events on an Atom object, use an explicit event-subscription\nmethod (starting with ::onDid* or ::onWill*).\n\nTo collect multiple subscription objects for later disposal, add them to a\n`CompositeDisposable` instance:\nhttps://atom.io/docs/api/v0.150.0/CompositeDisposable\n\nCall `.dispose()` on your `CompositeDisposable` in this view's `::detached` hook.";
+      }
+    }
+    throw new Error(message);
+  };
+
+  View.prototype.subscribeToCommand = function() {
+    throw new Error("The `::subscribeToCommand` method is no longer available on SpacePen views.\"\n\nPlease subscribe to commands via `atom.commands.add`:\nhttps://atom.io/docs/api/latest/CommandRegistry#instance-add\n\nCollect the returned subscription objects in a CompositeDisposable:\nhttps://atom.io/docs/api/latest/CompositeDisposable\n\nCall `.dispose()` on your `CompositeDisposable` in this view's `::detached` hook.");
+  };
+
+  $.fn.command = function(eventName, handler) {
+    throw new Error("The `::command` method is no longer available on SpacePen views.\"\n\nPlease subscribe to commands via `atom.commands.add`:\nhttps://atom.io/docs/api/latest/CommandRegistry#instance-add\n\nCollect the returned subscription objects in a CompositeDisposable:\nhttps://atom.io/docs/api/latest/CompositeDisposable\n\nCall `.dispose()` on your `CompositeDisposable` in this view's `::detached` hook.");
+  };
+
+  JQueryEventAdd = jQuery.event.add;
+
+  jQuery.event.add = function(elem, types, handler, data, selector) {
+    if (/\:/.test(types)) {
+      if (Grim != null) {
+        Grim.deprecate("Are you trying to listen for the '" + types + "' Atom command with `jQuery::on`?\n`jQuery::trigger` can no longer be used to listen for Atom commands. Please\nuse `atom.commands.add` instead. See the docs at\nhttps://atom.io/docs/api/latest/CommandRegistry#instance-add for details.");
+      }
+    }
+    return JQueryEventAdd.call(this, elem, types, handler, data, selector);
+  };
+
+  if ($.fn.originalTrigger == null) {
+    $.fn.originalTrigger = $.fn.trigger;
+    $.fn.trigger = function(eventName, data) {
+      if (typeof eventName === 'string' && /\:/.test(eventName) && (eventName !== 'cursor:moved' && eventName !== 'selection:changed' && eventName !== 'editor:display-updated')) {
+        if (Grim != null) {
+          Grim.deprecate("Are you trying to dispatch the '" + eventName + "' Atom command with `jQuery::trigger`?\n`jQuery::trigger` can no longer emit Atom commands as it will not correctly route\nthe command to its handlers. Please use `atom.commands.dispatch` instead.\nSee the docs at https://atom.io/docs/api/latest/CommandRegistry#instance-dispatch\nfor details.");
+        }
+      }
+      return this.originalTrigger(eventName, data);
+    };
+  }
+
+  $.fn.setTooltip = function() {
+    throw new Error("setTooltip is no longer available. Please use `atom.tooltips.add` instead.\nSee the docs at https://atom.io/docs/api/latest/TooltipManager#instance-add");
+  };
+
+  $.fn.destroyTooltip = $.fn.hideTooltip = function() {
+    throw new Error("destroyTooltip is no longer available. Please dispose the object returned\nfrom  `atom.tooltips.add` instead.\nSee the docs at https://atom.io/docs/api/latest/TooltipManager#instance-add");
+  };
+
+  exports = exports != null ? exports : this;
+
+  exports.View = View;
+
+  exports.jQuery = jQuery;
+
+  exports.$ = $;
+
+  exports.$$ = function(fn) {
+    return View.render.call(View, fn);
+  };
+
+  exports.$$$ = function(fn) {
+    return View.buildHtml.call(View, fn)[0];
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/LICENSE.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/LICENSE.md
new file mode 100644 (file)
index 0000000..4d231b4
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2014 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/README.md
new file mode 100644 (file)
index 0000000..c7a023c
--- /dev/null
@@ -0,0 +1,21 @@
+# Grim [![Build Status](https://travis-ci.org/atom/grim.svg)](https://travis-ci.org/atom/grim)
+
+Log deprecate calls
+
+## Installing
+
+```sh
+npm install grim
+```
+
+## Usage
+
+```javascript
+Grim = require('grim')
+
+function someOldMethod() {
+  Grim.deprecate("Use theNewMethod instead.")
+}
+```
+
+To view all calls to deprecated methods use `Grim.logDeprecations()` or get direct access to the deprecated calls by using `Grim.getDeprecations()`
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/lib/deprecation.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/lib/deprecation.js
new file mode 100644 (file)
index 0000000..8faa7ab
--- /dev/null
@@ -0,0 +1,156 @@
+(function() {
+  var Deprecation, SourceMapCache, convertLine;
+
+  convertLine = require('coffeestack').convertLine;
+
+  SourceMapCache = {};
+
+  module.exports = Deprecation = (function() {
+    Deprecation.getFunctionNameFromCallsite = function(callsite) {};
+
+    Deprecation.deserialize = function(_arg) {
+      var deprecation, fileName, lineNumber, message, stack, stacks, _i, _len;
+      message = _arg.message, fileName = _arg.fileName, lineNumber = _arg.lineNumber, stacks = _arg.stacks;
+      deprecation = new Deprecation(message, fileName, lineNumber);
+      for (_i = 0, _len = stacks.length; _i < _len; _i++) {
+        stack = stacks[_i];
+        deprecation.addStack(stack, stack.metadata);
+      }
+      return deprecation;
+    };
+
+    function Deprecation(message, fileName, lineNumber) {
+      this.message = message;
+      this.fileName = fileName;
+      this.lineNumber = lineNumber;
+      this.callCount = 0;
+      this.stackCount = 0;
+      this.stacks = {};
+      this.stackCallCounts = {};
+    }
+
+    Deprecation.prototype.getFunctionNameFromCallsite = function(callsite) {
+      var _ref, _ref1, _ref2;
+      if (callsite.functionName != null) {
+        return callsite.functionName;
+      }
+      if (callsite.isToplevel()) {
+        return (_ref = callsite.getFunctionName()) != null ? _ref : '<unknown>';
+      } else {
+        if (callsite.isConstructor()) {
+          return "new " + (callsite.getFunctionName());
+        } else if (callsite.getMethodName() && !callsite.getFunctionName()) {
+          return callsite.getMethodName();
+        } else {
+          return "" + (callsite.getTypeName()) + "." + ((_ref1 = (_ref2 = callsite.getMethodName()) != null ? _ref2 : callsite.getFunctionName()) != null ? _ref1 : '<anonymous>');
+        }
+      }
+    };
+
+    Deprecation.prototype.getLocationFromCallsite = function(callsite) {
+      var column, converted, fileName, line;
+      if (callsite.location != null) {
+        return callsite.location;
+      }
+      if (callsite.isNative()) {
+        return "native";
+      } else if (callsite.isEval()) {
+        return "eval at " + (this.getLocationFromCallsite(callsite.getEvalOrigin()));
+      } else {
+        fileName = callsite.getFileName();
+        line = callsite.getLineNumber();
+        column = callsite.getColumnNumber();
+        if (/\.coffee$/.test(fileName)) {
+          if (converted = convertLine(fileName, line, column, SourceMapCache)) {
+            line = converted.line, column = converted.column;
+          }
+        }
+        return "" + fileName + ":" + line + ":" + column;
+      }
+    };
+
+    Deprecation.prototype.getFileNameFromCallSite = function(callsite) {
+      var _ref;
+      return (_ref = callsite.fileName) != null ? _ref : callsite.getFileName();
+    };
+
+    Deprecation.prototype.getOriginName = function() {
+      return this.originName;
+    };
+
+    Deprecation.prototype.getMessage = function() {
+      return this.message;
+    };
+
+    Deprecation.prototype.getStacks = function() {
+      var location, parsedStack, parsedStacks, stack, _ref;
+      parsedStacks = [];
+      _ref = this.stacks;
+      for (location in _ref) {
+        stack = _ref[location];
+        parsedStack = this.parseStack(stack);
+        parsedStack.callCount = this.stackCallCounts[location];
+        parsedStack.metadata = stack.metadata;
+        parsedStacks.push(parsedStack);
+      }
+      return parsedStacks;
+    };
+
+    Deprecation.prototype.getStackCount = function() {
+      return this.stackCount;
+    };
+
+    Deprecation.prototype.getCallCount = function() {
+      return this.callCount;
+    };
+
+    Deprecation.prototype.addStack = function(stack, metadata) {
+      var callerLocation, _base, _base1;
+      if (this.originName == null) {
+        this.originName = this.getFunctionNameFromCallsite(stack[0]);
+      }
+      if (this.fileName == null) {
+        this.fileName = this.getFileNameFromCallSite(stack[0]);
+      }
+      if (this.lineNumber == null) {
+        this.lineNumber = typeof (_base = stack[0]).getLineNumber === "function" ? _base.getLineNumber() : void 0;
+      }
+      this.callCount++;
+      stack.metadata = metadata;
+      callerLocation = this.getLocationFromCallsite(stack[1]);
+      if (this.stacks[callerLocation] == null) {
+        this.stacks[callerLocation] = stack;
+        this.stackCount++;
+      }
+      if ((_base1 = this.stackCallCounts)[callerLocation] == null) {
+        _base1[callerLocation] = 0;
+      }
+      return this.stackCallCounts[callerLocation]++;
+    };
+
+    Deprecation.prototype.parseStack = function(stack) {
+      return stack.map((function(_this) {
+        return function(callsite) {
+          return {
+            functionName: _this.getFunctionNameFromCallsite(callsite),
+            location: _this.getLocationFromCallsite(callsite),
+            fileName: _this.getFileNameFromCallSite(callsite)
+          };
+        };
+      })(this));
+    };
+
+    Deprecation.prototype.serialize = function() {
+      return {
+        message: this.getMessage(),
+        lineNumber: this.lineNumber,
+        fileName: this.fileName,
+        stacks: this.getStacks()
+      };
+    };
+
+    return Deprecation;
+
+  })();
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/lib/grim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/lib/grim.js
new file mode 100644 (file)
index 0000000..52ca968
--- /dev/null
@@ -0,0 +1,105 @@
+(function() {
+  var Deprecation, Emitter, grim;
+
+  Emitter = require('emissary').Emitter;
+
+  Deprecation = require('./deprecation');
+
+  if (global.__grim__ == null) {
+    grim = global.__grim__ = {
+      deprecations: {},
+      includeDeprecatedAPIs: true,
+      getDeprecations: function() {
+        var deprecation, deprecations, deprecationsByLineNumber, deprecationsByPackage, fileName, lineNumber, packageName, _ref;
+        deprecations = [];
+        _ref = grim.deprecations;
+        for (fileName in _ref) {
+          deprecationsByLineNumber = _ref[fileName];
+          for (lineNumber in deprecationsByLineNumber) {
+            deprecationsByPackage = deprecationsByLineNumber[lineNumber];
+            for (packageName in deprecationsByPackage) {
+              deprecation = deprecationsByPackage[packageName];
+              deprecations.push(deprecation);
+            }
+          }
+        }
+        return deprecations;
+      },
+      getDeprecationsLength: function() {
+        return this.getDeprecations().length;
+      },
+      clearDeprecations: function() {
+        grim.deprecations = {};
+      },
+      logDeprecations: function() {
+        var deprecation, deprecations, _i, _len;
+        deprecations = this.getDeprecations();
+        deprecations.sort(function(a, b) {
+          return b.getCallCount() - a.getCallCount();
+        });
+        console.warn("\nCalls to deprecated functions\n-----------------------------");
+        for (_i = 0, _len = deprecations.length; _i < _len; _i++) {
+          deprecation = deprecations[_i];
+          console.warn("(" + (deprecation.getCallCount()) + ") " + (deprecation.getOriginName()) + " : " + (deprecation.getMessage()), deprecation);
+        }
+      },
+      deprecate: function(message, metadata) {
+        var deprecation, deprecationSite, error, fileName, lineNumber, originalPrepareStackTrace, originalStackTraceLimit, packageName, stack, _base, _base1, _base2, _ref;
+        originalStackTraceLimit = Error.stackTraceLimit;
+        Error.stackTraceLimit = 7;
+        error = new Error;
+        Error.captureStackTrace(error);
+        Error.stackTraceLimit = originalStackTraceLimit;
+        originalPrepareStackTrace = Error.prepareStackTrace;
+        Error.prepareStackTrace = function(error, stack) {
+          return stack;
+        };
+        stack = error.stack.slice(1);
+        Error.prepareStackTrace = originalPrepareStackTrace;
+        deprecationSite = stack[0];
+        fileName = deprecationSite.getFileName();
+        lineNumber = deprecationSite.getLineNumber();
+        packageName = (_ref = metadata != null ? metadata.packageName : void 0) != null ? _ref : "";
+        if ((_base = grim.deprecations)[fileName] == null) {
+          _base[fileName] = {};
+        }
+        if ((_base1 = grim.deprecations[fileName])[lineNumber] == null) {
+          _base1[lineNumber] = {};
+        }
+        if ((_base2 = grim.deprecations[fileName][lineNumber])[packageName] == null) {
+          _base2[packageName] = new Deprecation(message);
+        }
+        deprecation = grim.deprecations[fileName][lineNumber][packageName];
+        deprecation.addStack(stack, metadata);
+        grim.emit("updated", deprecation);
+      },
+      addSerializedDeprecation: function(serializedDeprecation) {
+        var deprecation, fileName, lineNumber, message, packageName, stack, stacks, _base, _base1, _base2, _i, _len, _ref, _ref1, _ref2;
+        deprecation = Deprecation.deserialize(serializedDeprecation);
+        message = deprecation.getMessage();
+        fileName = deprecation.fileName, lineNumber = deprecation.lineNumber;
+        stacks = deprecation.getStacks();
+        packageName = (_ref = (_ref1 = stacks[0]) != null ? (_ref2 = _ref1.metadata) != null ? _ref2.packageName : void 0 : void 0) != null ? _ref : "";
+        if ((_base = grim.deprecations)[fileName] == null) {
+          _base[fileName] = {};
+        }
+        if ((_base1 = grim.deprecations[fileName])[lineNumber] == null) {
+          _base1[lineNumber] = {};
+        }
+        if ((_base2 = grim.deprecations[fileName][lineNumber])[packageName] == null) {
+          _base2[packageName] = new Deprecation(message, fileName, lineNumber);
+        }
+        deprecation = grim.deprecations[fileName][lineNumber][packageName];
+        for (_i = 0, _len = stacks.length; _i < _len; _i++) {
+          stack = stacks[_i];
+          deprecation.addStack(stack, stack.metadata);
+        }
+        grim.emit("updated", deprecation);
+      }
+    };
+    Emitter.extend(grim);
+  }
+
+  module.exports = global.__grim__;
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/README.md
new file mode 100644 (file)
index 0000000..f3f64b7
--- /dev/null
@@ -0,0 +1,20 @@
+# CoffeeStack [![Build Status](https://travis-ci.org/kevinsawicki/coffeestack.png)](https://travis-ci.org/kevinsawicki/coffeestack)
+
+Module to convert JavaScript stack traces to CoffeeScript stack traces.
+
+## Installing
+
+```sh
+npm install coffeestack
+```
+
+## Using
+
+```coffeescript
+{convertStackTrace} = require 'coffeestack'
+
+try
+  throw new Error('this is an error')
+catch error
+  console.error(convertStackTrace(error.stack))
+```
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/index.js
new file mode 100644 (file)
index 0000000..5ad299b
--- /dev/null
@@ -0,0 +1,172 @@
+(function() {
+  var CoffeeScript, CoffeeScriptVersion, SourceMapConsumer, cachePath, compileSourceMap, convertLine, convertStackTrace, crypto, fs, getCachePath, getCachedSourceMap, getSourceMapPosition, loadCoffeeScript, path, writeSourceMapToCache;
+
+  crypto = require('crypto');
+
+  fs = require('fs-plus');
+
+  path = require('path');
+
+  CoffeeScriptVersion = null;
+
+  CoffeeScript = null;
+
+  SourceMapConsumer = null;
+
+  cachePath = null;
+
+  getCachePath = function(code) {
+    var digest;
+    if (!cachePath) {
+      return;
+    }
+    digest = crypto.createHash('sha1').update(code, 'utf8').digest('hex');
+    if (CoffeeScriptVersion == null) {
+      CoffeeScriptVersion = require('coffee-script/package.json').version;
+    }
+    return path.join(cachePath, CoffeeScriptVersion, "" + digest + ".json");
+  };
+
+  getCachedSourceMap = function(codeCachePath) {
+    if (fs.isFileSync(codeCachePath)) {
+      try {
+        return fs.readFileSync(codeCachePath, 'utf8');
+      } catch (_error) {}
+    }
+  };
+
+  writeSourceMapToCache = function(codeCachePath, sourceMap) {
+    if (codeCachePath) {
+      try {
+        fs.writeFileSync(codeCachePath, sourceMap);
+      } catch (_error) {}
+    }
+  };
+
+  loadCoffeeScript = function() {
+    var coffee, coffeePrepareStackTrace;
+    coffee = require('coffee-script');
+    coffeePrepareStackTrace = Error.prepareStackTrace;
+    if (coffeePrepareStackTrace != null) {
+      Error.prepareStackTrace = function(error, stack) {
+        var coffeeError;
+        try {
+          return coffeePrepareStackTrace(error, stack);
+        } catch (_error) {
+          coffeeError = _error;
+          return stack;
+        }
+      };
+    }
+    return coffee;
+  };
+
+  compileSourceMap = function(code, filePath, codeCachePath) {
+    var v3SourceMap;
+    if (CoffeeScript == null) {
+      CoffeeScript = loadCoffeeScript();
+    }
+    v3SourceMap = CoffeeScript.compile(code, {
+      sourceMap: true,
+      filename: filePath
+    }).v3SourceMap;
+    writeSourceMapToCache(codeCachePath, v3SourceMap);
+    return v3SourceMap;
+  };
+
+  getSourceMapPosition = function(sourceMapContents, line, column) {
+    var sourceMap;
+    if (SourceMapConsumer == null) {
+      SourceMapConsumer = require('source-map').SourceMapConsumer;
+    }
+    sourceMap = new SourceMapConsumer(sourceMapContents);
+    return sourceMap.originalPositionFor({
+      line: line,
+      column: column
+    });
+  };
+
+  convertLine = function(filePath, line, column, sourceMaps) {
+    var code, codeCachePath, position, source, sourceMapContents, sourceMapPath;
+    if (sourceMaps == null) {
+      sourceMaps = {};
+    }
+    try {
+      if (!(sourceMapContents = sourceMaps[filePath])) {
+        if (path.extname(filePath) === '.js') {
+          sourceMapPath = "" + filePath + ".map";
+          sourceMapContents = fs.readFileSync(sourceMapPath, 'utf8');
+        } else {
+          code = fs.readFileSync(filePath, 'utf8');
+          codeCachePath = getCachePath(code);
+          sourceMapContents = getCachedSourceMap(codeCachePath);
+          if (sourceMapContents == null) {
+            sourceMapContents = compileSourceMap(code, filePath, codeCachePath);
+          }
+        }
+      }
+      if (sourceMapContents) {
+        sourceMaps[filePath] = sourceMapContents;
+        position = getSourceMapPosition(sourceMapContents, line, column);
+        if ((position.line != null) && (position.column != null)) {
+          if (position.source && position.source !== '.') {
+            source = path.resolve(filePath, '..', position.source);
+          } else {
+            source = filePath;
+          }
+          return {
+            line: position.line,
+            column: position.column,
+            source: source
+          };
+        }
+      }
+    } catch (_error) {}
+    return null;
+  };
+
+  convertStackTrace = function(stackTrace, sourceMaps) {
+    var atLinePattern, column, convertedLines, filePath, line, mappedLine, match, stackTraceLine, _i, _len, _ref;
+    if (sourceMaps == null) {
+      sourceMaps = {};
+    }
+    if (!stackTrace) {
+      return stackTrace;
+    }
+    convertedLines = [];
+    atLinePattern = /^(\s+at .* )\((.*):(\d+):(\d+)\)/;
+    _ref = stackTrace.split('\n');
+    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+      stackTraceLine = _ref[_i];
+      if (match = atLinePattern.exec(stackTraceLine)) {
+        filePath = match[2];
+        line = match[3];
+        column = match[4];
+        if (path.extname(filePath) === '.js') {
+          mappedLine = convertLine(filePath, line, column, sourceMaps);
+        }
+        if (mappedLine != null) {
+          convertedLines.push("" + match[1] + "(" + mappedLine.source + ":" + mappedLine.line + ":" + mappedLine.column + ")");
+        } else {
+          convertedLines.push(stackTraceLine);
+        }
+      } else {
+        convertedLines.push(stackTraceLine);
+      }
+    }
+    return convertedLines.join('\n');
+  };
+
+  exports.convertLine = convertLine;
+
+  exports.convertStackTrace = convertStackTrace;
+
+  exports.setCacheDirectory = function(newCachePath) {
+    return cachePath = newCachePath;
+  };
+
+  exports.getCacheDirectory = function() {
+    return cachePath;
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/.bin/cake b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/.bin/cake
new file mode 120000 (symlink)
index 0000000..d95f32a
--- /dev/null
@@ -0,0 +1 @@
+../coffee-script/bin/cake
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/.bin/coffee b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/.bin/coffee
new file mode 120000 (symlink)
index 0000000..b57f275
--- /dev/null
@@ -0,0 +1 @@
+../coffee-script/bin/coffee
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/.npmignore b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/.npmignore
new file mode 100644 (file)
index 0000000..21e430d
--- /dev/null
@@ -0,0 +1,11 @@
+*.coffee
+*.html
+.DS_Store
+.git*
+Cakefile
+documentation/
+examples/
+extras/coffee-script.js
+raw/
+src/
+test/
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/CNAME b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/CNAME
new file mode 100644 (file)
index 0000000..faadabe
--- /dev/null
@@ -0,0 +1 @@
+coffeescript.org
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/CONTRIBUTING.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/CONTRIBUTING.md
new file mode 100644 (file)
index 0000000..5ea4c5f
--- /dev/null
@@ -0,0 +1,9 @@
+## How to contribute to CoffeeScript
+
+* Before you open a ticket or send a pull request, [search](https://github.com/jashkenas/coffeescript/issues) for previous discussions about the same feature or issue. Add to the earlier ticket if you find one.
+
+* Before sending a pull request for a feature, be sure to have [tests](https://github.com/jashkenas/coffeescript/tree/master/test).
+
+* Use the same coding style as the rest of the [codebase](https://github.com/jashkenas/coffeescript/tree/master/src). If you're just getting started with CoffeeScript, there's a nice [style guide](https://github.com/polarmobile/coffeescript-style-guide).
+
+* In your pull request, do not add documentation to `index.html` or re-build the minified `coffee-script.js` file. We'll do those things before cutting a new release.
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/LICENSE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/LICENSE
new file mode 100644 (file)
index 0000000..4d09b4d
--- /dev/null
@@ -0,0 +1,22 @@
+Copyright (c) 2009-2014 Jeremy Ashkenas
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/README b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/README
new file mode 100644 (file)
index 0000000..37d7bbf
--- /dev/null
@@ -0,0 +1,50 @@
+            {
+         }   }   {
+        {   {  }  }
+         }   }{  {
+        {  }{  }  }                    _____       __  __
+       { }{ }{  { }                   / ____|     / _|/ _|
+     .- { { }  { }} -.               | |     ___ | |_| |_ ___  ___
+    (  { } { } { } }  )              | |    / _ \|  _|  _/ _ \/ _ \
+    |`-..________ ..-'|              | |___| (_) | | | ||  __/  __/
+    |                 |               \_____\___/|_| |_| \___|\___|
+    |                 ;--.
+    |                (__  \            _____           _       _
+    |                 | )  )          / ____|         (_)     | |
+    |                 |/  /          | (___   ___ _ __ _ _ __ | |_
+    |                 (  /            \___ \ / __| '__| | '_ \| __|
+    |                 |/              ____) | (__| |  | | |_) | |_
+    |                 |              |_____/ \___|_|  |_| .__/ \__|
+     `-.._________..-'                                  | |
+                                                        |_|
+
+
+  CoffeeScript is a little language that compiles into JavaScript.
+
+  If you have the Node Package Manager installed:
+  npm install -g coffee-script
+  (Leave off the -g if you don't wish to install globally.)
+
+  Or, if you don't wish to use npm:
+  sudo bin/cake install
+
+  Execute a script:
+  coffee /path/to/script.coffee
+
+  Compile a script:
+  coffee -c /path/to/script.coffee
+
+  For documentation, usage, and examples, see:
+  http://coffeescript.org/
+
+  To suggest a feature, report a bug, or general discussion:
+  http://github.com/jashkenas/coffeescript/issues/
+
+  If you'd like to chat, drop by #coffeescript on Freenode IRC,
+  or on webchat.freenode.net.
+
+  The source repository:
+  git://github.com/jashkenas/coffeescript.git
+
+  Top 100 contributors are listed here:
+  http://github.com/jashkenas/coffeescript/contributors
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/README.md
new file mode 100644 (file)
index 0000000..90f6788
--- /dev/null
@@ -0,0 +1,60 @@
+            {
+         }   }   {
+        {   {  }  }
+         }   }{  {
+        {  }{  }  }                    _____       __  __
+       { }{ }{  { }                   / ____|     / _|/ _|
+     .- { { }  { }} -.               | |     ___ | |_| |_ ___  ___
+    (  { } { } { } }  )              | |    / _ \|  _|  _/ _ \/ _ \
+    |`-..________ ..-'|              | |___| (_) | | | ||  __/  __/
+    |                 |               \_____\___/|_| |_| \___|\___|
+    |                 ;--.
+    |                (__  \            _____           _       _
+    |                 | )  )          / ____|         (_)     | |
+    |                 |/  /          | (___   ___ _ __ _ _ __ | |_
+    |                 (  /            \___ \ / __| '__| | '_ \| __|
+    |                 |/              ____) | (__| |  | | |_) | |_
+    |                 |              |_____/ \___|_|  |_| .__/ \__|
+     `-.._________..-'                                  | |
+                                                        |_|
+
+CoffeeScript is a little language that compiles into JavaScript.
+
+## Installation
+
+If you have the node package manager, npm, installed:
+
+```shell
+npm install -g coffee-script
+```
+
+Leave off the `-g` if you don't wish to install globally. If you don't wish to use npm:
+
+```shell
+git clone https://github.com/jashkenas/coffeescript.git
+sudo coffeescript/bin/cake install
+```
+
+## Getting Started
+
+Execute a script:
+
+```shell
+coffee /path/to/script.coffee
+```
+
+Compile a script:
+
+```shell
+coffee -c /path/to/script.coffee
+```
+
+For documentation, usage, and examples, see: http://coffeescript.org/
+
+To suggest a feature or report a bug: http://github.com/jashkenas/coffeescript/issues
+
+If you'd like to chat, drop by #coffeescript on Freenode IRC.
+
+The source repository: https://github.com/jashkenas/coffeescript.git
+
+Our lovely and talented contributors are listed here: http://github.com/jashkenas/coffeescript/contributors
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/bin/cake b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/bin/cake
new file mode 100755 (executable)
index 0000000..5965f4e
--- /dev/null
@@ -0,0 +1,7 @@
+#!/usr/bin/env node
+
+var path = require('path');
+var fs   = require('fs');
+var lib  = path.join(path.dirname(fs.realpathSync(__filename)), '../lib');
+
+require(lib + '/coffee-script/cake').run();
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/bin/coffee b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/bin/coffee
new file mode 100755 (executable)
index 0000000..3d1d71c
--- /dev/null
@@ -0,0 +1,7 @@
+#!/usr/bin/env node
+
+var path = require('path');
+var fs   = require('fs');
+var lib  = path.join(path.dirname(fs.realpathSync(__filename)), '../lib');
+
+require(lib + '/coffee-script/command').run();
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/browser.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/browser.js
new file mode 100644 (file)
index 0000000..da2830d
--- /dev/null
@@ -0,0 +1,134 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var CoffeeScript, compile, runScripts,
+    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
+
+  CoffeeScript = require('./coffee-script');
+
+  CoffeeScript.require = require;
+
+  compile = CoffeeScript.compile;
+
+  CoffeeScript["eval"] = function(code, options) {
+    if (options == null) {
+      options = {};
+    }
+    if (options.bare == null) {
+      options.bare = true;
+    }
+    return eval(compile(code, options));
+  };
+
+  CoffeeScript.run = function(code, options) {
+    if (options == null) {
+      options = {};
+    }
+    options.bare = true;
+    options.shiftLine = true;
+    return Function(compile(code, options))();
+  };
+
+  if (typeof window === "undefined" || window === null) {
+    return;
+  }
+
+  if ((typeof btoa !== "undefined" && btoa !== null) && (typeof JSON !== "undefined" && JSON !== null) && (typeof unescape !== "undefined" && unescape !== null) && (typeof encodeURIComponent !== "undefined" && encodeURIComponent !== null)) {
+    compile = function(code, options) {
+      var js, v3SourceMap, _ref;
+      if (options == null) {
+        options = {};
+      }
+      options.sourceMap = true;
+      options.inline = true;
+      _ref = CoffeeScript.compile(code, options), js = _ref.js, v3SourceMap = _ref.v3SourceMap;
+      return "" + js + "\n//# sourceMappingURL=data:application/json;base64," + (btoa(unescape(encodeURIComponent(v3SourceMap)))) + "\n//# sourceURL=coffeescript";
+    };
+  }
+
+  CoffeeScript.load = function(url, callback, options, hold) {
+    var xhr;
+    if (options == null) {
+      options = {};
+    }
+    if (hold == null) {
+      hold = false;
+    }
+    options.sourceFiles = [url];
+    xhr = window.ActiveXObject ? new window.ActiveXObject('Microsoft.XMLHTTP') : new window.XMLHttpRequest();
+    xhr.open('GET', url, true);
+    if ('overrideMimeType' in xhr) {
+      xhr.overrideMimeType('text/plain');
+    }
+    xhr.onreadystatechange = function() {
+      var param, _ref;
+      if (xhr.readyState === 4) {
+        if ((_ref = xhr.status) === 0 || _ref === 200) {
+          param = [xhr.responseText, options];
+          if (!hold) {
+            CoffeeScript.run.apply(CoffeeScript, param);
+          }
+        } else {
+          throw new Error("Could not load " + url);
+        }
+        if (callback) {
+          return callback(param);
+        }
+      }
+    };
+    return xhr.send(null);
+  };
+
+  runScripts = function() {
+    var coffees, coffeetypes, execute, i, index, s, script, scripts, _fn, _i, _len;
+    scripts = window.document.getElementsByTagName('script');
+    coffeetypes = ['text/coffeescript', 'text/literate-coffeescript'];
+    coffees = (function() {
+      var _i, _len, _ref, _results;
+      _results = [];
+      for (_i = 0, _len = scripts.length; _i < _len; _i++) {
+        s = scripts[_i];
+        if (_ref = s.type, __indexOf.call(coffeetypes, _ref) >= 0) {
+          _results.push(s);
+        }
+      }
+      return _results;
+    })();
+    index = 0;
+    execute = function() {
+      var param;
+      param = coffees[index];
+      if (param instanceof Array) {
+        CoffeeScript.run.apply(CoffeeScript, param);
+        index++;
+        return execute();
+      }
+    };
+    _fn = function(script, i) {
+      var options;
+      options = {
+        literate: script.type === coffeetypes[1]
+      };
+      if (script.src) {
+        return CoffeeScript.load(script.src, function(param) {
+          coffees[i] = param;
+          return execute();
+        }, options, true);
+      } else {
+        options.sourceFiles = ['embedded'];
+        return coffees[i] = [script.innerHTML, options];
+      }
+    };
+    for (i = _i = 0, _len = coffees.length; _i < _len; i = ++_i) {
+      script = coffees[i];
+      _fn(script, i);
+    }
+    return execute();
+  };
+
+  if (window.addEventListener) {
+    window.addEventListener('DOMContentLoaded', runScripts, false);
+  } else {
+    window.attachEvent('onload', runScripts);
+  }
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/cake.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/cake.js
new file mode 100644 (file)
index 0000000..94ecd4c
--- /dev/null
@@ -0,0 +1,114 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var CoffeeScript, cakefileDirectory, fatalError, fs, helpers, missingTask, oparse, options, optparse, path, printTasks, switches, tasks;
+
+  fs = require('fs');
+
+  path = require('path');
+
+  helpers = require('./helpers');
+
+  optparse = require('./optparse');
+
+  CoffeeScript = require('./coffee-script');
+
+  CoffeeScript.register();
+
+  tasks = {};
+
+  options = {};
+
+  switches = [];
+
+  oparse = null;
+
+  helpers.extend(global, {
+    task: function(name, description, action) {
+      var _ref;
+      if (!action) {
+        _ref = [description, action], action = _ref[0], description = _ref[1];
+      }
+      return tasks[name] = {
+        name: name,
+        description: description,
+        action: action
+      };
+    },
+    option: function(letter, flag, description) {
+      return switches.push([letter, flag, description]);
+    },
+    invoke: function(name) {
+      if (!tasks[name]) {
+        missingTask(name);
+      }
+      return tasks[name].action(options);
+    }
+  });
+
+  exports.run = function() {
+    var arg, args, e, _i, _len, _ref, _results;
+    global.__originalDirname = fs.realpathSync('.');
+    process.chdir(cakefileDirectory(__originalDirname));
+    args = process.argv.slice(2);
+    CoffeeScript.run(fs.readFileSync('Cakefile').toString(), {
+      filename: 'Cakefile'
+    });
+    oparse = new optparse.OptionParser(switches);
+    if (!args.length) {
+      return printTasks();
+    }
+    try {
+      options = oparse.parse(args);
+    } catch (_error) {
+      e = _error;
+      return fatalError("" + e);
+    }
+    _ref = options["arguments"];
+    _results = [];
+    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+      arg = _ref[_i];
+      _results.push(invoke(arg));
+    }
+    return _results;
+  };
+
+  printTasks = function() {
+    var cakefilePath, desc, name, relative, spaces, task;
+    relative = path.relative || path.resolve;
+    cakefilePath = path.join(relative(__originalDirname, process.cwd()), 'Cakefile');
+    console.log("" + cakefilePath + " defines the following tasks:\n");
+    for (name in tasks) {
+      task = tasks[name];
+      spaces = 20 - name.length;
+      spaces = spaces > 0 ? Array(spaces + 1).join(' ') : '';
+      desc = task.description ? "# " + task.description : '';
+      console.log("cake " + name + spaces + " " + desc);
+    }
+    if (switches.length) {
+      return console.log(oparse.help());
+    }
+  };
+
+  fatalError = function(message) {
+    console.error(message + '\n');
+    console.log('To see a list of all tasks/options, run "cake"');
+    return process.exit(1);
+  };
+
+  missingTask = function(task) {
+    return fatalError("No such task: " + task);
+  };
+
+  cakefileDirectory = function(dir) {
+    var parent;
+    if (fs.existsSync(path.join(dir, 'Cakefile'))) {
+      return dir;
+    }
+    parent = path.normalize(path.join(dir, '..'));
+    if (parent !== dir) {
+      return cakefileDirectory(parent);
+    }
+    throw new Error("Cakefile not found in " + (process.cwd()));
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/coffee-script.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/coffee-script.js
new file mode 100644 (file)
index 0000000..9061c7e
--- /dev/null
@@ -0,0 +1,347 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var Lexer, SourceMap, compile, ext, formatSourcePosition, fs, getSourceMap, helpers, lexer, parser, path, sourceMaps, vm, withPrettyErrors, _base, _i, _len, _ref,
+    __hasProp = {}.hasOwnProperty,
+    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
+
+  fs = require('fs');
+
+  vm = require('vm');
+
+  path = require('path');
+
+  Lexer = require('./lexer').Lexer;
+
+  parser = require('./parser').parser;
+
+  helpers = require('./helpers');
+
+  SourceMap = require('./sourcemap');
+
+  exports.VERSION = '1.8.0';
+
+  exports.FILE_EXTENSIONS = ['.coffee', '.litcoffee', '.coffee.md'];
+
+  exports.helpers = helpers;
+
+  withPrettyErrors = function(fn) {
+    return function(code, options) {
+      var err;
+      if (options == null) {
+        options = {};
+      }
+      try {
+        return fn.call(this, code, options);
+      } catch (_error) {
+        err = _error;
+        throw helpers.updateSyntaxError(err, code, options.filename);
+      }
+    };
+  };
+
+  exports.compile = compile = withPrettyErrors(function(code, options) {
+    var answer, currentColumn, currentLine, extend, fragment, fragments, header, js, map, merge, newLines, _i, _len;
+    merge = helpers.merge, extend = helpers.extend;
+    options = extend({}, options);
+    if (options.sourceMap) {
+      map = new SourceMap;
+    }
+    fragments = parser.parse(lexer.tokenize(code, options)).compileToFragments(options);
+    currentLine = 0;
+    if (options.header) {
+      currentLine += 1;
+    }
+    if (options.shiftLine) {
+      currentLine += 1;
+    }
+    currentColumn = 0;
+    js = "";
+    for (_i = 0, _len = fragments.length; _i < _len; _i++) {
+      fragment = fragments[_i];
+      if (options.sourceMap) {
+        if (fragment.locationData) {
+          map.add([fragment.locationData.first_line, fragment.locationData.first_column], [currentLine, currentColumn], {
+            noReplace: true
+          });
+        }
+        newLines = helpers.count(fragment.code, "\n");
+        currentLine += newLines;
+        if (newLines) {
+          currentColumn = fragment.code.length - (fragment.code.lastIndexOf("\n") + 1);
+        } else {
+          currentColumn += fragment.code.length;
+        }
+      }
+      js += fragment.code;
+    }
+    if (options.header) {
+      header = "Generated by CoffeeScript " + this.VERSION;
+      js = "// " + header + "\n" + js;
+    }
+    if (options.sourceMap) {
+      answer = {
+        js: js
+      };
+      answer.sourceMap = map;
+      answer.v3SourceMap = map.generate(options, code);
+      return answer;
+    } else {
+      return js;
+    }
+  });
+
+  exports.tokens = withPrettyErrors(function(code, options) {
+    return lexer.tokenize(code, options);
+  });
+
+  exports.nodes = withPrettyErrors(function(source, options) {
+    if (typeof source === 'string') {
+      return parser.parse(lexer.tokenize(source, options));
+    } else {
+      return parser.parse(source);
+    }
+  });
+
+  exports.run = function(code, options) {
+    var answer, dir, mainModule, _ref;
+    if (options == null) {
+      options = {};
+    }
+    mainModule = require.main;
+    mainModule.filename = process.argv[1] = options.filename ? fs.realpathSync(options.filename) : '.';
+    mainModule.moduleCache && (mainModule.moduleCache = {});
+    dir = options.filename ? path.dirname(fs.realpathSync(options.filename)) : fs.realpathSync('.');
+    mainModule.paths = require('module')._nodeModulePaths(dir);
+    if (!helpers.isCoffee(mainModule.filename) || require.extensions) {
+      answer = compile(code, options);
+      code = (_ref = answer.js) != null ? _ref : answer;
+    }
+    return mainModule._compile(code, mainModule.filename);
+  };
+
+  exports["eval"] = function(code, options) {
+    var Module, Script, js, k, o, r, sandbox, v, _i, _len, _module, _ref, _ref1, _require;
+    if (options == null) {
+      options = {};
+    }
+    if (!(code = code.trim())) {
+      return;
+    }
+    Script = vm.Script;
+    if (Script) {
+      if (options.sandbox != null) {
+        if (options.sandbox instanceof Script.createContext().constructor) {
+          sandbox = options.sandbox;
+        } else {
+          sandbox = Script.createContext();
+          _ref = options.sandbox;
+          for (k in _ref) {
+            if (!__hasProp.call(_ref, k)) continue;
+            v = _ref[k];
+            sandbox[k] = v;
+          }
+        }
+        sandbox.global = sandbox.root = sandbox.GLOBAL = sandbox;
+      } else {
+        sandbox = global;
+      }
+      sandbox.__filename = options.filename || 'eval';
+      sandbox.__dirname = path.dirname(sandbox.__filename);
+      if (!(sandbox !== global || sandbox.module || sandbox.require)) {
+        Module = require('module');
+        sandbox.module = _module = new Module(options.modulename || 'eval');
+        sandbox.require = _require = function(path) {
+          return Module._load(path, _module, true);
+        };
+        _module.filename = sandbox.__filename;
+        _ref1 = Object.getOwnPropertyNames(require);
+        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+          r = _ref1[_i];
+          if (r !== 'paths') {
+            _require[r] = require[r];
+          }
+        }
+        _require.paths = _module.paths = Module._nodeModulePaths(process.cwd());
+        _require.resolve = function(request) {
+          return Module._resolveFilename(request, _module);
+        };
+      }
+    }
+    o = {};
+    for (k in options) {
+      if (!__hasProp.call(options, k)) continue;
+      v = options[k];
+      o[k] = v;
+    }
+    o.bare = true;
+    js = compile(code, o);
+    if (sandbox === global) {
+      return vm.runInThisContext(js);
+    } else {
+      return vm.runInContext(js, sandbox);
+    }
+  };
+
+  exports.register = function() {
+    return require('./register');
+  };
+
+  if (require.extensions) {
+    _ref = this.FILE_EXTENSIONS;
+    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+      ext = _ref[_i];
+      if ((_base = require.extensions)[ext] == null) {
+        _base[ext] = function() {
+          throw new Error("Use CoffeeScript.register() or require the coffee-script/register module to require " + ext + " files.");
+        };
+      }
+    }
+  }
+
+  exports._compileFile = function(filename, sourceMap) {
+    var answer, err, raw, stripped;
+    if (sourceMap == null) {
+      sourceMap = false;
+    }
+    raw = fs.readFileSync(filename, 'utf8');
+    stripped = raw.charCodeAt(0) === 0xFEFF ? raw.substring(1) : raw;
+    try {
+      answer = compile(stripped, {
+        filename: filename,
+        sourceMap: sourceMap,
+        literate: helpers.isLiterate(filename)
+      });
+    } catch (_error) {
+      err = _error;
+      throw helpers.updateSyntaxError(err, stripped, filename);
+    }
+    return answer;
+  };
+
+  lexer = new Lexer;
+
+  parser.lexer = {
+    lex: function() {
+      var tag, token;
+      token = this.tokens[this.pos++];
+      if (token) {
+        tag = token[0], this.yytext = token[1], this.yylloc = token[2];
+        this.errorToken = token.origin || token;
+        this.yylineno = this.yylloc.first_line;
+      } else {
+        tag = '';
+      }
+      return tag;
+    },
+    setInput: function(tokens) {
+      this.tokens = tokens;
+      return this.pos = 0;
+    },
+    upcomingInput: function() {
+      return "";
+    }
+  };
+
+  parser.yy = require('./nodes');
+
+  parser.yy.parseError = function(message, _arg) {
+    var errorLoc, errorTag, errorText, errorToken, token, tokens, _ref1;
+    token = _arg.token;
+    _ref1 = parser.lexer, errorToken = _ref1.errorToken, tokens = _ref1.tokens;
+    errorTag = errorToken[0], errorText = errorToken[1], errorLoc = errorToken[2];
+    errorText = errorToken === tokens[tokens.length - 1] ? 'end of input' : errorTag === 'INDENT' || errorTag === 'OUTDENT' ? 'indentation' : helpers.nameWhitespaceCharacter(errorText);
+    return helpers.throwSyntaxError("unexpected " + errorText, errorLoc);
+  };
+
+  formatSourcePosition = function(frame, getSourceMapping) {
+    var as, column, fileLocation, fileName, functionName, isConstructor, isMethodCall, line, methodName, source, tp, typeName;
+    fileName = void 0;
+    fileLocation = '';
+    if (frame.isNative()) {
+      fileLocation = "native";
+    } else {
+      if (frame.isEval()) {
+        fileName = frame.getScriptNameOrSourceURL();
+        if (!fileName) {
+          fileLocation = "" + (frame.getEvalOrigin()) + ", ";
+        }
+      } else {
+        fileName = frame.getFileName();
+      }
+      fileName || (fileName = "<anonymous>");
+      line = frame.getLineNumber();
+      column = frame.getColumnNumber();
+      source = getSourceMapping(fileName, line, column);
+      fileLocation = source ? "" + fileName + ":" + source[0] + ":" + source[1] : "" + fileName + ":" + line + ":" + column;
+    }
+    functionName = frame.getFunctionName();
+    isConstructor = frame.isConstructor();
+    isMethodCall = !(frame.isToplevel() || isConstructor);
+    if (isMethodCall) {
+      methodName = frame.getMethodName();
+      typeName = frame.getTypeName();
+      if (functionName) {
+        tp = as = '';
+        if (typeName && functionName.indexOf(typeName)) {
+          tp = "" + typeName + ".";
+        }
+        if (methodName && functionName.indexOf("." + methodName) !== functionName.length - methodName.length - 1) {
+          as = " [as " + methodName + "]";
+        }
+        return "" + tp + functionName + as + " (" + fileLocation + ")";
+      } else {
+        return "" + typeName + "." + (methodName || '<anonymous>') + " (" + fileLocation + ")";
+      }
+    } else if (isConstructor) {
+      return "new " + (functionName || '<anonymous>') + " (" + fileLocation + ")";
+    } else if (functionName) {
+      return "" + functionName + " (" + fileLocation + ")";
+    } else {
+      return fileLocation;
+    }
+  };
+
+  sourceMaps = {};
+
+  getSourceMap = function(filename) {
+    var answer, _ref1;
+    if (sourceMaps[filename]) {
+      return sourceMaps[filename];
+    }
+    if (_ref1 = path != null ? path.extname(filename) : void 0, __indexOf.call(exports.FILE_EXTENSIONS, _ref1) < 0) {
+      return;
+    }
+    answer = exports._compileFile(filename, true);
+    return sourceMaps[filename] = answer.sourceMap;
+  };
+
+  Error.prepareStackTrace = function(err, stack) {
+    var frame, frames, getSourceMapping;
+    getSourceMapping = function(filename, line, column) {
+      var answer, sourceMap;
+      sourceMap = getSourceMap(filename);
+      if (sourceMap) {
+        answer = sourceMap.sourceLocation([line - 1, column - 1]);
+      }
+      if (answer) {
+        return [answer[0] + 1, answer[1] + 1];
+      } else {
+        return null;
+      }
+    };
+    frames = (function() {
+      var _j, _len1, _results;
+      _results = [];
+      for (_j = 0, _len1 = stack.length; _j < _len1; _j++) {
+        frame = stack[_j];
+        if (frame.getFunction() === exports.run) {
+          break;
+        }
+        _results.push("  at " + (formatSourcePosition(frame, getSourceMapping)));
+      }
+      return _results;
+    })();
+    return "" + (err.toString()) + "\n" + (frames.join('\n')) + "\n";
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/command.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/command.js
new file mode 100644 (file)
index 0000000..357653b
--- /dev/null
@@ -0,0 +1,572 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var BANNER, CoffeeScript, EventEmitter, SWITCHES, compileJoin, compileOptions, compilePath, compileScript, compileStdio, exec, findDirectoryIndex, forkNode, fs, helpers, hidden, joinTimeout, mkdirp, notSources, optionParser, optparse, opts, outputPath, parseOptions, path, printLine, printTokens, printWarn, removeSource, removeSourceDir, silentUnlink, sourceCode, sources, spawn, timeLog, usage, useWinPathSep, version, wait, watch, watchDir, watchedDirs, writeJs, _ref,
+    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
+
+  fs = require('fs');
+
+  path = require('path');
+
+  helpers = require('./helpers');
+
+  optparse = require('./optparse');
+
+  CoffeeScript = require('./coffee-script');
+
+  mkdirp = require('mkdirp');
+
+  _ref = require('child_process'), spawn = _ref.spawn, exec = _ref.exec;
+
+  EventEmitter = require('events').EventEmitter;
+
+  useWinPathSep = path.sep === '\\';
+
+  helpers.extend(CoffeeScript, new EventEmitter);
+
+  printLine = function(line) {
+    return process.stdout.write(line + '\n');
+  };
+
+  printWarn = function(line) {
+    return process.stderr.write(line + '\n');
+  };
+
+  hidden = function(file) {
+    return /^\.|~$/.test(file);
+  };
+
+  BANNER = 'Usage: coffee [options] path/to/script.coffee -- [args]\n\nIf called without options, `coffee` will run your script.';
+
+  SWITCHES = [['-b', '--bare', 'compile without a top-level function wrapper'], ['-c', '--compile', 'compile to JavaScript and save as .js files'], ['-e', '--eval', 'pass a string from the command line as input'], ['-h', '--help', 'display this help message'], ['-i', '--interactive', 'run an interactive CoffeeScript REPL'], ['-j', '--join [FILE]', 'concatenate the source CoffeeScript before compiling'], ['-m', '--map', 'generate source map and save as .js.map files'], ['-n', '--nodes', 'print out the parse tree that the parser produces'], ['--nodejs [ARGS]', 'pass options directly to the "node" binary'], ['--no-header', 'suppress the "Generated by" header'], ['-o', '--output [DIR]', 'set the output directory for compiled JavaScript'], ['-p', '--print', 'print out the compiled JavaScript'], ['-s', '--stdio', 'listen for and compile scripts over stdio'], ['-l', '--literate', 'treat stdio as literate style coffee-script'], ['-t', '--tokens', 'print out the tokens that the lexer/rewriter produce'], ['-v', '--version', 'display the version number'], ['-w', '--watch', 'watch scripts for changes and rerun commands']];
+
+  opts = {};
+
+  sources = [];
+
+  sourceCode = [];
+
+  notSources = {};
+
+  watchedDirs = {};
+
+  optionParser = null;
+
+  exports.run = function() {
+    var literals, replCliOpts, source, _i, _len, _ref1, _results;
+    parseOptions();
+    replCliOpts = {
+      useGlobal: true
+    };
+    if (opts.nodejs) {
+      return forkNode();
+    }
+    if (opts.help) {
+      return usage();
+    }
+    if (opts.version) {
+      return version();
+    }
+    if (opts.interactive) {
+      return require('./repl').start(replCliOpts);
+    }
+    if (opts.stdio) {
+      return compileStdio();
+    }
+    if (opts["eval"]) {
+      return compileScript(null, opts["arguments"][0]);
+    }
+    if (!opts["arguments"].length) {
+      return require('./repl').start(replCliOpts);
+    }
+    literals = opts.run ? opts["arguments"].splice(1) : [];
+    process.argv = process.argv.slice(0, 2).concat(literals);
+    process.argv[0] = 'coffee';
+    if (opts.output) {
+      opts.output = path.resolve(opts.output);
+    }
+    if (opts.join) {
+      opts.join = path.resolve(opts.join);
+      console.error('\nThe --join option is deprecated and will be removed in a future version.\n\nIf for some reason it\'s necessary to share local variables between files,\nreplace...\n\n    $ coffee --compile --join bundle.js -- a.coffee b.coffee c.coffee\n\nwith...\n\n    $ cat a.coffee b.coffee c.coffee | coffee --compile --stdio > bundle.js\n');
+    }
+    _ref1 = opts["arguments"];
+    _results = [];
+    for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+      source = _ref1[_i];
+      source = path.resolve(source);
+      _results.push(compilePath(source, true, source));
+    }
+    return _results;
+  };
+
+  compilePath = function(source, topLevel, base) {
+    var code, err, file, files, stats, _i, _len, _results;
+    if (__indexOf.call(sources, source) >= 0 || watchedDirs[source] || !topLevel && (notSources[source] || hidden(source))) {
+      return;
+    }
+    try {
+      stats = fs.statSync(source);
+    } catch (_error) {
+      err = _error;
+      if (err.code === 'ENOENT') {
+        console.error("File not found: " + source);
+        process.exit(1);
+      }
+      throw err;
+    }
+    if (stats.isDirectory()) {
+      if (path.basename(source) === 'node_modules') {
+        notSources[source] = true;
+        return;
+      }
+      if (opts.run) {
+        compilePath(findDirectoryIndex(source), topLevel, base);
+        return;
+      }
+      if (opts.watch) {
+        watchDir(source, base);
+      }
+      try {
+        files = fs.readdirSync(source);
+      } catch (_error) {
+        err = _error;
+        if (err.code === 'ENOENT') {
+          return;
+        } else {
+          throw err;
+        }
+      }
+      _results = [];
+      for (_i = 0, _len = files.length; _i < _len; _i++) {
+        file = files[_i];
+        _results.push(compilePath(path.join(source, file), false, base));
+      }
+      return _results;
+    } else if (topLevel || helpers.isCoffee(source)) {
+      sources.push(source);
+      sourceCode.push(null);
+      delete notSources[source];
+      if (opts.watch) {
+        watch(source, base);
+      }
+      try {
+        code = fs.readFileSync(source);
+      } catch (_error) {
+        err = _error;
+        if (err.code === 'ENOENT') {
+          return;
+        } else {
+          throw err;
+        }
+      }
+      return compileScript(source, code.toString(), base);
+    } else {
+      return notSources[source] = true;
+    }
+  };
+
+  findDirectoryIndex = function(source) {
+    var err, ext, index, _i, _len, _ref1;
+    _ref1 = CoffeeScript.FILE_EXTENSIONS;
+    for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+      ext = _ref1[_i];
+      index = path.join(source, "index" + ext);
+      try {
+        if ((fs.statSync(index)).isFile()) {
+          return index;
+        }
+      } catch (_error) {
+        err = _error;
+        if (err.code !== 'ENOENT') {
+          throw err;
+        }
+      }
+    }
+    console.error("Missing index.coffee or index.litcoffee in " + source);
+    return process.exit(1);
+  };
+
+  compileScript = function(file, input, base) {
+    var compiled, err, message, o, options, t, task;
+    if (base == null) {
+      base = null;
+    }
+    o = opts;
+    options = compileOptions(file, base);
+    try {
+      t = task = {
+        file: file,
+        input: input,
+        options: options
+      };
+      CoffeeScript.emit('compile', task);
+      if (o.tokens) {
+        return printTokens(CoffeeScript.tokens(t.input, t.options));
+      } else if (o.nodes) {
+        return printLine(CoffeeScript.nodes(t.input, t.options).toString().trim());
+      } else if (o.run) {
+        CoffeeScript.register();
+        return CoffeeScript.run(t.input, t.options);
+      } else if (o.join && t.file !== o.join) {
+        if (helpers.isLiterate(file)) {
+          t.input = helpers.invertLiterate(t.input);
+        }
+        sourceCode[sources.indexOf(t.file)] = t.input;
+        return compileJoin();
+      } else {
+        compiled = CoffeeScript.compile(t.input, t.options);
+        t.output = compiled;
+        if (o.map) {
+          t.output = compiled.js;
+          t.sourceMap = compiled.v3SourceMap;
+        }
+        CoffeeScript.emit('success', task);
+        if (o.print) {
+          return printLine(t.output.trim());
+        } else if (o.compile || o.map) {
+          return writeJs(base, t.file, t.output, options.jsPath, t.sourceMap);
+        }
+      }
+    } catch (_error) {
+      err = _error;
+      CoffeeScript.emit('failure', err, task);
+      if (CoffeeScript.listeners('failure').length) {
+        return;
+      }
+      message = err.stack || ("" + err);
+      if (o.watch) {
+        return printLine(message + '\x07');
+      } else {
+        printWarn(message);
+        return process.exit(1);
+      }
+    }
+  };
+
+  compileStdio = function() {
+    var code, stdin;
+    code = '';
+    stdin = process.openStdin();
+    stdin.on('data', function(buffer) {
+      if (buffer) {
+        return code += buffer.toString();
+      }
+    });
+    return stdin.on('end', function() {
+      return compileScript(null, code);
+    });
+  };
+
+  joinTimeout = null;
+
+  compileJoin = function() {
+    if (!opts.join) {
+      return;
+    }
+    if (!sourceCode.some(function(code) {
+      return code === null;
+    })) {
+      clearTimeout(joinTimeout);
+      return joinTimeout = wait(100, function() {
+        return compileScript(opts.join, sourceCode.join('\n'), opts.join);
+      });
+    }
+  };
+
+  watch = function(source, base) {
+    var compile, compileTimeout, err, prevStats, rewatch, startWatcher, watchErr, watcher;
+    watcher = null;
+    prevStats = null;
+    compileTimeout = null;
+    watchErr = function(err) {
+      if (err.code !== 'ENOENT') {
+        throw err;
+      }
+      if (__indexOf.call(sources, source) < 0) {
+        return;
+      }
+      try {
+        rewatch();
+        return compile();
+      } catch (_error) {
+        removeSource(source, base);
+        return compileJoin();
+      }
+    };
+    compile = function() {
+      clearTimeout(compileTimeout);
+      return compileTimeout = wait(25, function() {
+        return fs.stat(source, function(err, stats) {
+          if (err) {
+            return watchErr(err);
+          }
+          if (prevStats && stats.size === prevStats.size && stats.mtime.getTime() === prevStats.mtime.getTime()) {
+            return rewatch();
+          }
+          prevStats = stats;
+          return fs.readFile(source, function(err, code) {
+            if (err) {
+              return watchErr(err);
+            }
+            compileScript(source, code.toString(), base);
+            return rewatch();
+          });
+        });
+      });
+    };
+    startWatcher = function() {
+      return watcher = fs.watch(source).on('change', compile).on('error', function(err) {
+        if (err.code !== 'EPERM') {
+          throw err;
+        }
+        return removeSource(source, base);
+      });
+    };
+    rewatch = function() {
+      if (watcher != null) {
+        watcher.close();
+      }
+      return startWatcher();
+    };
+    try {
+      return startWatcher();
+    } catch (_error) {
+      err = _error;
+      return watchErr(err);
+    }
+  };
+
+  watchDir = function(source, base) {
+    var err, readdirTimeout, startWatcher, stopWatcher, watcher;
+    watcher = null;
+    readdirTimeout = null;
+    startWatcher = function() {
+      return watcher = fs.watch(source).on('error', function(err) {
+        if (err.code !== 'EPERM') {
+          throw err;
+        }
+        return stopWatcher();
+      }).on('change', function() {
+        clearTimeout(readdirTimeout);
+        return readdirTimeout = wait(25, function() {
+          var err, file, files, _i, _len, _results;
+          try {
+            files = fs.readdirSync(source);
+          } catch (_error) {
+            err = _error;
+            if (err.code !== 'ENOENT') {
+              throw err;
+            }
+            return stopWatcher();
+          }
+          _results = [];
+          for (_i = 0, _len = files.length; _i < _len; _i++) {
+            file = files[_i];
+            _results.push(compilePath(path.join(source, file), false, base));
+          }
+          return _results;
+        });
+      });
+    };
+    stopWatcher = function() {
+      watcher.close();
+      return removeSourceDir(source, base);
+    };
+    watchedDirs[source] = true;
+    try {
+      return startWatcher();
+    } catch (_error) {
+      err = _error;
+      if (err.code !== 'ENOENT') {
+        throw err;
+      }
+    }
+  };
+
+  removeSourceDir = function(source, base) {
+    var file, sourcesChanged, _i, _len;
+    delete watchedDirs[source];
+    sourcesChanged = false;
+    for (_i = 0, _len = sources.length; _i < _len; _i++) {
+      file = sources[_i];
+      if (!(source === path.dirname(file))) {
+        continue;
+      }
+      removeSource(file, base);
+      sourcesChanged = true;
+    }
+    if (sourcesChanged) {
+      return compileJoin();
+    }
+  };
+
+  removeSource = function(source, base) {
+    var index;
+    index = sources.indexOf(source);
+    sources.splice(index, 1);
+    sourceCode.splice(index, 1);
+    if (!opts.join) {
+      silentUnlink(outputPath(source, base));
+      silentUnlink(outputPath(source, base, '.js.map'));
+      return timeLog("removed " + source);
+    }
+  };
+
+  silentUnlink = function(path) {
+    var err, _ref1;
+    try {
+      return fs.unlinkSync(path);
+    } catch (_error) {
+      err = _error;
+      if ((_ref1 = err.code) !== 'ENOENT' && _ref1 !== 'EPERM') {
+        throw err;
+      }
+    }
+  };
+
+  outputPath = function(source, base, extension) {
+    var basename, dir, srcDir;
+    if (extension == null) {
+      extension = ".js";
+    }
+    basename = helpers.baseFileName(source, true, useWinPathSep);
+    srcDir = path.dirname(source);
+    if (!opts.output) {
+      dir = srcDir;
+    } else if (source === base) {
+      dir = opts.output;
+    } else {
+      dir = path.join(opts.output, path.relative(base, srcDir));
+    }
+    return path.join(dir, basename + extension);
+  };
+
+  writeJs = function(base, sourcePath, js, jsPath, generatedSourceMap) {
+    var compile, jsDir, sourceMapPath;
+    if (generatedSourceMap == null) {
+      generatedSourceMap = null;
+    }
+    sourceMapPath = outputPath(sourcePath, base, ".js.map");
+    jsDir = path.dirname(jsPath);
+    compile = function() {
+      if (opts.compile) {
+        if (js.length <= 0) {
+          js = ' ';
+        }
+        if (generatedSourceMap) {
+          js = "" + js + "\n//# sourceMappingURL=" + (helpers.baseFileName(sourceMapPath, false, useWinPathSep)) + "\n";
+        }
+        fs.writeFile(jsPath, js, function(err) {
+          if (err) {
+            printLine(err.message);
+            return process.exit(1);
+          } else if (opts.compile && opts.watch) {
+            return timeLog("compiled " + sourcePath);
+          }
+        });
+      }
+      if (generatedSourceMap) {
+        return fs.writeFile(sourceMapPath, generatedSourceMap, function(err) {
+          if (err) {
+            printLine("Could not write source map: " + err.message);
+            return process.exit(1);
+          }
+        });
+      }
+    };
+    return fs.exists(jsDir, function(itExists) {
+      if (itExists) {
+        return compile();
+      } else {
+        return mkdirp(jsDir, compile);
+      }
+    });
+  };
+
+  wait = function(milliseconds, func) {
+    return setTimeout(func, milliseconds);
+  };
+
+  timeLog = function(message) {
+    return console.log("" + ((new Date).toLocaleTimeString()) + " - " + message);
+  };
+
+  printTokens = function(tokens) {
+    var strings, tag, token, value;
+    strings = (function() {
+      var _i, _len, _results;
+      _results = [];
+      for (_i = 0, _len = tokens.length; _i < _len; _i++) {
+        token = tokens[_i];
+        tag = token[0];
+        value = token[1].toString().replace(/\n/, '\\n');
+        _results.push("[" + tag + " " + value + "]");
+      }
+      return _results;
+    })();
+    return printLine(strings.join(' '));
+  };
+
+  parseOptions = function() {
+    var o;
+    optionParser = new optparse.OptionParser(SWITCHES, BANNER);
+    o = opts = optionParser.parse(process.argv.slice(2));
+    o.compile || (o.compile = !!o.output);
+    o.run = !(o.compile || o.print || o.map);
+    return o.print = !!(o.print || (o["eval"] || o.stdio && o.compile));
+  };
+
+  compileOptions = function(filename, base) {
+    var answer, cwd, jsDir, jsPath;
+    answer = {
+      filename: filename,
+      literate: opts.literate || helpers.isLiterate(filename),
+      bare: opts.bare,
+      header: opts.compile && !opts['no-header'],
+      sourceMap: opts.map
+    };
+    if (filename) {
+      if (base) {
+        cwd = process.cwd();
+        jsPath = outputPath(filename, base);
+        jsDir = path.dirname(jsPath);
+        answer = helpers.merge(answer, {
+          jsPath: jsPath,
+          sourceRoot: path.relative(jsDir, cwd),
+          sourceFiles: [path.relative(cwd, filename)],
+          generatedFile: helpers.baseFileName(jsPath, false, useWinPathSep)
+        });
+      } else {
+        answer = helpers.merge(answer, {
+          sourceRoot: "",
+          sourceFiles: [helpers.baseFileName(filename, false, useWinPathSep)],
+          generatedFile: helpers.baseFileName(filename, true, useWinPathSep) + ".js"
+        });
+      }
+    }
+    return answer;
+  };
+
+  forkNode = function() {
+    var args, nodeArgs, p;
+    nodeArgs = opts.nodejs.split(/\s+/);
+    args = process.argv.slice(1);
+    args.splice(args.indexOf('--nodejs'), 2);
+    p = spawn(process.execPath, nodeArgs.concat(args), {
+      cwd: process.cwd(),
+      env: process.env,
+      customFds: [0, 1, 2]
+    });
+    return p.on('exit', function(code) {
+      return process.exit(code);
+    });
+  };
+
+  usage = function() {
+    return printLine((new optparse.OptionParser(SWITCHES, BANNER)).help());
+  };
+
+  version = function() {
+    return printLine("CoffeeScript version " + CoffeeScript.VERSION);
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/grammar.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/grammar.js
new file mode 100644 (file)
index 0000000..cfcab24
--- /dev/null
@@ -0,0 +1,631 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var Parser, alt, alternatives, grammar, name, o, operators, token, tokens, unwrap;
+
+  Parser = require('jison').Parser;
+
+  unwrap = /^function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/;
+
+  o = function(patternString, action, options) {
+    var addLocationDataFn, match, patternCount;
+    patternString = patternString.replace(/\s{2,}/g, ' ');
+    patternCount = patternString.split(' ').length;
+    if (!action) {
+      return [patternString, '$$ = $1;', options];
+    }
+    action = (match = unwrap.exec(action)) ? match[1] : "(" + action + "())";
+    action = action.replace(/\bnew /g, '$&yy.');
+    action = action.replace(/\b(?:Block\.wrap|extend)\b/g, 'yy.$&');
+    addLocationDataFn = function(first, last) {
+      if (!last) {
+        return "yy.addLocationDataFn(@" + first + ")";
+      } else {
+        return "yy.addLocationDataFn(@" + first + ", @" + last + ")";
+      }
+    };
+    action = action.replace(/LOC\(([0-9]*)\)/g, addLocationDataFn('$1'));
+    action = action.replace(/LOC\(([0-9]*),\s*([0-9]*)\)/g, addLocationDataFn('$1', '$2'));
+    return [patternString, "$$ = " + (addLocationDataFn(1, patternCount)) + "(" + action + ");", options];
+  };
+
+  grammar = {
+    Root: [
+      o('', function() {
+        return new Block;
+      }), o('Body')
+    ],
+    Body: [
+      o('Line', function() {
+        return Block.wrap([$1]);
+      }), o('Body TERMINATOR Line', function() {
+        return $1.push($3);
+      }), o('Body TERMINATOR')
+    ],
+    Line: [o('Expression'), o('Statement')],
+    Statement: [
+      o('Return'), o('Comment'), o('STATEMENT', function() {
+        return new Literal($1);
+      })
+    ],
+    Expression: [o('Value'), o('Invocation'), o('Code'), o('Operation'), o('Assign'), o('If'), o('Try'), o('While'), o('For'), o('Switch'), o('Class'), o('Throw')],
+    Block: [
+      o('INDENT OUTDENT', function() {
+        return new Block;
+      }), o('INDENT Body OUTDENT', function() {
+        return $2;
+      })
+    ],
+    Identifier: [
+      o('IDENTIFIER', function() {
+        return new Literal($1);
+      })
+    ],
+    AlphaNumeric: [
+      o('NUMBER', function() {
+        return new Literal($1);
+      }), o('STRING', function() {
+        return new Literal($1);
+      })
+    ],
+    Literal: [
+      o('AlphaNumeric'), o('JS', function() {
+        return new Literal($1);
+      }), o('REGEX', function() {
+        return new Literal($1);
+      }), o('DEBUGGER', function() {
+        return new Literal($1);
+      }), o('UNDEFINED', function() {
+        return new Undefined;
+      }), o('NULL', function() {
+        return new Null;
+      }), o('BOOL', function() {
+        return new Bool($1);
+      })
+    ],
+    Assign: [
+      o('Assignable = Expression', function() {
+        return new Assign($1, $3);
+      }), o('Assignable = TERMINATOR Expression', function() {
+        return new Assign($1, $4);
+      }), o('Assignable = INDENT Expression OUTDENT', function() {
+        return new Assign($1, $4);
+      })
+    ],
+    AssignObj: [
+      o('ObjAssignable', function() {
+        return new Value($1);
+      }), o('ObjAssignable : Expression', function() {
+        return new Assign(LOC(1)(new Value($1)), $3, 'object');
+      }), o('ObjAssignable : INDENT Expression OUTDENT', function() {
+        return new Assign(LOC(1)(new Value($1)), $4, 'object');
+      }), o('Comment')
+    ],
+    ObjAssignable: [o('Identifier'), o('AlphaNumeric'), o('ThisProperty')],
+    Return: [
+      o('RETURN Expression', function() {
+        return new Return($2);
+      }), o('RETURN', function() {
+        return new Return;
+      })
+    ],
+    Comment: [
+      o('HERECOMMENT', function() {
+        return new Comment($1);
+      })
+    ],
+    Code: [
+      o('PARAM_START ParamList PARAM_END FuncGlyph Block', function() {
+        return new Code($2, $5, $4);
+      }), o('FuncGlyph Block', function() {
+        return new Code([], $2, $1);
+      })
+    ],
+    FuncGlyph: [
+      o('->', function() {
+        return 'func';
+      }), o('=>', function() {
+        return 'boundfunc';
+      })
+    ],
+    OptComma: [o(''), o(',')],
+    ParamList: [
+      o('', function() {
+        return [];
+      }), o('Param', function() {
+        return [$1];
+      }), o('ParamList , Param', function() {
+        return $1.concat($3);
+      }), o('ParamList OptComma TERMINATOR Param', function() {
+        return $1.concat($4);
+      }), o('ParamList OptComma INDENT ParamList OptComma OUTDENT', function() {
+        return $1.concat($4);
+      })
+    ],
+    Param: [
+      o('ParamVar', function() {
+        return new Param($1);
+      }), o('ParamVar ...', function() {
+        return new Param($1, null, true);
+      }), o('ParamVar = Expression', function() {
+        return new Param($1, $3);
+      }), o('...', function() {
+        return new Expansion;
+      })
+    ],
+    ParamVar: [o('Identifier'), o('ThisProperty'), o('Array'), o('Object')],
+    Splat: [
+      o('Expression ...', function() {
+        return new Splat($1);
+      })
+    ],
+    SimpleAssignable: [
+      o('Identifier', function() {
+        return new Value($1);
+      }), o('Value Accessor', function() {
+        return $1.add($2);
+      }), o('Invocation Accessor', function() {
+        return new Value($1, [].concat($2));
+      }), o('ThisProperty')
+    ],
+    Assignable: [
+      o('SimpleAssignable'), o('Array', function() {
+        return new Value($1);
+      }), o('Object', function() {
+        return new Value($1);
+      })
+    ],
+    Value: [
+      o('Assignable'), o('Literal', function() {
+        return new Value($1);
+      }), o('Parenthetical', function() {
+        return new Value($1);
+      }), o('Range', function() {
+        return new Value($1);
+      }), o('This')
+    ],
+    Accessor: [
+      o('.  Identifier', function() {
+        return new Access($2);
+      }), o('?. Identifier', function() {
+        return new Access($2, 'soak');
+      }), o(':: Identifier', function() {
+        return [LOC(1)(new Access(new Literal('prototype'))), LOC(2)(new Access($2))];
+      }), o('?:: Identifier', function() {
+        return [LOC(1)(new Access(new Literal('prototype'), 'soak')), LOC(2)(new Access($2))];
+      }), o('::', function() {
+        return new Access(new Literal('prototype'));
+      }), o('Index')
+    ],
+    Index: [
+      o('INDEX_START IndexValue INDEX_END', function() {
+        return $2;
+      }), o('INDEX_SOAK  Index', function() {
+        return extend($2, {
+          soak: true
+        });
+      })
+    ],
+    IndexValue: [
+      o('Expression', function() {
+        return new Index($1);
+      }), o('Slice', function() {
+        return new Slice($1);
+      })
+    ],
+    Object: [
+      o('{ AssignList OptComma }', function() {
+        return new Obj($2, $1.generated);
+      })
+    ],
+    AssignList: [
+      o('', function() {
+        return [];
+      }), o('AssignObj', function() {
+        return [$1];
+      }), o('AssignList , AssignObj', function() {
+        return $1.concat($3);
+      }), o('AssignList OptComma TERMINATOR AssignObj', function() {
+        return $1.concat($4);
+      }), o('AssignList OptComma INDENT AssignList OptComma OUTDENT', function() {
+        return $1.concat($4);
+      })
+    ],
+    Class: [
+      o('CLASS', function() {
+        return new Class;
+      }), o('CLASS Block', function() {
+        return new Class(null, null, $2);
+      }), o('CLASS EXTENDS Expression', function() {
+        return new Class(null, $3);
+      }), o('CLASS EXTENDS Expression Block', function() {
+        return new Class(null, $3, $4);
+      }), o('CLASS SimpleAssignable', function() {
+        return new Class($2);
+      }), o('CLASS SimpleAssignable Block', function() {
+        return new Class($2, null, $3);
+      }), o('CLASS SimpleAssignable EXTENDS Expression', function() {
+        return new Class($2, $4);
+      }), o('CLASS SimpleAssignable EXTENDS Expression Block', function() {
+        return new Class($2, $4, $5);
+      })
+    ],
+    Invocation: [
+      o('Value OptFuncExist Arguments', function() {
+        return new Call($1, $3, $2);
+      }), o('Invocation OptFuncExist Arguments', function() {
+        return new Call($1, $3, $2);
+      }), o('SUPER', function() {
+        return new Call('super', [new Splat(new Literal('arguments'))]);
+      }), o('SUPER Arguments', function() {
+        return new Call('super', $2);
+      })
+    ],
+    OptFuncExist: [
+      o('', function() {
+        return false;
+      }), o('FUNC_EXIST', function() {
+        return true;
+      })
+    ],
+    Arguments: [
+      o('CALL_START CALL_END', function() {
+        return [];
+      }), o('CALL_START ArgList OptComma CALL_END', function() {
+        return $2;
+      })
+    ],
+    This: [
+      o('THIS', function() {
+        return new Value(new Literal('this'));
+      }), o('@', function() {
+        return new Value(new Literal('this'));
+      })
+    ],
+    ThisProperty: [
+      o('@ Identifier', function() {
+        return new Value(LOC(1)(new Literal('this')), [LOC(2)(new Access($2))], 'this');
+      })
+    ],
+    Array: [
+      o('[ ]', function() {
+        return new Arr([]);
+      }), o('[ ArgList OptComma ]', function() {
+        return new Arr($2);
+      })
+    ],
+    RangeDots: [
+      o('..', function() {
+        return 'inclusive';
+      }), o('...', function() {
+        return 'exclusive';
+      })
+    ],
+    Range: [
+      o('[ Expression RangeDots Expression ]', function() {
+        return new Range($2, $4, $3);
+      })
+    ],
+    Slice: [
+      o('Expression RangeDots Expression', function() {
+        return new Range($1, $3, $2);
+      }), o('Expression RangeDots', function() {
+        return new Range($1, null, $2);
+      }), o('RangeDots Expression', function() {
+        return new Range(null, $2, $1);
+      }), o('RangeDots', function() {
+        return new Range(null, null, $1);
+      })
+    ],
+    ArgList: [
+      o('Arg', function() {
+        return [$1];
+      }), o('ArgList , Arg', function() {
+        return $1.concat($3);
+      }), o('ArgList OptComma TERMINATOR Arg', function() {
+        return $1.concat($4);
+      }), o('INDENT ArgList OptComma OUTDENT', function() {
+        return $2;
+      }), o('ArgList OptComma INDENT ArgList OptComma OUTDENT', function() {
+        return $1.concat($4);
+      })
+    ],
+    Arg: [
+      o('Expression'), o('Splat'), o('...', function() {
+        return new Expansion;
+      })
+    ],
+    SimpleArgs: [
+      o('Expression'), o('SimpleArgs , Expression', function() {
+        return [].concat($1, $3);
+      })
+    ],
+    Try: [
+      o('TRY Block', function() {
+        return new Try($2);
+      }), o('TRY Block Catch', function() {
+        return new Try($2, $3[0], $3[1]);
+      }), o('TRY Block FINALLY Block', function() {
+        return new Try($2, null, null, $4);
+      }), o('TRY Block Catch FINALLY Block', function() {
+        return new Try($2, $3[0], $3[1], $5);
+      })
+    ],
+    Catch: [
+      o('CATCH Identifier Block', function() {
+        return [$2, $3];
+      }), o('CATCH Object Block', function() {
+        return [LOC(2)(new Value($2)), $3];
+      }), o('CATCH Block', function() {
+        return [null, $2];
+      })
+    ],
+    Throw: [
+      o('THROW Expression', function() {
+        return new Throw($2);
+      })
+    ],
+    Parenthetical: [
+      o('( Body )', function() {
+        return new Parens($2);
+      }), o('( INDENT Body OUTDENT )', function() {
+        return new Parens($3);
+      })
+    ],
+    WhileSource: [
+      o('WHILE Expression', function() {
+        return new While($2);
+      }), o('WHILE Expression WHEN Expression', function() {
+        return new While($2, {
+          guard: $4
+        });
+      }), o('UNTIL Expression', function() {
+        return new While($2, {
+          invert: true
+        });
+      }), o('UNTIL Expression WHEN Expression', function() {
+        return new While($2, {
+          invert: true,
+          guard: $4
+        });
+      })
+    ],
+    While: [
+      o('WhileSource Block', function() {
+        return $1.addBody($2);
+      }), o('Statement  WhileSource', function() {
+        return $2.addBody(LOC(1)(Block.wrap([$1])));
+      }), o('Expression WhileSource', function() {
+        return $2.addBody(LOC(1)(Block.wrap([$1])));
+      }), o('Loop', function() {
+        return $1;
+      })
+    ],
+    Loop: [
+      o('LOOP Block', function() {
+        return new While(LOC(1)(new Literal('true'))).addBody($2);
+      }), o('LOOP Expression', function() {
+        return new While(LOC(1)(new Literal('true'))).addBody(LOC(2)(Block.wrap([$2])));
+      })
+    ],
+    For: [
+      o('Statement  ForBody', function() {
+        return new For($1, $2);
+      }), o('Expression ForBody', function() {
+        return new For($1, $2);
+      }), o('ForBody    Block', function() {
+        return new For($2, $1);
+      })
+    ],
+    ForBody: [
+      o('FOR Range', function() {
+        return {
+          source: LOC(2)(new Value($2))
+        };
+      }), o('ForStart ForSource', function() {
+        $2.own = $1.own;
+        $2.name = $1[0];
+        $2.index = $1[1];
+        return $2;
+      })
+    ],
+    ForStart: [
+      o('FOR ForVariables', function() {
+        return $2;
+      }), o('FOR OWN ForVariables', function() {
+        $3.own = true;
+        return $3;
+      })
+    ],
+    ForValue: [
+      o('Identifier'), o('ThisProperty'), o('Array', function() {
+        return new Value($1);
+      }), o('Object', function() {
+        return new Value($1);
+      })
+    ],
+    ForVariables: [
+      o('ForValue', function() {
+        return [$1];
+      }), o('ForValue , ForValue', function() {
+        return [$1, $3];
+      })
+    ],
+    ForSource: [
+      o('FORIN Expression', function() {
+        return {
+          source: $2
+        };
+      }), o('FOROF Expression', function() {
+        return {
+          source: $2,
+          object: true
+        };
+      }), o('FORIN Expression WHEN Expression', function() {
+        return {
+          source: $2,
+          guard: $4
+        };
+      }), o('FOROF Expression WHEN Expression', function() {
+        return {
+          source: $2,
+          guard: $4,
+          object: true
+        };
+      }), o('FORIN Expression BY Expression', function() {
+        return {
+          source: $2,
+          step: $4
+        };
+      }), o('FORIN Expression WHEN Expression BY Expression', function() {
+        return {
+          source: $2,
+          guard: $4,
+          step: $6
+        };
+      }), o('FORIN Expression BY Expression WHEN Expression', function() {
+        return {
+          source: $2,
+          step: $4,
+          guard: $6
+        };
+      })
+    ],
+    Switch: [
+      o('SWITCH Expression INDENT Whens OUTDENT', function() {
+        return new Switch($2, $4);
+      }), o('SWITCH Expression INDENT Whens ELSE Block OUTDENT', function() {
+        return new Switch($2, $4, $6);
+      }), o('SWITCH INDENT Whens OUTDENT', function() {
+        return new Switch(null, $3);
+      }), o('SWITCH INDENT Whens ELSE Block OUTDENT', function() {
+        return new Switch(null, $3, $5);
+      })
+    ],
+    Whens: [
+      o('When'), o('Whens When', function() {
+        return $1.concat($2);
+      })
+    ],
+    When: [
+      o('LEADING_WHEN SimpleArgs Block', function() {
+        return [[$2, $3]];
+      }), o('LEADING_WHEN SimpleArgs Block TERMINATOR', function() {
+        return [[$2, $3]];
+      })
+    ],
+    IfBlock: [
+      o('IF Expression Block', function() {
+        return new If($2, $3, {
+          type: $1
+        });
+      }), o('IfBlock ELSE IF Expression Block', function() {
+        return $1.addElse(LOC(3, 5)(new If($4, $5, {
+          type: $3
+        })));
+      })
+    ],
+    If: [
+      o('IfBlock'), o('IfBlock ELSE Block', function() {
+        return $1.addElse($3);
+      }), o('Statement  POST_IF Expression', function() {
+        return new If($3, LOC(1)(Block.wrap([$1])), {
+          type: $2,
+          statement: true
+        });
+      }), o('Expression POST_IF Expression', function() {
+        return new If($3, LOC(1)(Block.wrap([$1])), {
+          type: $2,
+          statement: true
+        });
+      })
+    ],
+    Operation: [
+      o('UNARY Expression', function() {
+        return new Op($1, $2);
+      }), o('UNARY_MATH Expression', function() {
+        return new Op($1, $2);
+      }), o('-     Expression', (function() {
+        return new Op('-', $2);
+      }), {
+        prec: 'UNARY_MATH'
+      }), o('+     Expression', (function() {
+        return new Op('+', $2);
+      }), {
+        prec: 'UNARY_MATH'
+      }), o('-- SimpleAssignable', function() {
+        return new Op('--', $2);
+      }), o('++ SimpleAssignable', function() {
+        return new Op('++', $2);
+      }), o('SimpleAssignable --', function() {
+        return new Op('--', $1, null, true);
+      }), o('SimpleAssignable ++', function() {
+        return new Op('++', $1, null, true);
+      }), o('Expression ?', function() {
+        return new Existence($1);
+      }), o('Expression +  Expression', function() {
+        return new Op('+', $1, $3);
+      }), o('Expression -  Expression', function() {
+        return new Op('-', $1, $3);
+      }), o('Expression MATH     Expression', function() {
+        return new Op($2, $1, $3);
+      }), o('Expression **       Expression', function() {
+        return new Op($2, $1, $3);
+      }), o('Expression SHIFT    Expression', function() {
+        return new Op($2, $1, $3);
+      }), o('Expression COMPARE  Expression', function() {
+        return new Op($2, $1, $3);
+      }), o('Expression LOGIC    Expression', function() {
+        return new Op($2, $1, $3);
+      }), o('Expression RELATION Expression', function() {
+        if ($2.charAt(0) === '!') {
+          return new Op($2.slice(1), $1, $3).invert();
+        } else {
+          return new Op($2, $1, $3);
+        }
+      }), o('SimpleAssignable COMPOUND_ASSIGN Expression', function() {
+        return new Assign($1, $3, $2);
+      }), o('SimpleAssignable COMPOUND_ASSIGN INDENT Expression OUTDENT', function() {
+        return new Assign($1, $4, $2);
+      }), o('SimpleAssignable COMPOUND_ASSIGN TERMINATOR Expression', function() {
+        return new Assign($1, $4, $2);
+      }), o('SimpleAssignable EXTENDS Expression', function() {
+        return new Extends($1, $3);
+      })
+    ]
+  };
+
+  operators = [['left', '.', '?.', '::', '?::'], ['left', 'CALL_START', 'CALL_END'], ['nonassoc', '++', '--'], ['left', '?'], ['right', 'UNARY'], ['right', '**'], ['right', 'UNARY_MATH'], ['left', 'MATH'], ['left', '+', '-'], ['left', 'SHIFT'], ['left', 'RELATION'], ['left', 'COMPARE'], ['left', 'LOGIC'], ['nonassoc', 'INDENT', 'OUTDENT'], ['right', '=', ':', 'COMPOUND_ASSIGN', 'RETURN', 'THROW', 'EXTENDS'], ['right', 'FORIN', 'FOROF', 'BY', 'WHEN'], ['right', 'IF', 'ELSE', 'FOR', 'WHILE', 'UNTIL', 'LOOP', 'SUPER', 'CLASS'], ['left', 'POST_IF']];
+
+  tokens = [];
+
+  for (name in grammar) {
+    alternatives = grammar[name];
+    grammar[name] = (function() {
+      var _i, _j, _len, _len1, _ref, _results;
+      _results = [];
+      for (_i = 0, _len = alternatives.length; _i < _len; _i++) {
+        alt = alternatives[_i];
+        _ref = alt[0].split(' ');
+        for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
+          token = _ref[_j];
+          if (!grammar[token]) {
+            tokens.push(token);
+          }
+        }
+        if (name === 'Root') {
+          alt[1] = "return " + alt[1];
+        }
+        _results.push(alt);
+      }
+      return _results;
+    })();
+  }
+
+  exports.parser = new Parser({
+    tokens: tokens.join(' '),
+    bnf: grammar,
+    operators: operators.reverse(),
+    startSymbol: 'Root'
+  });
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/helpers.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/helpers.js
new file mode 100644 (file)
index 0000000..049f757
--- /dev/null
@@ -0,0 +1,252 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var buildLocationData, extend, flatten, last, repeat, syntaxErrorToString, _ref;
+
+  exports.starts = function(string, literal, start) {
+    return literal === string.substr(start, literal.length);
+  };
+
+  exports.ends = function(string, literal, back) {
+    var len;
+    len = literal.length;
+    return literal === string.substr(string.length - len - (back || 0), len);
+  };
+
+  exports.repeat = repeat = function(str, n) {
+    var res;
+    res = '';
+    while (n > 0) {
+      if (n & 1) {
+        res += str;
+      }
+      n >>>= 1;
+      str += str;
+    }
+    return res;
+  };
+
+  exports.compact = function(array) {
+    var item, _i, _len, _results;
+    _results = [];
+    for (_i = 0, _len = array.length; _i < _len; _i++) {
+      item = array[_i];
+      if (item) {
+        _results.push(item);
+      }
+    }
+    return _results;
+  };
+
+  exports.count = function(string, substr) {
+    var num, pos;
+    num = pos = 0;
+    if (!substr.length) {
+      return 1 / 0;
+    }
+    while (pos = 1 + string.indexOf(substr, pos)) {
+      num++;
+    }
+    return num;
+  };
+
+  exports.merge = function(options, overrides) {
+    return extend(extend({}, options), overrides);
+  };
+
+  extend = exports.extend = function(object, properties) {
+    var key, val;
+    for (key in properties) {
+      val = properties[key];
+      object[key] = val;
+    }
+    return object;
+  };
+
+  exports.flatten = flatten = function(array) {
+    var element, flattened, _i, _len;
+    flattened = [];
+    for (_i = 0, _len = array.length; _i < _len; _i++) {
+      element = array[_i];
+      if (element instanceof Array) {
+        flattened = flattened.concat(flatten(element));
+      } else {
+        flattened.push(element);
+      }
+    }
+    return flattened;
+  };
+
+  exports.del = function(obj, key) {
+    var val;
+    val = obj[key];
+    delete obj[key];
+    return val;
+  };
+
+  exports.last = last = function(array, back) {
+    return array[array.length - (back || 0) - 1];
+  };
+
+  exports.some = (_ref = Array.prototype.some) != null ? _ref : function(fn) {
+    var e, _i, _len;
+    for (_i = 0, _len = this.length; _i < _len; _i++) {
+      e = this[_i];
+      if (fn(e)) {
+        return true;
+      }
+    }
+    return false;
+  };
+
+  exports.invertLiterate = function(code) {
+    var line, lines, maybe_code;
+    maybe_code = true;
+    lines = (function() {
+      var _i, _len, _ref1, _results;
+      _ref1 = code.split('\n');
+      _results = [];
+      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+        line = _ref1[_i];
+        if (maybe_code && /^([ ]{4}|[ ]{0,3}\t)/.test(line)) {
+          _results.push(line);
+        } else if (maybe_code = /^\s*$/.test(line)) {
+          _results.push(line);
+        } else {
+          _results.push('# ' + line);
+        }
+      }
+      return _results;
+    })();
+    return lines.join('\n');
+  };
+
+  buildLocationData = function(first, last) {
+    if (!last) {
+      return first;
+    } else {
+      return {
+        first_line: first.first_line,
+        first_column: first.first_column,
+        last_line: last.last_line,
+        last_column: last.last_column
+      };
+    }
+  };
+
+  exports.addLocationDataFn = function(first, last) {
+    return function(obj) {
+      if (((typeof obj) === 'object') && (!!obj['updateLocationDataIfMissing'])) {
+        obj.updateLocationDataIfMissing(buildLocationData(first, last));
+      }
+      return obj;
+    };
+  };
+
+  exports.locationDataToString = function(obj) {
+    var locationData;
+    if (("2" in obj) && ("first_line" in obj[2])) {
+      locationData = obj[2];
+    } else if ("first_line" in obj) {
+      locationData = obj;
+    }
+    if (locationData) {
+      return ("" + (locationData.first_line + 1) + ":" + (locationData.first_column + 1) + "-") + ("" + (locationData.last_line + 1) + ":" + (locationData.last_column + 1));
+    } else {
+      return "No location data";
+    }
+  };
+
+  exports.baseFileName = function(file, stripExt, useWinPathSep) {
+    var parts, pathSep;
+    if (stripExt == null) {
+      stripExt = false;
+    }
+    if (useWinPathSep == null) {
+      useWinPathSep = false;
+    }
+    pathSep = useWinPathSep ? /\\|\// : /\//;
+    parts = file.split(pathSep);
+    file = parts[parts.length - 1];
+    if (!(stripExt && file.indexOf('.') >= 0)) {
+      return file;
+    }
+    parts = file.split('.');
+    parts.pop();
+    if (parts[parts.length - 1] === 'coffee' && parts.length > 1) {
+      parts.pop();
+    }
+    return parts.join('.');
+  };
+
+  exports.isCoffee = function(file) {
+    return /\.((lit)?coffee|coffee\.md)$/.test(file);
+  };
+
+  exports.isLiterate = function(file) {
+    return /\.(litcoffee|coffee\.md)$/.test(file);
+  };
+
+  exports.throwSyntaxError = function(message, location) {
+    var error;
+    error = new SyntaxError(message);
+    error.location = location;
+    error.toString = syntaxErrorToString;
+    error.stack = error.toString();
+    throw error;
+  };
+
+  exports.updateSyntaxError = function(error, code, filename) {
+    if (error.toString === syntaxErrorToString) {
+      error.code || (error.code = code);
+      error.filename || (error.filename = filename);
+      error.stack = error.toString();
+    }
+    return error;
+  };
+
+  syntaxErrorToString = function() {
+    var codeLine, colorize, colorsEnabled, end, filename, first_column, first_line, last_column, last_line, marker, start, _ref1, _ref2;
+    if (!(this.code && this.location)) {
+      return Error.prototype.toString.call(this);
+    }
+    _ref1 = this.location, first_line = _ref1.first_line, first_column = _ref1.first_column, last_line = _ref1.last_line, last_column = _ref1.last_column;
+    if (last_line == null) {
+      last_line = first_line;
+    }
+    if (last_column == null) {
+      last_column = first_column;
+    }
+    filename = this.filename || '[stdin]';
+    codeLine = this.code.split('\n')[first_line];
+    start = first_column;
+    end = first_line === last_line ? last_column + 1 : codeLine.length;
+    marker = codeLine.slice(0, start).replace(/[^\s]/g, ' ') + repeat('^', end - start);
+    if (typeof process !== "undefined" && process !== null) {
+      colorsEnabled = process.stdout.isTTY && !process.env.NODE_DISABLE_COLORS;
+    }
+    if ((_ref2 = this.colorful) != null ? _ref2 : colorsEnabled) {
+      colorize = function(str) {
+        return "\x1B[1;31m" + str + "\x1B[0m";
+      };
+      codeLine = codeLine.slice(0, start) + colorize(codeLine.slice(start, end)) + codeLine.slice(end);
+      marker = colorize(marker);
+    }
+    return "" + filename + ":" + (first_line + 1) + ":" + (first_column + 1) + ": error: " + this.message + "\n" + codeLine + "\n" + marker;
+  };
+
+  exports.nameWhitespaceCharacter = function(string) {
+    switch (string) {
+      case ' ':
+        return 'space';
+      case '\n':
+        return 'newline';
+      case '\r':
+        return 'carriage return';
+      case '\t':
+        return 'tab';
+      default:
+        return string;
+    }
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/index.js
new file mode 100644 (file)
index 0000000..46c97ea
--- /dev/null
@@ -0,0 +1,11 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var key, val, _ref;
+
+  _ref = require('./coffee-script');
+  for (key in _ref) {
+    val = _ref[key];
+    exports[key] = val;
+  }
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/lexer.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/lexer.js
new file mode 100644 (file)
index 0000000..0f3cef8
--- /dev/null
@@ -0,0 +1,934 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var BOM, BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HEREDOC, HEREDOC_ILLEGAL, HEREDOC_INDENT, HEREGEX, HEREGEX_OMIT, IDENTIFIER, INDENTABLE_CLOSERS, INDEXABLE, INVERSES, JSTOKEN, JS_FORBIDDEN, JS_KEYWORDS, LINE_BREAK, LINE_CONTINUER, LOGIC, Lexer, MATH, MULTILINER, MULTI_DENT, NOT_REGEX, NOT_SPACED_REGEX, NUMBER, OPERATOR, REGEX, RELATION, RESERVED, Rewriter, SHIFT, SIMPLESTR, STRICT_PROSCRIBED, TRAILING_SPACES, UNARY, UNARY_MATH, WHITESPACE, compact, count, invertLiterate, key, last, locationDataToString, repeat, starts, throwSyntaxError, _ref, _ref1,
+    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
+
+  _ref = require('./rewriter'), Rewriter = _ref.Rewriter, INVERSES = _ref.INVERSES;
+
+  _ref1 = require('./helpers'), count = _ref1.count, starts = _ref1.starts, compact = _ref1.compact, last = _ref1.last, repeat = _ref1.repeat, invertLiterate = _ref1.invertLiterate, locationDataToString = _ref1.locationDataToString, throwSyntaxError = _ref1.throwSyntaxError;
+
+  exports.Lexer = Lexer = (function() {
+    function Lexer() {}
+
+    Lexer.prototype.tokenize = function(code, opts) {
+      var consumed, i, tag, _ref2;
+      if (opts == null) {
+        opts = {};
+      }
+      this.literate = opts.literate;
+      this.indent = 0;
+      this.baseIndent = 0;
+      this.indebt = 0;
+      this.outdebt = 0;
+      this.indents = [];
+      this.ends = [];
+      this.tokens = [];
+      this.chunkLine = opts.line || 0;
+      this.chunkColumn = opts.column || 0;
+      code = this.clean(code);
+      i = 0;
+      while (this.chunk = code.slice(i)) {
+        consumed = this.identifierToken() || this.commentToken() || this.whitespaceToken() || this.lineToken() || this.heredocToken() || this.stringToken() || this.numberToken() || this.regexToken() || this.jsToken() || this.literalToken();
+        _ref2 = this.getLineAndColumnFromChunk(consumed), this.chunkLine = _ref2[0], this.chunkColumn = _ref2[1];
+        i += consumed;
+      }
+      this.closeIndentation();
+      if (tag = this.ends.pop()) {
+        this.error("missing " + tag);
+      }
+      if (opts.rewrite === false) {
+        return this.tokens;
+      }
+      return (new Rewriter).rewrite(this.tokens);
+    };
+
+    Lexer.prototype.clean = function(code) {
+      if (code.charCodeAt(0) === BOM) {
+        code = code.slice(1);
+      }
+      code = code.replace(/\r/g, '').replace(TRAILING_SPACES, '');
+      if (WHITESPACE.test(code)) {
+        code = "\n" + code;
+        this.chunkLine--;
+      }
+      if (this.literate) {
+        code = invertLiterate(code);
+      }
+      return code;
+    };
+
+    Lexer.prototype.identifierToken = function() {
+      var colon, colonOffset, forcedIdentifier, id, idLength, input, match, poppedToken, prev, tag, tagToken, _ref2, _ref3, _ref4;
+      if (!(match = IDENTIFIER.exec(this.chunk))) {
+        return 0;
+      }
+      input = match[0], id = match[1], colon = match[2];
+      idLength = id.length;
+      poppedToken = void 0;
+      if (id === 'own' && this.tag() === 'FOR') {
+        this.token('OWN', id);
+        return id.length;
+      }
+      forcedIdentifier = colon || (prev = last(this.tokens)) && (((_ref2 = prev[0]) === '.' || _ref2 === '?.' || _ref2 === '::' || _ref2 === '?::') || !prev.spaced && prev[0] === '@');
+      tag = 'IDENTIFIER';
+      if (!forcedIdentifier && (__indexOf.call(JS_KEYWORDS, id) >= 0 || __indexOf.call(COFFEE_KEYWORDS, id) >= 0)) {
+        tag = id.toUpperCase();
+        if (tag === 'WHEN' && (_ref3 = this.tag(), __indexOf.call(LINE_BREAK, _ref3) >= 0)) {
+          tag = 'LEADING_WHEN';
+        } else if (tag === 'FOR') {
+          this.seenFor = true;
+        } else if (tag === 'UNLESS') {
+          tag = 'IF';
+        } else if (__indexOf.call(UNARY, tag) >= 0) {
+          tag = 'UNARY';
+        } else if (__indexOf.call(RELATION, tag) >= 0) {
+          if (tag !== 'INSTANCEOF' && this.seenFor) {
+            tag = 'FOR' + tag;
+            this.seenFor = false;
+          } else {
+            tag = 'RELATION';
+            if (this.value() === '!') {
+              poppedToken = this.tokens.pop();
+              id = '!' + id;
+            }
+          }
+        }
+      }
+      if (__indexOf.call(JS_FORBIDDEN, id) >= 0) {
+        if (forcedIdentifier) {
+          tag = 'IDENTIFIER';
+          id = new String(id);
+          id.reserved = true;
+        } else if (__indexOf.call(RESERVED, id) >= 0) {
+          this.error("reserved word \"" + id + "\"");
+        }
+      }
+      if (!forcedIdentifier) {
+        if (__indexOf.call(COFFEE_ALIASES, id) >= 0) {
+          id = COFFEE_ALIAS_MAP[id];
+        }
+        tag = (function() {
+          switch (id) {
+            case '!':
+              return 'UNARY';
+            case '==':
+            case '!=':
+              return 'COMPARE';
+            case '&&':
+            case '||':
+              return 'LOGIC';
+            case 'true':
+            case 'false':
+              return 'BOOL';
+            case 'break':
+            case 'continue':
+              return 'STATEMENT';
+            default:
+              return tag;
+          }
+        })();
+      }
+      tagToken = this.token(tag, id, 0, idLength);
+      if (poppedToken) {
+        _ref4 = [poppedToken[2].first_line, poppedToken[2].first_column], tagToken[2].first_line = _ref4[0], tagToken[2].first_column = _ref4[1];
+      }
+      if (colon) {
+        colonOffset = input.lastIndexOf(':');
+        this.token(':', ':', colonOffset, colon.length);
+      }
+      return input.length;
+    };
+
+    Lexer.prototype.numberToken = function() {
+      var binaryLiteral, lexedLength, match, number, octalLiteral;
+      if (!(match = NUMBER.exec(this.chunk))) {
+        return 0;
+      }
+      number = match[0];
+      if (/^0[BOX]/.test(number)) {
+        this.error("radix prefix '" + number + "' must be lowercase");
+      } else if (/E/.test(number) && !/^0x/.test(number)) {
+        this.error("exponential notation '" + number + "' must be indicated with a lowercase 'e'");
+      } else if (/^0\d*[89]/.test(number)) {
+        this.error("decimal literal '" + number + "' must not be prefixed with '0'");
+      } else if (/^0\d+/.test(number)) {
+        this.error("octal literal '" + number + "' must be prefixed with '0o'");
+      }
+      lexedLength = number.length;
+      if (octalLiteral = /^0o([0-7]+)/.exec(number)) {
+        number = '0x' + parseInt(octalLiteral[1], 8).toString(16);
+      }
+      if (binaryLiteral = /^0b([01]+)/.exec(number)) {
+        number = '0x' + parseInt(binaryLiteral[1], 2).toString(16);
+      }
+      this.token('NUMBER', number, 0, lexedLength);
+      return lexedLength;
+    };
+
+    Lexer.prototype.stringToken = function() {
+      var inner, innerLen, numBreak, octalEsc, pos, quote, string, trimmed;
+      switch (quote = this.chunk.charAt(0)) {
+        case "'":
+          string = (SIMPLESTR.exec(this.chunk) || [])[0];
+          break;
+        case '"':
+          string = this.balancedString(this.chunk, '"');
+      }
+      if (!string) {
+        return 0;
+      }
+      inner = string.slice(1, -1);
+      trimmed = this.removeNewlines(inner);
+      if (quote === '"' && 0 < string.indexOf('#{', 1)) {
+        numBreak = pos = 0;
+        innerLen = inner.length;
+        while (inner.charAt(pos++) === '\n' && pos < innerLen) {
+          numBreak++;
+        }
+        this.interpolateString(trimmed, {
+          strOffset: 1 + numBreak,
+          lexedLength: string.length
+        });
+      } else {
+        this.token('STRING', quote + this.escapeLines(trimmed) + quote, 0, string.length);
+      }
+      if (octalEsc = /^(?:\\.|[^\\])*\\(?:0[0-7]|[1-7])/.test(string)) {
+        this.error("octal escape sequences " + string + " are not allowed");
+      }
+      return string.length;
+    };
+
+    Lexer.prototype.heredocToken = function() {
+      var doc, heredoc, match, quote, strOffset;
+      if (!(match = HEREDOC.exec(this.chunk))) {
+        return 0;
+      }
+      heredoc = match[0];
+      quote = heredoc.charAt(0);
+      doc = this.sanitizeHeredoc(match[2], {
+        quote: quote,
+        indent: null
+      });
+      if (quote === '"' && 0 <= doc.indexOf('#{')) {
+        strOffset = match[2].charAt(0) === '\n' ? 4 : 3;
+        this.interpolateString(doc, {
+          heredoc: true,
+          strOffset: strOffset,
+          lexedLength: heredoc.length
+        });
+      } else {
+        this.token('STRING', this.makeString(doc, quote, true), 0, heredoc.length);
+      }
+      return heredoc.length;
+    };
+
+    Lexer.prototype.commentToken = function() {
+      var comment, here, match;
+      if (!(match = this.chunk.match(COMMENT))) {
+        return 0;
+      }
+      comment = match[0], here = match[1];
+      if (here) {
+        this.token('HERECOMMENT', this.sanitizeHeredoc(here, {
+          herecomment: true,
+          indent: repeat(' ', this.indent)
+        }), 0, comment.length);
+      }
+      return comment.length;
+    };
+
+    Lexer.prototype.jsToken = function() {
+      var match, script;
+      if (!(this.chunk.charAt(0) === '`' && (match = JSTOKEN.exec(this.chunk)))) {
+        return 0;
+      }
+      this.token('JS', (script = match[0]).slice(1, -1), 0, script.length);
+      return script.length;
+    };
+
+    Lexer.prototype.regexToken = function() {
+      var flags, length, match, prev, regex, _ref2, _ref3;
+      if (this.chunk.charAt(0) !== '/') {
+        return 0;
+      }
+      if (length = this.heregexToken()) {
+        return length;
+      }
+      prev = last(this.tokens);
+      if (prev && (_ref2 = prev[0], __indexOf.call((prev.spaced ? NOT_REGEX : NOT_SPACED_REGEX), _ref2) >= 0)) {
+        return 0;
+      }
+      if (!(match = REGEX.exec(this.chunk))) {
+        return 0;
+      }
+      _ref3 = match, match = _ref3[0], regex = _ref3[1], flags = _ref3[2];
+      if (regex === '//') {
+        return 0;
+      }
+      if (regex.slice(0, 2) === '/*') {
+        this.error('regular expressions cannot begin with `*`');
+      }
+      this.token('REGEX', "" + regex + flags, 0, match.length);
+      return match.length;
+    };
+
+    Lexer.prototype.heregexToken = function() {
+      var body, flags, flagsOffset, heregex, match, plusToken, prev, re, tag, token, tokens, value, _i, _len, _ref2, _ref3, _ref4;
+      if (!(match = HEREGEX.exec(this.chunk))) {
+        return 0;
+      }
+      heregex = match[0], body = match[1], flags = match[2];
+      if (0 > body.indexOf('#{')) {
+        re = this.escapeLines(body.replace(HEREGEX_OMIT, '$1$2').replace(/\//g, '\\/'), true);
+        if (re.match(/^\*/)) {
+          this.error('regular expressions cannot begin with `*`');
+        }
+        this.token('REGEX', "/" + (re || '(?:)') + "/" + flags, 0, heregex.length);
+        return heregex.length;
+      }
+      this.token('IDENTIFIER', 'RegExp', 0, 0);
+      this.token('CALL_START', '(', 0, 0);
+      tokens = [];
+      _ref2 = this.interpolateString(body, {
+        regex: true,
+        strOffset: 3
+      });
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        token = _ref2[_i];
+        tag = token[0], value = token[1];
+        if (tag === 'TOKENS') {
+          tokens.push.apply(tokens, value);
+        } else if (tag === 'NEOSTRING') {
+          if (!(value = value.replace(HEREGEX_OMIT, '$1$2'))) {
+            continue;
+          }
+          value = value.replace(/\\/g, '\\\\');
+          token[0] = 'STRING';
+          token[1] = this.makeString(value, '"', true);
+          tokens.push(token);
+        } else {
+          this.error("Unexpected " + tag);
+        }
+        prev = last(this.tokens);
+        plusToken = ['+', '+'];
+        plusToken[2] = prev[2];
+        tokens.push(plusToken);
+      }
+      tokens.pop();
+      if (((_ref3 = tokens[0]) != null ? _ref3[0] : void 0) !== 'STRING') {
+        this.token('STRING', '""', 0, 0);
+        this.token('+', '+', 0, 0);
+      }
+      (_ref4 = this.tokens).push.apply(_ref4, tokens);
+      if (flags) {
+        flagsOffset = heregex.lastIndexOf(flags);
+        this.token(',', ',', flagsOffset, 0);
+        this.token('STRING', '"' + flags + '"', flagsOffset, flags.length);
+      }
+      this.token(')', ')', heregex.length - 1, 0);
+      return heregex.length;
+    };
+
+    Lexer.prototype.lineToken = function() {
+      var diff, indent, match, noNewlines, size;
+      if (!(match = MULTI_DENT.exec(this.chunk))) {
+        return 0;
+      }
+      indent = match[0];
+      this.seenFor = false;
+      size = indent.length - 1 - indent.lastIndexOf('\n');
+      noNewlines = this.unfinished();
+      if (size - this.indebt === this.indent) {
+        if (noNewlines) {
+          this.suppressNewlines();
+        } else {
+          this.newlineToken(0);
+        }
+        return indent.length;
+      }
+      if (size > this.indent) {
+        if (noNewlines) {
+          this.indebt = size - this.indent;
+          this.suppressNewlines();
+          return indent.length;
+        }
+        if (!this.tokens.length) {
+          this.baseIndent = this.indent = size;
+          return indent.length;
+        }
+        diff = size - this.indent + this.outdebt;
+        this.token('INDENT', diff, indent.length - size, size);
+        this.indents.push(diff);
+        this.ends.push('OUTDENT');
+        this.outdebt = this.indebt = 0;
+        this.indent = size;
+      } else if (size < this.baseIndent) {
+        this.error('missing indentation', indent.length);
+      } else {
+        this.indebt = 0;
+        this.outdentToken(this.indent - size, noNewlines, indent.length);
+      }
+      return indent.length;
+    };
+
+    Lexer.prototype.outdentToken = function(moveOut, noNewlines, outdentLength) {
+      var decreasedIndent, dent, lastIndent, _ref2;
+      decreasedIndent = this.indent - moveOut;
+      while (moveOut > 0) {
+        lastIndent = this.indents[this.indents.length - 1];
+        if (!lastIndent) {
+          moveOut = 0;
+        } else if (lastIndent === this.outdebt) {
+          moveOut -= this.outdebt;
+          this.outdebt = 0;
+        } else if (lastIndent < this.outdebt) {
+          this.outdebt -= lastIndent;
+          moveOut -= lastIndent;
+        } else {
+          dent = this.indents.pop() + this.outdebt;
+          if (outdentLength && (_ref2 = this.chunk[outdentLength], __indexOf.call(INDENTABLE_CLOSERS, _ref2) >= 0)) {
+            decreasedIndent -= dent - moveOut;
+            moveOut = dent;
+          }
+          this.outdebt = 0;
+          this.pair('OUTDENT');
+          this.token('OUTDENT', moveOut, 0, outdentLength);
+          moveOut -= dent;
+        }
+      }
+      if (dent) {
+        this.outdebt -= moveOut;
+      }
+      while (this.value() === ';') {
+        this.tokens.pop();
+      }
+      if (!(this.tag() === 'TERMINATOR' || noNewlines)) {
+        this.token('TERMINATOR', '\n', outdentLength, 0);
+      }
+      this.indent = decreasedIndent;
+      return this;
+    };
+
+    Lexer.prototype.whitespaceToken = function() {
+      var match, nline, prev;
+      if (!((match = WHITESPACE.exec(this.chunk)) || (nline = this.chunk.charAt(0) === '\n'))) {
+        return 0;
+      }
+      prev = last(this.tokens);
+      if (prev) {
+        prev[match ? 'spaced' : 'newLine'] = true;
+      }
+      if (match) {
+        return match[0].length;
+      } else {
+        return 0;
+      }
+    };
+
+    Lexer.prototype.newlineToken = function(offset) {
+      while (this.value() === ';') {
+        this.tokens.pop();
+      }
+      if (this.tag() !== 'TERMINATOR') {
+        this.token('TERMINATOR', '\n', offset, 0);
+      }
+      return this;
+    };
+
+    Lexer.prototype.suppressNewlines = function() {
+      if (this.value() === '\\') {
+        this.tokens.pop();
+      }
+      return this;
+    };
+
+    Lexer.prototype.literalToken = function() {
+      var match, prev, tag, value, _ref2, _ref3, _ref4, _ref5;
+      if (match = OPERATOR.exec(this.chunk)) {
+        value = match[0];
+        if (CODE.test(value)) {
+          this.tagParameters();
+        }
+      } else {
+        value = this.chunk.charAt(0);
+      }
+      tag = value;
+      prev = last(this.tokens);
+      if (value === '=' && prev) {
+        if (!prev[1].reserved && (_ref2 = prev[1], __indexOf.call(JS_FORBIDDEN, _ref2) >= 0)) {
+          this.error("reserved word \"" + (this.value()) + "\" can't be assigned");
+        }
+        if ((_ref3 = prev[1]) === '||' || _ref3 === '&&') {
+          prev[0] = 'COMPOUND_ASSIGN';
+          prev[1] += '=';
+          return value.length;
+        }
+      }
+      if (value === ';') {
+        this.seenFor = false;
+        tag = 'TERMINATOR';
+      } else if (__indexOf.call(MATH, value) >= 0) {
+        tag = 'MATH';
+      } else if (__indexOf.call(COMPARE, value) >= 0) {
+        tag = 'COMPARE';
+      } else if (__indexOf.call(COMPOUND_ASSIGN, value) >= 0) {
+        tag = 'COMPOUND_ASSIGN';
+      } else if (__indexOf.call(UNARY, value) >= 0) {
+        tag = 'UNARY';
+      } else if (__indexOf.call(UNARY_MATH, value) >= 0) {
+        tag = 'UNARY_MATH';
+      } else if (__indexOf.call(SHIFT, value) >= 0) {
+        tag = 'SHIFT';
+      } else if (__indexOf.call(LOGIC, value) >= 0 || value === '?' && (prev != null ? prev.spaced : void 0)) {
+        tag = 'LOGIC';
+      } else if (prev && !prev.spaced) {
+        if (value === '(' && (_ref4 = prev[0], __indexOf.call(CALLABLE, _ref4) >= 0)) {
+          if (prev[0] === '?') {
+            prev[0] = 'FUNC_EXIST';
+          }
+          tag = 'CALL_START';
+        } else if (value === '[' && (_ref5 = prev[0], __indexOf.call(INDEXABLE, _ref5) >= 0)) {
+          tag = 'INDEX_START';
+          switch (prev[0]) {
+            case '?':
+              prev[0] = 'INDEX_SOAK';
+          }
+        }
+      }
+      switch (value) {
+        case '(':
+        case '{':
+        case '[':
+          this.ends.push(INVERSES[value]);
+          break;
+        case ')':
+        case '}':
+        case ']':
+          this.pair(value);
+      }
+      this.token(tag, value);
+      return value.length;
+    };
+
+    Lexer.prototype.sanitizeHeredoc = function(doc, options) {
+      var attempt, herecomment, indent, match, _ref2;
+      indent = options.indent, herecomment = options.herecomment;
+      if (herecomment) {
+        if (HEREDOC_ILLEGAL.test(doc)) {
+          this.error("block comment cannot contain \"*/\", starting");
+        }
+        if (doc.indexOf('\n') < 0) {
+          return doc;
+        }
+      } else {
+        while (match = HEREDOC_INDENT.exec(doc)) {
+          attempt = match[1];
+          if (indent === null || (0 < (_ref2 = attempt.length) && _ref2 < indent.length)) {
+            indent = attempt;
+          }
+        }
+      }
+      if (indent) {
+        doc = doc.replace(RegExp("\\n" + indent, "g"), '\n');
+      }
+      if (!herecomment) {
+        doc = doc.replace(/^\n/, '');
+      }
+      return doc;
+    };
+
+    Lexer.prototype.tagParameters = function() {
+      var i, stack, tok, tokens;
+      if (this.tag() !== ')') {
+        return this;
+      }
+      stack = [];
+      tokens = this.tokens;
+      i = tokens.length;
+      tokens[--i][0] = 'PARAM_END';
+      while (tok = tokens[--i]) {
+        switch (tok[0]) {
+          case ')':
+            stack.push(tok);
+            break;
+          case '(':
+          case 'CALL_START':
+            if (stack.length) {
+              stack.pop();
+            } else if (tok[0] === '(') {
+              tok[0] = 'PARAM_START';
+              return this;
+            } else {
+              return this;
+            }
+        }
+      }
+      return this;
+    };
+
+    Lexer.prototype.closeIndentation = function() {
+      return this.outdentToken(this.indent);
+    };
+
+    Lexer.prototype.balancedString = function(str, end) {
+      var continueCount, i, letter, match, prev, stack, _i, _ref2;
+      continueCount = 0;
+      stack = [end];
+      for (i = _i = 1, _ref2 = str.length; 1 <= _ref2 ? _i < _ref2 : _i > _ref2; i = 1 <= _ref2 ? ++_i : --_i) {
+        if (continueCount) {
+          --continueCount;
+          continue;
+        }
+        switch (letter = str.charAt(i)) {
+          case '\\':
+            ++continueCount;
+            continue;
+          case end:
+            stack.pop();
+            if (!stack.length) {
+              return str.slice(0, +i + 1 || 9e9);
+            }
+            end = stack[stack.length - 1];
+            continue;
+        }
+        if (end === '}' && (letter === '"' || letter === "'")) {
+          stack.push(end = letter);
+        } else if (end === '}' && letter === '/' && (match = HEREGEX.exec(str.slice(i)) || REGEX.exec(str.slice(i)))) {
+          continueCount += match[0].length - 1;
+        } else if (end === '}' && letter === '{') {
+          stack.push(end = '}');
+        } else if (end === '"' && prev === '#' && letter === '{') {
+          stack.push(end = '}');
+        }
+        prev = letter;
+      }
+      return this.error("missing " + (stack.pop()) + ", starting");
+    };
+
+    Lexer.prototype.interpolateString = function(str, options) {
+      var column, errorToken, expr, heredoc, i, inner, interpolated, len, letter, lexedLength, line, locationToken, nested, offsetInChunk, pi, plusToken, popped, regex, rparen, strOffset, tag, token, tokens, value, _i, _len, _ref2, _ref3, _ref4;
+      if (options == null) {
+        options = {};
+      }
+      heredoc = options.heredoc, regex = options.regex, offsetInChunk = options.offsetInChunk, strOffset = options.strOffset, lexedLength = options.lexedLength;
+      offsetInChunk || (offsetInChunk = 0);
+      strOffset || (strOffset = 0);
+      lexedLength || (lexedLength = str.length);
+      tokens = [];
+      pi = 0;
+      i = -1;
+      while (letter = str.charAt(i += 1)) {
+        if (letter === '\\') {
+          i += 1;
+          continue;
+        }
+        if (!(letter === '#' && str.charAt(i + 1) === '{' && (expr = this.balancedString(str.slice(i + 1), '}')))) {
+          continue;
+        }
+        if (pi < i) {
+          tokens.push(this.makeToken('NEOSTRING', str.slice(pi, i), strOffset + pi));
+        }
+        if (!errorToken) {
+          errorToken = this.makeToken('', 'string interpolation', offsetInChunk + i + 1, 2);
+        }
+        inner = expr.slice(1, -1);
+        if (inner.length) {
+          _ref2 = this.getLineAndColumnFromChunk(strOffset + i + 2), line = _ref2[0], column = _ref2[1];
+          nested = new Lexer().tokenize(inner, {
+            line: line,
+            column: column,
+            rewrite: false
+          });
+          popped = nested.pop();
+          if (((_ref3 = nested[0]) != null ? _ref3[0] : void 0) === 'TERMINATOR') {
+            popped = nested.shift();
+          }
+          if (len = nested.length) {
+            if (len > 1) {
+              nested.unshift(this.makeToken('(', '(', strOffset + i + 1, 0));
+              nested.push(this.makeToken(')', ')', strOffset + i + 1 + inner.length, 0));
+            }
+            tokens.push(['TOKENS', nested]);
+          }
+        }
+        i += expr.length;
+        pi = i + 1;
+      }
+      if ((i > pi && pi < str.length)) {
+        tokens.push(this.makeToken('NEOSTRING', str.slice(pi), strOffset + pi));
+      }
+      if (regex) {
+        return tokens;
+      }
+      if (!tokens.length) {
+        return this.token('STRING', '""', offsetInChunk, lexedLength);
+      }
+      if (tokens[0][0] !== 'NEOSTRING') {
+        tokens.unshift(this.makeToken('NEOSTRING', '', offsetInChunk));
+      }
+      if (interpolated = tokens.length > 1) {
+        this.token('(', '(', offsetInChunk, 0, errorToken);
+      }
+      for (i = _i = 0, _len = tokens.length; _i < _len; i = ++_i) {
+        token = tokens[i];
+        tag = token[0], value = token[1];
+        if (i) {
+          if (i) {
+            plusToken = this.token('+', '+');
+          }
+          locationToken = tag === 'TOKENS' ? value[0] : token;
+          plusToken[2] = {
+            first_line: locationToken[2].first_line,
+            first_column: locationToken[2].first_column,
+            last_line: locationToken[2].first_line,
+            last_column: locationToken[2].first_column
+          };
+        }
+        if (tag === 'TOKENS') {
+          (_ref4 = this.tokens).push.apply(_ref4, value);
+        } else if (tag === 'NEOSTRING') {
+          token[0] = 'STRING';
+          token[1] = this.makeString(value, '"', heredoc);
+          this.tokens.push(token);
+        } else {
+          this.error("Unexpected " + tag);
+        }
+      }
+      if (interpolated) {
+        rparen = this.makeToken(')', ')', offsetInChunk + lexedLength, 0);
+        rparen.stringEnd = true;
+        this.tokens.push(rparen);
+      }
+      return tokens;
+    };
+
+    Lexer.prototype.pair = function(tag) {
+      var wanted;
+      if (tag !== (wanted = last(this.ends))) {
+        if ('OUTDENT' !== wanted) {
+          this.error("unmatched " + tag);
+        }
+        this.outdentToken(last(this.indents), true);
+        return this.pair(tag);
+      }
+      return this.ends.pop();
+    };
+
+    Lexer.prototype.getLineAndColumnFromChunk = function(offset) {
+      var column, lineCount, lines, string;
+      if (offset === 0) {
+        return [this.chunkLine, this.chunkColumn];
+      }
+      if (offset >= this.chunk.length) {
+        string = this.chunk;
+      } else {
+        string = this.chunk.slice(0, +(offset - 1) + 1 || 9e9);
+      }
+      lineCount = count(string, '\n');
+      column = this.chunkColumn;
+      if (lineCount > 0) {
+        lines = string.split('\n');
+        column = last(lines).length;
+      } else {
+        column += string.length;
+      }
+      return [this.chunkLine + lineCount, column];
+    };
+
+    Lexer.prototype.makeToken = function(tag, value, offsetInChunk, length) {
+      var lastCharacter, locationData, token, _ref2, _ref3;
+      if (offsetInChunk == null) {
+        offsetInChunk = 0;
+      }
+      if (length == null) {
+        length = value.length;
+      }
+      locationData = {};
+      _ref2 = this.getLineAndColumnFromChunk(offsetInChunk), locationData.first_line = _ref2[0], locationData.first_column = _ref2[1];
+      lastCharacter = Math.max(0, length - 1);
+      _ref3 = this.getLineAndColumnFromChunk(offsetInChunk + lastCharacter), locationData.last_line = _ref3[0], locationData.last_column = _ref3[1];
+      token = [tag, value, locationData];
+      return token;
+    };
+
+    Lexer.prototype.token = function(tag, value, offsetInChunk, length, origin) {
+      var token;
+      token = this.makeToken(tag, value, offsetInChunk, length);
+      if (origin) {
+        token.origin = origin;
+      }
+      this.tokens.push(token);
+      return token;
+    };
+
+    Lexer.prototype.tag = function(index, tag) {
+      var tok;
+      return (tok = last(this.tokens, index)) && (tag ? tok[0] = tag : tok[0]);
+    };
+
+    Lexer.prototype.value = function(index, val) {
+      var tok;
+      return (tok = last(this.tokens, index)) && (val ? tok[1] = val : tok[1]);
+    };
+
+    Lexer.prototype.unfinished = function() {
+      var _ref2;
+      return LINE_CONTINUER.test(this.chunk) || ((_ref2 = this.tag()) === '\\' || _ref2 === '.' || _ref2 === '?.' || _ref2 === '?::' || _ref2 === 'UNARY' || _ref2 === 'MATH' || _ref2 === 'UNARY_MATH' || _ref2 === '+' || _ref2 === '-' || _ref2 === '**' || _ref2 === 'SHIFT' || _ref2 === 'RELATION' || _ref2 === 'COMPARE' || _ref2 === 'LOGIC' || _ref2 === 'THROW' || _ref2 === 'EXTENDS');
+    };
+
+    Lexer.prototype.removeNewlines = function(str) {
+      return str.replace(/^\s*\n\s*/, '').replace(/([^\\]|\\\\)\s*\n\s*$/, '$1');
+    };
+
+    Lexer.prototype.escapeLines = function(str, heredoc) {
+      str = str.replace(/\\[^\S\n]*(\n|\\)\s*/g, function(escaped, character) {
+        if (character === '\n') {
+          return '';
+        } else {
+          return escaped;
+        }
+      });
+      if (heredoc) {
+        return str.replace(MULTILINER, '\\n');
+      } else {
+        return str.replace(/\s*\n\s*/g, ' ');
+      }
+    };
+
+    Lexer.prototype.makeString = function(body, quote, heredoc) {
+      if (!body) {
+        return quote + quote;
+      }
+      body = body.replace(RegExp("\\\\(" + quote + "|\\\\)", "g"), function(match, contents) {
+        if (contents === quote) {
+          return contents;
+        } else {
+          return match;
+        }
+      });
+      body = body.replace(RegExp("" + quote, "g"), '\\$&');
+      return quote + this.escapeLines(body, heredoc) + quote;
+    };
+
+    Lexer.prototype.error = function(message, offset) {
+      var first_column, first_line, _ref2;
+      if (offset == null) {
+        offset = 0;
+      }
+      _ref2 = this.getLineAndColumnFromChunk(offset), first_line = _ref2[0], first_column = _ref2[1];
+      return throwSyntaxError(message, {
+        first_line: first_line,
+        first_column: first_column
+      });
+    };
+
+    return Lexer;
+
+  })();
+
+  JS_KEYWORDS = ['true', 'false', 'null', 'this', 'new', 'delete', 'typeof', 'in', 'instanceof', 'return', 'throw', 'break', 'continue', 'debugger', 'if', 'else', 'switch', 'for', 'while', 'do', 'try', 'catch', 'finally', 'class', 'extends', 'super'];
+
+  COFFEE_KEYWORDS = ['undefined', 'then', 'unless', 'until', 'loop', 'of', 'by', 'when'];
+
+  COFFEE_ALIAS_MAP = {
+    and: '&&',
+    or: '||',
+    is: '==',
+    isnt: '!=',
+    not: '!',
+    yes: 'true',
+    no: 'false',
+    on: 'true',
+    off: 'false'
+  };
+
+  COFFEE_ALIASES = (function() {
+    var _results;
+    _results = [];
+    for (key in COFFEE_ALIAS_MAP) {
+      _results.push(key);
+    }
+    return _results;
+  })();
+
+  COFFEE_KEYWORDS = COFFEE_KEYWORDS.concat(COFFEE_ALIASES);
+
+  RESERVED = ['case', 'default', 'function', 'var', 'void', 'with', 'const', 'let', 'enum', 'export', 'import', 'native', '__hasProp', '__extends', '__slice', '__bind', '__indexOf', 'implements', 'interface', 'package', 'private', 'protected', 'public', 'static', 'yield'];
+
+  STRICT_PROSCRIBED = ['arguments', 'eval'];
+
+  JS_FORBIDDEN = JS_KEYWORDS.concat(RESERVED).concat(STRICT_PROSCRIBED);
+
+  exports.RESERVED = RESERVED.concat(JS_KEYWORDS).concat(COFFEE_KEYWORDS).concat(STRICT_PROSCRIBED);
+
+  exports.STRICT_PROSCRIBED = STRICT_PROSCRIBED;
+
+  BOM = 65279;
+
+  IDENTIFIER = /^([$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?!:))?/;
+
+  NUMBER = /^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i;
+
+  HEREDOC = /^("""|''')((?:\\[\s\S]|[^\\])*?)(?:\n[^\n\S]*)?\1/;
+
+  OPERATOR = /^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/;
+
+  WHITESPACE = /^[^\n\S]+/;
+
+  COMMENT = /^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/;
+
+  CODE = /^[-=]>/;
+
+  MULTI_DENT = /^(?:\n[^\n\S]*)+/;
+
+  SIMPLESTR = /^'[^\\']*(?:\\[\s\S][^\\']*)*'/;
+
+  JSTOKEN = /^`[^\\`]*(?:\\.[^\\`]*)*`/;
+
+  REGEX = /^(\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)([imgy]{0,4})(?!\w)/;
+
+  HEREGEX = /^\/{3}((?:\\?[\s\S])+?)\/{3}([imgy]{0,4})(?!\w)/;
+
+  HEREGEX_OMIT = /((?:\\\\)+)|\\(\s|\/)|\s+(?:#.*)?/g;
+
+  MULTILINER = /\n/g;
+
+  HEREDOC_INDENT = /\n+([^\n\S]*)/g;
+
+  HEREDOC_ILLEGAL = /\*\//;
+
+  LINE_CONTINUER = /^\s*(?:,|\??\.(?![.\d])|::)/;
+
+  TRAILING_SPACES = /\s+$/;
+
+  COMPOUND_ASSIGN = ['-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?=', '<<=', '>>=', '>>>=', '&=', '^=', '|=', '**=', '//=', '%%='];
+
+  UNARY = ['NEW', 'TYPEOF', 'DELETE', 'DO'];
+
+  UNARY_MATH = ['!', '~'];
+
+  LOGIC = ['&&', '||', '&', '|', '^'];
+
+  SHIFT = ['<<', '>>', '>>>'];
+
+  COMPARE = ['==', '!=', '<', '>', '<=', '>='];
+
+  MATH = ['*', '/', '%', '//', '%%'];
+
+  RELATION = ['IN', 'OF', 'INSTANCEOF'];
+
+  BOOL = ['TRUE', 'FALSE'];
+
+  NOT_REGEX = ['NUMBER', 'REGEX', 'BOOL', 'NULL', 'UNDEFINED', '++', '--'];
+
+  NOT_SPACED_REGEX = NOT_REGEX.concat(')', '}', 'THIS', 'IDENTIFIER', 'STRING', ']');
+
+  CALLABLE = ['IDENTIFIER', 'STRING', 'REGEX', ')', ']', '}', '?', '::', '@', 'THIS', 'SUPER'];
+
+  INDEXABLE = CALLABLE.concat('NUMBER', 'BOOL', 'NULL', 'UNDEFINED');
+
+  LINE_BREAK = ['INDENT', 'OUTDENT', 'TERMINATOR'];
+
+  INDENTABLE_CLOSERS = [')', '}', ']'];
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/nodes.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/nodes.js
new file mode 100644 (file)
index 0000000..52c99a9
--- /dev/null
@@ -0,0 +1,3156 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var Access, Arr, Assign, Base, Block, Call, Class, Code, CodeFragment, Comment, Existence, Expansion, Extends, For, HEXNUM, IDENTIFIER, IDENTIFIER_STR, IS_REGEX, IS_STRING, If, In, Index, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, METHOD_DEF, NEGATE, NO, NUMBER, Obj, Op, Param, Parens, RESERVED, Range, Return, SIMPLENUM, STRICT_PROSCRIBED, Scope, Slice, Splat, Switch, TAB, THIS, Throw, Try, UTILITIES, Value, While, YES, addLocationDataFn, compact, del, ends, extend, flatten, fragmentsToText, isLiteralArguments, isLiteralThis, last, locationDataToString, merge, multident, parseNum, some, starts, throwSyntaxError, unfoldSoak, utility, _ref, _ref1,
+    __hasProp = {}.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 = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
+    __slice = [].slice;
+
+  Error.stackTraceLimit = Infinity;
+
+  Scope = require('./scope').Scope;
+
+  _ref = require('./lexer'), RESERVED = _ref.RESERVED, STRICT_PROSCRIBED = _ref.STRICT_PROSCRIBED;
+
+  _ref1 = require('./helpers'), compact = _ref1.compact, flatten = _ref1.flatten, extend = _ref1.extend, merge = _ref1.merge, del = _ref1.del, starts = _ref1.starts, ends = _ref1.ends, last = _ref1.last, some = _ref1.some, addLocationDataFn = _ref1.addLocationDataFn, locationDataToString = _ref1.locationDataToString, throwSyntaxError = _ref1.throwSyntaxError;
+
+  exports.extend = extend;
+
+  exports.addLocationDataFn = addLocationDataFn;
+
+  YES = function() {
+    return true;
+  };
+
+  NO = function() {
+    return false;
+  };
+
+  THIS = function() {
+    return this;
+  };
+
+  NEGATE = function() {
+    this.negated = !this.negated;
+    return this;
+  };
+
+  exports.CodeFragment = CodeFragment = (function() {
+    function CodeFragment(parent, code) {
+      var _ref2;
+      this.code = "" + code;
+      this.locationData = parent != null ? parent.locationData : void 0;
+      this.type = (parent != null ? (_ref2 = parent.constructor) != null ? _ref2.name : void 0 : void 0) || 'unknown';
+    }
+
+    CodeFragment.prototype.toString = function() {
+      return "" + this.code + (this.locationData ? ": " + locationDataToString(this.locationData) : '');
+    };
+
+    return CodeFragment;
+
+  })();
+
+  fragmentsToText = function(fragments) {
+    var fragment;
+    return ((function() {
+      var _i, _len, _results;
+      _results = [];
+      for (_i = 0, _len = fragments.length; _i < _len; _i++) {
+        fragment = fragments[_i];
+        _results.push(fragment.code);
+      }
+      return _results;
+    })()).join('');
+  };
+
+  exports.Base = Base = (function() {
+    function Base() {}
+
+    Base.prototype.compile = function(o, lvl) {
+      return fragmentsToText(this.compileToFragments(o, lvl));
+    };
+
+    Base.prototype.compileToFragments = function(o, lvl) {
+      var node;
+      o = extend({}, o);
+      if (lvl) {
+        o.level = lvl;
+      }
+      node = this.unfoldSoak(o) || this;
+      node.tab = o.indent;
+      if (o.level === LEVEL_TOP || !node.isStatement(o)) {
+        return node.compileNode(o);
+      } else {
+        return node.compileClosure(o);
+      }
+    };
+
+    Base.prototype.compileClosure = function(o) {
+      var args, argumentsNode, func, jumpNode, meth;
+      if (jumpNode = this.jumps()) {
+        jumpNode.error('cannot use a pure statement in an expression');
+      }
+      o.sharedScope = true;
+      func = new Code([], Block.wrap([this]));
+      args = [];
+      if ((argumentsNode = this.contains(isLiteralArguments)) || this.contains(isLiteralThis)) {
+        args = [new Literal('this')];
+        if (argumentsNode) {
+          meth = 'apply';
+          args.push(new Literal('arguments'));
+        } else {
+          meth = 'call';
+        }
+        func = new Value(func, [new Access(new Literal(meth))]);
+      }
+      return (new Call(func, args)).compileNode(o);
+    };
+
+    Base.prototype.cache = function(o, level, reused) {
+      var ref, sub;
+      if (!this.isComplex()) {
+        ref = level ? this.compileToFragments(o, level) : this;
+        return [ref, ref];
+      } else {
+        ref = new Literal(reused || o.scope.freeVariable('ref'));
+        sub = new Assign(ref, this);
+        if (level) {
+          return [sub.compileToFragments(o, level), [this.makeCode(ref.value)]];
+        } else {
+          return [sub, ref];
+        }
+      }
+    };
+
+    Base.prototype.cacheToCodeFragments = function(cacheValues) {
+      return [fragmentsToText(cacheValues[0]), fragmentsToText(cacheValues[1])];
+    };
+
+    Base.prototype.makeReturn = function(res) {
+      var me;
+      me = this.unwrapAll();
+      if (res) {
+        return new Call(new Literal("" + res + ".push"), [me]);
+      } else {
+        return new Return(me);
+      }
+    };
+
+    Base.prototype.contains = function(pred) {
+      var node;
+      node = void 0;
+      this.traverseChildren(false, function(n) {
+        if (pred(n)) {
+          node = n;
+          return false;
+        }
+      });
+      return node;
+    };
+
+    Base.prototype.lastNonComment = function(list) {
+      var i;
+      i = list.length;
+      while (i--) {
+        if (!(list[i] instanceof Comment)) {
+          return list[i];
+        }
+      }
+      return null;
+    };
+
+    Base.prototype.toString = function(idt, name) {
+      var tree;
+      if (idt == null) {
+        idt = '';
+      }
+      if (name == null) {
+        name = this.constructor.name;
+      }
+      tree = '\n' + idt + name;
+      if (this.soak) {
+        tree += '?';
+      }
+      this.eachChild(function(node) {
+        return tree += node.toString(idt + TAB);
+      });
+      return tree;
+    };
+
+    Base.prototype.eachChild = function(func) {
+      var attr, child, _i, _j, _len, _len1, _ref2, _ref3;
+      if (!this.children) {
+        return this;
+      }
+      _ref2 = this.children;
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        attr = _ref2[_i];
+        if (this[attr]) {
+          _ref3 = flatten([this[attr]]);
+          for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
+            child = _ref3[_j];
+            if (func(child) === false) {
+              return this;
+            }
+          }
+        }
+      }
+      return this;
+    };
+
+    Base.prototype.traverseChildren = function(crossScope, func) {
+      return this.eachChild(function(child) {
+        var recur;
+        recur = func(child);
+        if (recur !== false) {
+          return child.traverseChildren(crossScope, func);
+        }
+      });
+    };
+
+    Base.prototype.invert = function() {
+      return new Op('!', this);
+    };
+
+    Base.prototype.unwrapAll = function() {
+      var node;
+      node = this;
+      while (node !== (node = node.unwrap())) {
+        continue;
+      }
+      return node;
+    };
+
+    Base.prototype.children = [];
+
+    Base.prototype.isStatement = NO;
+
+    Base.prototype.jumps = NO;
+
+    Base.prototype.isComplex = YES;
+
+    Base.prototype.isChainable = NO;
+
+    Base.prototype.isAssignable = NO;
+
+    Base.prototype.unwrap = THIS;
+
+    Base.prototype.unfoldSoak = NO;
+
+    Base.prototype.assigns = NO;
+
+    Base.prototype.updateLocationDataIfMissing = function(locationData) {
+      if (this.locationData) {
+        return this;
+      }
+      this.locationData = locationData;
+      return this.eachChild(function(child) {
+        return child.updateLocationDataIfMissing(locationData);
+      });
+    };
+
+    Base.prototype.error = function(message) {
+      return throwSyntaxError(message, this.locationData);
+    };
+
+    Base.prototype.makeCode = function(code) {
+      return new CodeFragment(this, code);
+    };
+
+    Base.prototype.wrapInBraces = function(fragments) {
+      return [].concat(this.makeCode('('), fragments, this.makeCode(')'));
+    };
+
+    Base.prototype.joinFragmentArrays = function(fragmentsList, joinStr) {
+      var answer, fragments, i, _i, _len;
+      answer = [];
+      for (i = _i = 0, _len = fragmentsList.length; _i < _len; i = ++_i) {
+        fragments = fragmentsList[i];
+        if (i) {
+          answer.push(this.makeCode(joinStr));
+        }
+        answer = answer.concat(fragments);
+      }
+      return answer;
+    };
+
+    return Base;
+
+  })();
+
+  exports.Block = Block = (function(_super) {
+    __extends(Block, _super);
+
+    function Block(nodes) {
+      this.expressions = compact(flatten(nodes || []));
+    }
+
+    Block.prototype.children = ['expressions'];
+
+    Block.prototype.push = function(node) {
+      this.expressions.push(node);
+      return this;
+    };
+
+    Block.prototype.pop = function() {
+      return this.expressions.pop();
+    };
+
+    Block.prototype.unshift = function(node) {
+      this.expressions.unshift(node);
+      return this;
+    };
+
+    Block.prototype.unwrap = function() {
+      if (this.expressions.length === 1) {
+        return this.expressions[0];
+      } else {
+        return this;
+      }
+    };
+
+    Block.prototype.isEmpty = function() {
+      return !this.expressions.length;
+    };
+
+    Block.prototype.isStatement = function(o) {
+      var exp, _i, _len, _ref2;
+      _ref2 = this.expressions;
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        exp = _ref2[_i];
+        if (exp.isStatement(o)) {
+          return true;
+        }
+      }
+      return false;
+    };
+
+    Block.prototype.jumps = function(o) {
+      var exp, jumpNode, _i, _len, _ref2;
+      _ref2 = this.expressions;
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        exp = _ref2[_i];
+        if (jumpNode = exp.jumps(o)) {
+          return jumpNode;
+        }
+      }
+    };
+
+    Block.prototype.makeReturn = function(res) {
+      var expr, len;
+      len = this.expressions.length;
+      while (len--) {
+        expr = this.expressions[len];
+        if (!(expr instanceof Comment)) {
+          this.expressions[len] = expr.makeReturn(res);
+          if (expr instanceof Return && !expr.expression) {
+            this.expressions.splice(len, 1);
+          }
+          break;
+        }
+      }
+      return this;
+    };
+
+    Block.prototype.compileToFragments = function(o, level) {
+      if (o == null) {
+        o = {};
+      }
+      if (o.scope) {
+        return Block.__super__.compileToFragments.call(this, o, level);
+      } else {
+        return this.compileRoot(o);
+      }
+    };
+
+    Block.prototype.compileNode = function(o) {
+      var answer, compiledNodes, fragments, index, node, top, _i, _len, _ref2;
+      this.tab = o.indent;
+      top = o.level === LEVEL_TOP;
+      compiledNodes = [];
+      _ref2 = this.expressions;
+      for (index = _i = 0, _len = _ref2.length; _i < _len; index = ++_i) {
+        node = _ref2[index];
+        node = node.unwrapAll();
+        node = node.unfoldSoak(o) || node;
+        if (node instanceof Block) {
+          compiledNodes.push(node.compileNode(o));
+        } else if (top) {
+          node.front = true;
+          fragments = node.compileToFragments(o);
+          if (!node.isStatement(o)) {
+            fragments.unshift(this.makeCode("" + this.tab));
+            fragments.push(this.makeCode(";"));
+          }
+          compiledNodes.push(fragments);
+        } else {
+          compiledNodes.push(node.compileToFragments(o, LEVEL_LIST));
+        }
+      }
+      if (top) {
+        if (this.spaced) {
+          return [].concat(this.joinFragmentArrays(compiledNodes, '\n\n'), this.makeCode("\n"));
+        } else {
+          return this.joinFragmentArrays(compiledNodes, '\n');
+        }
+      }
+      if (compiledNodes.length) {
+        answer = this.joinFragmentArrays(compiledNodes, ', ');
+      } else {
+        answer = [this.makeCode("void 0")];
+      }
+      if (compiledNodes.length > 1 && o.level >= LEVEL_LIST) {
+        return this.wrapInBraces(answer);
+      } else {
+        return answer;
+      }
+    };
+
+    Block.prototype.compileRoot = function(o) {
+      var exp, fragments, i, name, prelude, preludeExps, rest, _i, _len, _ref2;
+      o.indent = o.bare ? '' : TAB;
+      o.level = LEVEL_TOP;
+      this.spaced = true;
+      o.scope = new Scope(null, this, null);
+      _ref2 = o.locals || [];
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        name = _ref2[_i];
+        o.scope.parameter(name);
+      }
+      prelude = [];
+      if (!o.bare) {
+        preludeExps = (function() {
+          var _j, _len1, _ref3, _results;
+          _ref3 = this.expressions;
+          _results = [];
+          for (i = _j = 0, _len1 = _ref3.length; _j < _len1; i = ++_j) {
+            exp = _ref3[i];
+            if (!(exp.unwrap() instanceof Comment)) {
+              break;
+            }
+            _results.push(exp);
+          }
+          return _results;
+        }).call(this);
+        rest = this.expressions.slice(preludeExps.length);
+        this.expressions = preludeExps;
+        if (preludeExps.length) {
+          prelude = this.compileNode(merge(o, {
+            indent: ''
+          }));
+          prelude.push(this.makeCode("\n"));
+        }
+        this.expressions = rest;
+      }
+      fragments = this.compileWithDeclarations(o);
+      if (o.bare) {
+        return fragments;
+      }
+      return [].concat(prelude, this.makeCode("(function() {\n"), fragments, this.makeCode("\n}).call(this);\n"));
+    };
+
+    Block.prototype.compileWithDeclarations = function(o) {
+      var assigns, declars, exp, fragments, i, post, rest, scope, spaced, _i, _len, _ref2, _ref3, _ref4;
+      fragments = [];
+      post = [];
+      _ref2 = this.expressions;
+      for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
+        exp = _ref2[i];
+        exp = exp.unwrap();
+        if (!(exp instanceof Comment || exp instanceof Literal)) {
+          break;
+        }
+      }
+      o = merge(o, {
+        level: LEVEL_TOP
+      });
+      if (i) {
+        rest = this.expressions.splice(i, 9e9);
+        _ref3 = [this.spaced, false], spaced = _ref3[0], this.spaced = _ref3[1];
+        _ref4 = [this.compileNode(o), spaced], fragments = _ref4[0], this.spaced = _ref4[1];
+        this.expressions = rest;
+      }
+      post = this.compileNode(o);
+      scope = o.scope;
+      if (scope.expressions === this) {
+        declars = o.scope.hasDeclarations();
+        assigns = scope.hasAssignments;
+        if (declars || assigns) {
+          if (i) {
+            fragments.push(this.makeCode('\n'));
+          }
+          fragments.push(this.makeCode("" + this.tab + "var "));
+          if (declars) {
+            fragments.push(this.makeCode(scope.declaredVariables().join(', ')));
+          }
+          if (assigns) {
+            if (declars) {
+              fragments.push(this.makeCode(",\n" + (this.tab + TAB)));
+            }
+            fragments.push(this.makeCode(scope.assignedVariables().join(",\n" + (this.tab + TAB))));
+          }
+          fragments.push(this.makeCode(";\n" + (this.spaced ? '\n' : '')));
+        } else if (fragments.length && post.length) {
+          fragments.push(this.makeCode("\n"));
+        }
+      }
+      return fragments.concat(post);
+    };
+
+    Block.wrap = function(nodes) {
+      if (nodes.length === 1 && nodes[0] instanceof Block) {
+        return nodes[0];
+      }
+      return new Block(nodes);
+    };
+
+    return Block;
+
+  })(Base);
+
+  exports.Literal = Literal = (function(_super) {
+    __extends(Literal, _super);
+
+    function Literal(value) {
+      this.value = value;
+    }
+
+    Literal.prototype.makeReturn = function() {
+      if (this.isStatement()) {
+        return this;
+      } else {
+        return Literal.__super__.makeReturn.apply(this, arguments);
+      }
+    };
+
+    Literal.prototype.isAssignable = function() {
+      return IDENTIFIER.test(this.value);
+    };
+
+    Literal.prototype.isStatement = function() {
+      var _ref2;
+      return (_ref2 = this.value) === 'break' || _ref2 === 'continue' || _ref2 === 'debugger';
+    };
+
+    Literal.prototype.isComplex = NO;
+
+    Literal.prototype.assigns = function(name) {
+      return name === this.value;
+    };
+
+    Literal.prototype.jumps = function(o) {
+      if (this.value === 'break' && !((o != null ? o.loop : void 0) || (o != null ? o.block : void 0))) {
+        return this;
+      }
+      if (this.value === 'continue' && !(o != null ? o.loop : void 0)) {
+        return this;
+      }
+    };
+
+    Literal.prototype.compileNode = function(o) {
+      var answer, code, _ref2;
+      code = this.value === 'this' ? ((_ref2 = o.scope.method) != null ? _ref2.bound : void 0) ? o.scope.method.context : this.value : this.value.reserved ? "\"" + this.value + "\"" : this.value;
+      answer = this.isStatement() ? "" + this.tab + code + ";" : code;
+      return [this.makeCode(answer)];
+    };
+
+    Literal.prototype.toString = function() {
+      return ' "' + this.value + '"';
+    };
+
+    return Literal;
+
+  })(Base);
+
+  exports.Undefined = (function(_super) {
+    __extends(Undefined, _super);
+
+    function Undefined() {
+      return Undefined.__super__.constructor.apply(this, arguments);
+    }
+
+    Undefined.prototype.isAssignable = NO;
+
+    Undefined.prototype.isComplex = NO;
+
+    Undefined.prototype.compileNode = function(o) {
+      return [this.makeCode(o.level >= LEVEL_ACCESS ? '(void 0)' : 'void 0')];
+    };
+
+    return Undefined;
+
+  })(Base);
+
+  exports.Null = (function(_super) {
+    __extends(Null, _super);
+
+    function Null() {
+      return Null.__super__.constructor.apply(this, arguments);
+    }
+
+    Null.prototype.isAssignable = NO;
+
+    Null.prototype.isComplex = NO;
+
+    Null.prototype.compileNode = function() {
+      return [this.makeCode("null")];
+    };
+
+    return Null;
+
+  })(Base);
+
+  exports.Bool = (function(_super) {
+    __extends(Bool, _super);
+
+    Bool.prototype.isAssignable = NO;
+
+    Bool.prototype.isComplex = NO;
+
+    Bool.prototype.compileNode = function() {
+      return [this.makeCode(this.val)];
+    };
+
+    function Bool(val) {
+      this.val = val;
+    }
+
+    return Bool;
+
+  })(Base);
+
+  exports.Return = Return = (function(_super) {
+    __extends(Return, _super);
+
+    function Return(expression) {
+      this.expression = expression;
+    }
+
+    Return.prototype.children = ['expression'];
+
+    Return.prototype.isStatement = YES;
+
+    Return.prototype.makeReturn = THIS;
+
+    Return.prototype.jumps = THIS;
+
+    Return.prototype.compileToFragments = function(o, level) {
+      var expr, _ref2;
+      expr = (_ref2 = this.expression) != null ? _ref2.makeReturn() : void 0;
+      if (expr && !(expr instanceof Return)) {
+        return expr.compileToFragments(o, level);
+      } else {
+        return Return.__super__.compileToFragments.call(this, o, level);
+      }
+    };
+
+    Return.prototype.compileNode = function(o) {
+      var answer;
+      answer = [];
+      answer.push(this.makeCode(this.tab + ("return" + (this.expression ? " " : ""))));
+      if (this.expression) {
+        answer = answer.concat(this.expression.compileToFragments(o, LEVEL_PAREN));
+      }
+      answer.push(this.makeCode(";"));
+      return answer;
+    };
+
+    return Return;
+
+  })(Base);
+
+  exports.Value = Value = (function(_super) {
+    __extends(Value, _super);
+
+    function Value(base, props, tag) {
+      if (!props && base instanceof Value) {
+        return base;
+      }
+      this.base = base;
+      this.properties = props || [];
+      if (tag) {
+        this[tag] = true;
+      }
+      return this;
+    }
+
+    Value.prototype.children = ['base', 'properties'];
+
+    Value.prototype.add = function(props) {
+      this.properties = this.properties.concat(props);
+      return this;
+    };
+
+    Value.prototype.hasProperties = function() {
+      return !!this.properties.length;
+    };
+
+    Value.prototype.bareLiteral = function(type) {
+      return !this.properties.length && this.base instanceof type;
+    };
+
+    Value.prototype.isArray = function() {
+      return this.bareLiteral(Arr);
+    };
+
+    Value.prototype.isRange = function() {
+      return this.bareLiteral(Range);
+    };
+
+    Value.prototype.isComplex = function() {
+      return this.hasProperties() || this.base.isComplex();
+    };
+
+    Value.prototype.isAssignable = function() {
+      return this.hasProperties() || this.base.isAssignable();
+    };
+
+    Value.prototype.isSimpleNumber = function() {
+      return this.bareLiteral(Literal) && SIMPLENUM.test(this.base.value);
+    };
+
+    Value.prototype.isString = function() {
+      return this.bareLiteral(Literal) && IS_STRING.test(this.base.value);
+    };
+
+    Value.prototype.isRegex = function() {
+      return this.bareLiteral(Literal) && IS_REGEX.test(this.base.value);
+    };
+
+    Value.prototype.isAtomic = function() {
+      var node, _i, _len, _ref2;
+      _ref2 = this.properties.concat(this.base);
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        node = _ref2[_i];
+        if (node.soak || node instanceof Call) {
+          return false;
+        }
+      }
+      return true;
+    };
+
+    Value.prototype.isNotCallable = function() {
+      return this.isSimpleNumber() || this.isString() || this.isRegex() || this.isArray() || this.isRange() || this.isSplice() || this.isObject();
+    };
+
+    Value.prototype.isStatement = function(o) {
+      return !this.properties.length && this.base.isStatement(o);
+    };
+
+    Value.prototype.assigns = function(name) {
+      return !this.properties.length && this.base.assigns(name);
+    };
+
+    Value.prototype.jumps = function(o) {
+      return !this.properties.length && this.base.jumps(o);
+    };
+
+    Value.prototype.isObject = function(onlyGenerated) {
+      if (this.properties.length) {
+        return false;
+      }
+      return (this.base instanceof Obj) && (!onlyGenerated || this.base.generated);
+    };
+
+    Value.prototype.isSplice = function() {
+      return last(this.properties) instanceof Slice;
+    };
+
+    Value.prototype.looksStatic = function(className) {
+      var _ref2;
+      return this.base.value === className && this.properties.length && ((_ref2 = this.properties[0].name) != null ? _ref2.value : void 0) !== 'prototype';
+    };
+
+    Value.prototype.unwrap = function() {
+      if (this.properties.length) {
+        return this;
+      } else {
+        return this.base;
+      }
+    };
+
+    Value.prototype.cacheReference = function(o) {
+      var base, bref, name, nref;
+      name = last(this.properties);
+      if (this.properties.length < 2 && !this.base.isComplex() && !(name != null ? name.isComplex() : void 0)) {
+        return [this, this];
+      }
+      base = new Value(this.base, this.properties.slice(0, -1));
+      if (base.isComplex()) {
+        bref = new Literal(o.scope.freeVariable('base'));
+        base = new Value(new Parens(new Assign(bref, base)));
+      }
+      if (!name) {
+        return [base, bref];
+      }
+      if (name.isComplex()) {
+        nref = new Literal(o.scope.freeVariable('name'));
+        name = new Index(new Assign(nref, name.index));
+        nref = new Index(nref);
+      }
+      return [base.add(name), new Value(bref || base.base, [nref || name])];
+    };
+
+    Value.prototype.compileNode = function(o) {
+      var fragments, prop, props, _i, _len;
+      this.base.front = this.front;
+      props = this.properties;
+      fragments = this.base.compileToFragments(o, (props.length ? LEVEL_ACCESS : null));
+      if ((this.base instanceof Parens || props.length) && SIMPLENUM.test(fragmentsToText(fragments))) {
+        fragments.push(this.makeCode('.'));
+      }
+      for (_i = 0, _len = props.length; _i < _len; _i++) {
+        prop = props[_i];
+        fragments.push.apply(fragments, prop.compileToFragments(o));
+      }
+      return fragments;
+    };
+
+    Value.prototype.unfoldSoak = function(o) {
+      return this.unfoldedSoak != null ? this.unfoldedSoak : this.unfoldedSoak = (function(_this) {
+        return function() {
+          var fst, i, ifn, prop, ref, snd, _i, _len, _ref2, _ref3;
+          if (ifn = _this.base.unfoldSoak(o)) {
+            (_ref2 = ifn.body.properties).push.apply(_ref2, _this.properties);
+            return ifn;
+          }
+          _ref3 = _this.properties;
+          for (i = _i = 0, _len = _ref3.length; _i < _len; i = ++_i) {
+            prop = _ref3[i];
+            if (!prop.soak) {
+              continue;
+            }
+            prop.soak = false;
+            fst = new Value(_this.base, _this.properties.slice(0, i));
+            snd = new Value(_this.base, _this.properties.slice(i));
+            if (fst.isComplex()) {
+              ref = new Literal(o.scope.freeVariable('ref'));
+              fst = new Parens(new Assign(ref, fst));
+              snd.base = ref;
+            }
+            return new If(new Existence(fst), snd, {
+              soak: true
+            });
+          }
+          return false;
+        };
+      })(this)();
+    };
+
+    return Value;
+
+  })(Base);
+
+  exports.Comment = Comment = (function(_super) {
+    __extends(Comment, _super);
+
+    function Comment(comment) {
+      this.comment = comment;
+    }
+
+    Comment.prototype.isStatement = YES;
+
+    Comment.prototype.makeReturn = THIS;
+
+    Comment.prototype.compileNode = function(o, level) {
+      var code, comment;
+      comment = this.comment.replace(/^(\s*)#/gm, "$1 *");
+      code = "/*" + (multident(comment, this.tab)) + (__indexOf.call(comment, '\n') >= 0 ? "\n" + this.tab : '') + " */";
+      if ((level || o.level) === LEVEL_TOP) {
+        code = o.indent + code;
+      }
+      return [this.makeCode("\n"), this.makeCode(code)];
+    };
+
+    return Comment;
+
+  })(Base);
+
+  exports.Call = Call = (function(_super) {
+    __extends(Call, _super);
+
+    function Call(variable, args, soak) {
+      this.args = args != null ? args : [];
+      this.soak = soak;
+      this.isNew = false;
+      this.isSuper = variable === 'super';
+      this.variable = this.isSuper ? null : variable;
+      if (variable instanceof Value && variable.isNotCallable()) {
+        variable.error("literal is not a function");
+      }
+    }
+
+    Call.prototype.children = ['variable', 'args'];
+
+    Call.prototype.newInstance = function() {
+      var base, _ref2;
+      base = ((_ref2 = this.variable) != null ? _ref2.base : void 0) || this.variable;
+      if (base instanceof Call && !base.isNew) {
+        base.newInstance();
+      } else {
+        this.isNew = true;
+      }
+      return this;
+    };
+
+    Call.prototype.superReference = function(o) {
+      var accesses, method;
+      method = o.scope.namedMethod();
+      if (method != null ? method.klass : void 0) {
+        accesses = [new Access(new Literal('__super__'))];
+        if (method["static"]) {
+          accesses.push(new Access(new Literal('constructor')));
+        }
+        accesses.push(new Access(new Literal(method.name)));
+        return (new Value(new Literal(method.klass), accesses)).compile(o);
+      } else if (method != null ? method.ctor : void 0) {
+        return "" + method.name + ".__super__.constructor";
+      } else {
+        return this.error('cannot call super outside of an instance method.');
+      }
+    };
+
+    Call.prototype.superThis = function(o) {
+      var method;
+      method = o.scope.method;
+      return (method && !method.klass && method.context) || "this";
+    };
+
+    Call.prototype.unfoldSoak = function(o) {
+      var call, ifn, left, list, rite, _i, _len, _ref2, _ref3;
+      if (this.soak) {
+        if (this.variable) {
+          if (ifn = unfoldSoak(o, this, 'variable')) {
+            return ifn;
+          }
+          _ref2 = new Value(this.variable).cacheReference(o), left = _ref2[0], rite = _ref2[1];
+        } else {
+          left = new Literal(this.superReference(o));
+          rite = new Value(left);
+        }
+        rite = new Call(rite, this.args);
+        rite.isNew = this.isNew;
+        left = new Literal("typeof " + (left.compile(o)) + " === \"function\"");
+        return new If(left, new Value(rite), {
+          soak: true
+        });
+      }
+      call = this;
+      list = [];
+      while (true) {
+        if (call.variable instanceof Call) {
+          list.push(call);
+          call = call.variable;
+          continue;
+        }
+        if (!(call.variable instanceof Value)) {
+          break;
+        }
+        list.push(call);
+        if (!((call = call.variable.base) instanceof Call)) {
+          break;
+        }
+      }
+      _ref3 = list.reverse();
+      for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
+        call = _ref3[_i];
+        if (ifn) {
+          if (call.variable instanceof Call) {
+            call.variable = ifn;
+          } else {
+            call.variable.base = ifn;
+          }
+        }
+        ifn = unfoldSoak(o, call, 'variable');
+      }
+      return ifn;
+    };
+
+    Call.prototype.compileNode = function(o) {
+      var arg, argIndex, compiledArgs, compiledArray, fragments, preface, _i, _len, _ref2, _ref3;
+      if ((_ref2 = this.variable) != null) {
+        _ref2.front = this.front;
+      }
+      compiledArray = Splat.compileSplattedArray(o, this.args, true);
+      if (compiledArray.length) {
+        return this.compileSplat(o, compiledArray);
+      }
+      compiledArgs = [];
+      _ref3 = this.args;
+      for (argIndex = _i = 0, _len = _ref3.length; _i < _len; argIndex = ++_i) {
+        arg = _ref3[argIndex];
+        if (argIndex) {
+          compiledArgs.push(this.makeCode(", "));
+        }
+        compiledArgs.push.apply(compiledArgs, arg.compileToFragments(o, LEVEL_LIST));
+      }
+      fragments = [];
+      if (this.isSuper) {
+        preface = this.superReference(o) + (".call(" + (this.superThis(o)));
+        if (compiledArgs.length) {
+          preface += ", ";
+        }
+        fragments.push(this.makeCode(preface));
+      } else {
+        if (this.isNew) {
+          fragments.push(this.makeCode('new '));
+        }
+        fragments.push.apply(fragments, this.variable.compileToFragments(o, LEVEL_ACCESS));
+        fragments.push(this.makeCode("("));
+      }
+      fragments.push.apply(fragments, compiledArgs);
+      fragments.push(this.makeCode(")"));
+      return fragments;
+    };
+
+    Call.prototype.compileSplat = function(o, splatArgs) {
+      var answer, base, fun, idt, name, ref;
+      if (this.isSuper) {
+        return [].concat(this.makeCode("" + (this.superReference(o)) + ".apply(" + (this.superThis(o)) + ", "), splatArgs, this.makeCode(")"));
+      }
+      if (this.isNew) {
+        idt = this.tab + TAB;
+        return [].concat(this.makeCode("(function(func, args, ctor) {\n" + idt + "ctor.prototype = func.prototype;\n" + idt + "var child = new ctor, result = func.apply(child, args);\n" + idt + "return Object(result) === result ? result : child;\n" + this.tab + "})("), this.variable.compileToFragments(o, LEVEL_LIST), this.makeCode(", "), splatArgs, this.makeCode(", function(){})"));
+      }
+      answer = [];
+      base = new Value(this.variable);
+      if ((name = base.properties.pop()) && base.isComplex()) {
+        ref = o.scope.freeVariable('ref');
+        answer = answer.concat(this.makeCode("(" + ref + " = "), base.compileToFragments(o, LEVEL_LIST), this.makeCode(")"), name.compileToFragments(o));
+      } else {
+        fun = base.compileToFragments(o, LEVEL_ACCESS);
+        if (SIMPLENUM.test(fragmentsToText(fun))) {
+          fun = this.wrapInBraces(fun);
+        }
+        if (name) {
+          ref = fragmentsToText(fun);
+          fun.push.apply(fun, name.compileToFragments(o));
+        } else {
+          ref = 'null';
+        }
+        answer = answer.concat(fun);
+      }
+      return answer = answer.concat(this.makeCode(".apply(" + ref + ", "), splatArgs, this.makeCode(")"));
+    };
+
+    return Call;
+
+  })(Base);
+
+  exports.Extends = Extends = (function(_super) {
+    __extends(Extends, _super);
+
+    function Extends(child, parent) {
+      this.child = child;
+      this.parent = parent;
+    }
+
+    Extends.prototype.children = ['child', 'parent'];
+
+    Extends.prototype.compileToFragments = function(o) {
+      return new Call(new Value(new Literal(utility('extends'))), [this.child, this.parent]).compileToFragments(o);
+    };
+
+    return Extends;
+
+  })(Base);
+
+  exports.Access = Access = (function(_super) {
+    __extends(Access, _super);
+
+    function Access(name, tag) {
+      this.name = name;
+      this.name.asKey = true;
+      this.soak = tag === 'soak';
+    }
+
+    Access.prototype.children = ['name'];
+
+    Access.prototype.compileToFragments = function(o) {
+      var name;
+      name = this.name.compileToFragments(o);
+      if (IDENTIFIER.test(fragmentsToText(name))) {
+        name.unshift(this.makeCode("."));
+      } else {
+        name.unshift(this.makeCode("["));
+        name.push(this.makeCode("]"));
+      }
+      return name;
+    };
+
+    Access.prototype.isComplex = NO;
+
+    return Access;
+
+  })(Base);
+
+  exports.Index = Index = (function(_super) {
+    __extends(Index, _super);
+
+    function Index(index) {
+      this.index = index;
+    }
+
+    Index.prototype.children = ['index'];
+
+    Index.prototype.compileToFragments = function(o) {
+      return [].concat(this.makeCode("["), this.index.compileToFragments(o, LEVEL_PAREN), this.makeCode("]"));
+    };
+
+    Index.prototype.isComplex = function() {
+      return this.index.isComplex();
+    };
+
+    return Index;
+
+  })(Base);
+
+  exports.Range = Range = (function(_super) {
+    __extends(Range, _super);
+
+    Range.prototype.children = ['from', 'to'];
+
+    function Range(from, to, tag) {
+      this.from = from;
+      this.to = to;
+      this.exclusive = tag === 'exclusive';
+      this.equals = this.exclusive ? '' : '=';
+    }
+
+    Range.prototype.compileVariables = function(o) {
+      var step, _ref2, _ref3, _ref4, _ref5;
+      o = merge(o, {
+        top: true
+      });
+      _ref2 = this.cacheToCodeFragments(this.from.cache(o, LEVEL_LIST)), this.fromC = _ref2[0], this.fromVar = _ref2[1];
+      _ref3 = this.cacheToCodeFragments(this.to.cache(o, LEVEL_LIST)), this.toC = _ref3[0], this.toVar = _ref3[1];
+      if (step = del(o, 'step')) {
+        _ref4 = this.cacheToCodeFragments(step.cache(o, LEVEL_LIST)), this.step = _ref4[0], this.stepVar = _ref4[1];
+      }
+      _ref5 = [this.fromVar.match(NUMBER), this.toVar.match(NUMBER)], this.fromNum = _ref5[0], this.toNum = _ref5[1];
+      if (this.stepVar) {
+        return this.stepNum = this.stepVar.match(NUMBER);
+      }
+    };
+
+    Range.prototype.compileNode = function(o) {
+      var cond, condPart, from, gt, idx, idxName, known, lt, namedIndex, stepPart, to, varPart, _ref2, _ref3;
+      if (!this.fromVar) {
+        this.compileVariables(o);
+      }
+      if (!o.index) {
+        return this.compileArray(o);
+      }
+      known = this.fromNum && this.toNum;
+      idx = del(o, 'index');
+      idxName = del(o, 'name');
+      namedIndex = idxName && idxName !== idx;
+      varPart = "" + idx + " = " + this.fromC;
+      if (this.toC !== this.toVar) {
+        varPart += ", " + this.toC;
+      }
+      if (this.step !== this.stepVar) {
+        varPart += ", " + this.step;
+      }
+      _ref2 = ["" + idx + " <" + this.equals, "" + idx + " >" + this.equals], lt = _ref2[0], gt = _ref2[1];
+      condPart = this.stepNum ? parseNum(this.stepNum[0]) > 0 ? "" + lt + " " + this.toVar : "" + gt + " " + this.toVar : known ? ((_ref3 = [parseNum(this.fromNum[0]), parseNum(this.toNum[0])], from = _ref3[0], to = _ref3[1], _ref3), from <= to ? "" + lt + " " + to : "" + gt + " " + to) : (cond = this.stepVar ? "" + this.stepVar + " > 0" : "" + this.fromVar + " <= " + this.toVar, "" + cond + " ? " + lt + " " + this.toVar + " : " + gt + " " + this.toVar);
+      stepPart = this.stepVar ? "" + idx + " += " + this.stepVar : known ? namedIndex ? from <= to ? "++" + idx : "--" + idx : from <= to ? "" + idx + "++" : "" + idx + "--" : namedIndex ? "" + cond + " ? ++" + idx + " : --" + idx : "" + cond + " ? " + idx + "++ : " + idx + "--";
+      if (namedIndex) {
+        varPart = "" + idxName + " = " + varPart;
+      }
+      if (namedIndex) {
+        stepPart = "" + idxName + " = " + stepPart;
+      }
+      return [this.makeCode("" + varPart + "; " + condPart + "; " + stepPart)];
+    };
+
+    Range.prototype.compileArray = function(o) {
+      var args, body, cond, hasArgs, i, idt, post, pre, range, result, vars, _i, _ref2, _ref3, _results;
+      if (this.fromNum && this.toNum && Math.abs(this.fromNum - this.toNum) <= 20) {
+        range = (function() {
+          _results = [];
+          for (var _i = _ref2 = +this.fromNum, _ref3 = +this.toNum; _ref2 <= _ref3 ? _i <= _ref3 : _i >= _ref3; _ref2 <= _ref3 ? _i++ : _i--){ _results.push(_i); }
+          return _results;
+        }).apply(this);
+        if (this.exclusive) {
+          range.pop();
+        }
+        return [this.makeCode("[" + (range.join(', ')) + "]")];
+      }
+      idt = this.tab + TAB;
+      i = o.scope.freeVariable('i');
+      result = o.scope.freeVariable('results');
+      pre = "\n" + idt + result + " = [];";
+      if (this.fromNum && this.toNum) {
+        o.index = i;
+        body = fragmentsToText(this.compileNode(o));
+      } else {
+        vars = ("" + i + " = " + this.fromC) + (this.toC !== this.toVar ? ", " + this.toC : '');
+        cond = "" + this.fromVar + " <= " + this.toVar;
+        body = "var " + vars + "; " + cond + " ? " + i + " <" + this.equals + " " + this.toVar + " : " + i + " >" + this.equals + " " + this.toVar + "; " + cond + " ? " + i + "++ : " + i + "--";
+      }
+      post = "{ " + result + ".push(" + i + "); }\n" + idt + "return " + result + ";\n" + o.indent;
+      hasArgs = function(node) {
+        return node != null ? node.contains(isLiteralArguments) : void 0;
+      };
+      if (hasArgs(this.from) || hasArgs(this.to)) {
+        args = ', arguments';
+      }
+      return [this.makeCode("(function() {" + pre + "\n" + idt + "for (" + body + ")" + post + "}).apply(this" + (args != null ? args : '') + ")")];
+    };
+
+    return Range;
+
+  })(Base);
+
+  exports.Slice = Slice = (function(_super) {
+    __extends(Slice, _super);
+
+    Slice.prototype.children = ['range'];
+
+    function Slice(range) {
+      this.range = range;
+      Slice.__super__.constructor.call(this);
+    }
+
+    Slice.prototype.compileNode = function(o) {
+      var compiled, compiledText, from, fromCompiled, to, toStr, _ref2;
+      _ref2 = this.range, to = _ref2.to, from = _ref2.from;
+      fromCompiled = from && from.compileToFragments(o, LEVEL_PAREN) || [this.makeCode('0')];
+      if (to) {
+        compiled = to.compileToFragments(o, LEVEL_PAREN);
+        compiledText = fragmentsToText(compiled);
+        if (!(!this.range.exclusive && +compiledText === -1)) {
+          toStr = ', ' + (this.range.exclusive ? compiledText : SIMPLENUM.test(compiledText) ? "" + (+compiledText + 1) : (compiled = to.compileToFragments(o, LEVEL_ACCESS), "+" + (fragmentsToText(compiled)) + " + 1 || 9e9"));
+        }
+      }
+      return [this.makeCode(".slice(" + (fragmentsToText(fromCompiled)) + (toStr || '') + ")")];
+    };
+
+    return Slice;
+
+  })(Base);
+
+  exports.Obj = Obj = (function(_super) {
+    __extends(Obj, _super);
+
+    function Obj(props, generated) {
+      this.generated = generated != null ? generated : false;
+      this.objects = this.properties = props || [];
+    }
+
+    Obj.prototype.children = ['properties'];
+
+    Obj.prototype.compileNode = function(o) {
+      var answer, i, idt, indent, join, lastNoncom, node, prop, props, _i, _j, _len, _len1;
+      props = this.properties;
+      if (!props.length) {
+        return [this.makeCode(this.front ? '({})' : '{}')];
+      }
+      if (this.generated) {
+        for (_i = 0, _len = props.length; _i < _len; _i++) {
+          node = props[_i];
+          if (node instanceof Value) {
+            node.error('cannot have an implicit value in an implicit object');
+          }
+        }
+      }
+      idt = o.indent += TAB;
+      lastNoncom = this.lastNonComment(this.properties);
+      answer = [];
+      for (i = _j = 0, _len1 = props.length; _j < _len1; i = ++_j) {
+        prop = props[i];
+        join = i === props.length - 1 ? '' : prop === lastNoncom || prop instanceof Comment ? '\n' : ',\n';
+        indent = prop instanceof Comment ? '' : idt;
+        if (prop instanceof Assign && prop.variable instanceof Value && prop.variable.hasProperties()) {
+          prop.variable.error('Invalid object key');
+        }
+        if (prop instanceof Value && prop["this"]) {
+          prop = new Assign(prop.properties[0].name, prop, 'object');
+        }
+        if (!(prop instanceof Comment)) {
+          if (!(prop instanceof Assign)) {
+            prop = new Assign(prop, prop, 'object');
+          }
+          (prop.variable.base || prop.variable).asKey = true;
+        }
+        if (indent) {
+          answer.push(this.makeCode(indent));
+        }
+        answer.push.apply(answer, prop.compileToFragments(o, LEVEL_TOP));
+        if (join) {
+          answer.push(this.makeCode(join));
+        }
+      }
+      answer.unshift(this.makeCode("{" + (props.length && '\n')));
+      answer.push(this.makeCode("" + (props.length && '\n' + this.tab) + "}"));
+      if (this.front) {
+        return this.wrapInBraces(answer);
+      } else {
+        return answer;
+      }
+    };
+
+    Obj.prototype.assigns = function(name) {
+      var prop, _i, _len, _ref2;
+      _ref2 = this.properties;
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        prop = _ref2[_i];
+        if (prop.assigns(name)) {
+          return true;
+        }
+      }
+      return false;
+    };
+
+    return Obj;
+
+  })(Base);
+
+  exports.Arr = Arr = (function(_super) {
+    __extends(Arr, _super);
+
+    function Arr(objs) {
+      this.objects = objs || [];
+    }
+
+    Arr.prototype.children = ['objects'];
+
+    Arr.prototype.compileNode = function(o) {
+      var answer, compiledObjs, fragments, index, obj, _i, _len;
+      if (!this.objects.length) {
+        return [this.makeCode('[]')];
+      }
+      o.indent += TAB;
+      answer = Splat.compileSplattedArray(o, this.objects);
+      if (answer.length) {
+        return answer;
+      }
+      answer = [];
+      compiledObjs = (function() {
+        var _i, _len, _ref2, _results;
+        _ref2 = this.objects;
+        _results = [];
+        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+          obj = _ref2[_i];
+          _results.push(obj.compileToFragments(o, LEVEL_LIST));
+        }
+        return _results;
+      }).call(this);
+      for (index = _i = 0, _len = compiledObjs.length; _i < _len; index = ++_i) {
+        fragments = compiledObjs[index];
+        if (index) {
+          answer.push(this.makeCode(", "));
+        }
+        answer.push.apply(answer, fragments);
+      }
+      if (fragmentsToText(answer).indexOf('\n') >= 0) {
+        answer.unshift(this.makeCode("[\n" + o.indent));
+        answer.push(this.makeCode("\n" + this.tab + "]"));
+      } else {
+        answer.unshift(this.makeCode("["));
+        answer.push(this.makeCode("]"));
+      }
+      return answer;
+    };
+
+    Arr.prototype.assigns = function(name) {
+      var obj, _i, _len, _ref2;
+      _ref2 = this.objects;
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        obj = _ref2[_i];
+        if (obj.assigns(name)) {
+          return true;
+        }
+      }
+      return false;
+    };
+
+    return Arr;
+
+  })(Base);
+
+  exports.Class = Class = (function(_super) {
+    __extends(Class, _super);
+
+    function Class(variable, parent, body) {
+      this.variable = variable;
+      this.parent = parent;
+      this.body = body != null ? body : new Block;
+      this.boundFuncs = [];
+      this.body.classBody = true;
+    }
+
+    Class.prototype.children = ['variable', 'parent', 'body'];
+
+    Class.prototype.determineName = function() {
+      var decl, tail;
+      if (!this.variable) {
+        return null;
+      }
+      decl = (tail = last(this.variable.properties)) ? tail instanceof Access && tail.name.value : this.variable.base.value;
+      if (__indexOf.call(STRICT_PROSCRIBED, decl) >= 0) {
+        this.variable.error("class variable name may not be " + decl);
+      }
+      return decl && (decl = IDENTIFIER.test(decl) && decl);
+    };
+
+    Class.prototype.setContext = function(name) {
+      return this.body.traverseChildren(false, function(node) {
+        if (node.classBody) {
+          return false;
+        }
+        if (node instanceof Literal && node.value === 'this') {
+          return node.value = name;
+        } else if (node instanceof Code) {
+          node.klass = name;
+          if (node.bound) {
+            return node.context = name;
+          }
+        }
+      });
+    };
+
+    Class.prototype.addBoundFunctions = function(o) {
+      var bvar, lhs, _i, _len, _ref2;
+      _ref2 = this.boundFuncs;
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        bvar = _ref2[_i];
+        lhs = (new Value(new Literal("this"), [new Access(bvar)])).compile(o);
+        this.ctor.body.unshift(new Literal("" + lhs + " = " + (utility('bind')) + "(" + lhs + ", this)"));
+      }
+    };
+
+    Class.prototype.addProperties = function(node, name, o) {
+      var assign, base, exprs, func, props;
+      props = node.base.properties.slice(0);
+      exprs = (function() {
+        var _results;
+        _results = [];
+        while (assign = props.shift()) {
+          if (assign instanceof Assign) {
+            base = assign.variable.base;
+            delete assign.context;
+            func = assign.value;
+            if (base.value === 'constructor') {
+              if (this.ctor) {
+                assign.error('cannot define more than one constructor in a class');
+              }
+              if (func.bound) {
+                assign.error('cannot define a constructor as a bound function');
+              }
+              if (func instanceof Code) {
+                assign = this.ctor = func;
+              } else {
+                this.externalCtor = o.classScope.freeVariable('class');
+                assign = new Assign(new Literal(this.externalCtor), func);
+              }
+            } else {
+              if (assign.variable["this"]) {
+                func["static"] = true;
+              } else {
+                assign.variable = new Value(new Literal(name), [new Access(new Literal('prototype')), new Access(base)]);
+                if (func instanceof Code && func.bound) {
+                  this.boundFuncs.push(base);
+                  func.bound = false;
+                }
+              }
+            }
+          }
+          _results.push(assign);
+        }
+        return _results;
+      }).call(this);
+      return compact(exprs);
+    };
+
+    Class.prototype.walkBody = function(name, o) {
+      return this.traverseChildren(false, (function(_this) {
+        return function(child) {
+          var cont, exps, i, node, _i, _len, _ref2;
+          cont = true;
+          if (child instanceof Class) {
+            return false;
+          }
+          if (child instanceof Block) {
+            _ref2 = exps = child.expressions;
+            for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
+              node = _ref2[i];
+              if (node instanceof Assign && node.variable.looksStatic(name)) {
+                node.value["static"] = true;
+              } else if (node instanceof Value && node.isObject(true)) {
+                cont = false;
+                exps[i] = _this.addProperties(node, name, o);
+              }
+            }
+            child.expressions = exps = flatten(exps);
+          }
+          return cont && !(child instanceof Class);
+        };
+      })(this));
+    };
+
+    Class.prototype.hoistDirectivePrologue = function() {
+      var expressions, index, node;
+      index = 0;
+      expressions = this.body.expressions;
+      while ((node = expressions[index]) && node instanceof Comment || node instanceof Value && node.isString()) {
+        ++index;
+      }
+      return this.directives = expressions.splice(0, index);
+    };
+
+    Class.prototype.ensureConstructor = function(name) {
+      if (!this.ctor) {
+        this.ctor = new Code;
+        if (this.externalCtor) {
+          this.ctor.body.push(new Literal("" + this.externalCtor + ".apply(this, arguments)"));
+        } else if (this.parent) {
+          this.ctor.body.push(new Literal("" + name + ".__super__.constructor.apply(this, arguments)"));
+        }
+        this.ctor.body.makeReturn();
+        this.body.expressions.unshift(this.ctor);
+      }
+      this.ctor.ctor = this.ctor.name = name;
+      this.ctor.klass = null;
+      return this.ctor.noReturn = true;
+    };
+
+    Class.prototype.compileNode = function(o) {
+      var args, argumentsNode, func, jumpNode, klass, lname, name, superClass, _ref2;
+      if (jumpNode = this.body.jumps()) {
+        jumpNode.error('Class bodies cannot contain pure statements');
+      }
+      if (argumentsNode = this.body.contains(isLiteralArguments)) {
+        argumentsNode.error("Class bodies shouldn't reference arguments");
+      }
+      name = this.determineName() || '_Class';
+      if (name.reserved) {
+        name = "_" + name;
+      }
+      lname = new Literal(name);
+      func = new Code([], Block.wrap([this.body]));
+      args = [];
+      o.classScope = func.makeScope(o.scope);
+      this.hoistDirectivePrologue();
+      this.setContext(name);
+      this.walkBody(name, o);
+      this.ensureConstructor(name);
+      this.addBoundFunctions(o);
+      this.body.spaced = true;
+      this.body.expressions.push(lname);
+      if (this.parent) {
+        superClass = new Literal(o.classScope.freeVariable('super', false));
+        this.body.expressions.unshift(new Extends(lname, superClass));
+        func.params.push(new Param(superClass));
+        args.push(this.parent);
+      }
+      (_ref2 = this.body.expressions).unshift.apply(_ref2, this.directives);
+      klass = new Parens(new Call(func, args));
+      if (this.variable) {
+        klass = new Assign(this.variable, klass);
+      }
+      return klass.compileToFragments(o);
+    };
+
+    return Class;
+
+  })(Base);
+
+  exports.Assign = Assign = (function(_super) {
+    __extends(Assign, _super);
+
+    function Assign(variable, value, context, options) {
+      var forbidden, name, _ref2;
+      this.variable = variable;
+      this.value = value;
+      this.context = context;
+      this.param = options && options.param;
+      this.subpattern = options && options.subpattern;
+      forbidden = (_ref2 = (name = this.variable.unwrapAll().value), __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0);
+      if (forbidden && this.context !== 'object') {
+        this.variable.error("variable name may not be \"" + name + "\"");
+      }
+    }
+
+    Assign.prototype.children = ['variable', 'value'];
+
+    Assign.prototype.isStatement = function(o) {
+      return (o != null ? o.level : void 0) === LEVEL_TOP && (this.context != null) && __indexOf.call(this.context, "?") >= 0;
+    };
+
+    Assign.prototype.assigns = function(name) {
+      return this[this.context === 'object' ? 'value' : 'variable'].assigns(name);
+    };
+
+    Assign.prototype.unfoldSoak = function(o) {
+      return unfoldSoak(o, this, 'variable');
+    };
+
+    Assign.prototype.compileNode = function(o) {
+      var answer, compiledName, isValue, match, name, val, varBase, _ref2, _ref3, _ref4, _ref5;
+      if (isValue = this.variable instanceof Value) {
+        if (this.variable.isArray() || this.variable.isObject()) {
+          return this.compilePatternMatch(o);
+        }
+        if (this.variable.isSplice()) {
+          return this.compileSplice(o);
+        }
+        if ((_ref2 = this.context) === '||=' || _ref2 === '&&=' || _ref2 === '?=') {
+          return this.compileConditional(o);
+        }
+        if ((_ref3 = this.context) === '**=' || _ref3 === '//=' || _ref3 === '%%=') {
+          return this.compileSpecialMath(o);
+        }
+      }
+      compiledName = this.variable.compileToFragments(o, LEVEL_LIST);
+      name = fragmentsToText(compiledName);
+      if (!this.context) {
+        varBase = this.variable.unwrapAll();
+        if (!varBase.isAssignable()) {
+          this.variable.error("\"" + (this.variable.compile(o)) + "\" cannot be assigned");
+        }
+        if (!(typeof varBase.hasProperties === "function" ? varBase.hasProperties() : void 0)) {
+          if (this.param) {
+            o.scope.add(name, 'var');
+          } else {
+            o.scope.find(name);
+          }
+        }
+      }
+      if (this.value instanceof Code && (match = METHOD_DEF.exec(name))) {
+        if (match[2]) {
+          this.value.klass = match[1];
+        }
+        this.value.name = (_ref4 = (_ref5 = match[3]) != null ? _ref5 : match[4]) != null ? _ref4 : match[5];
+      }
+      val = this.value.compileToFragments(o, LEVEL_LIST);
+      if (this.context === 'object') {
+        return compiledName.concat(this.makeCode(": "), val);
+      }
+      answer = compiledName.concat(this.makeCode(" " + (this.context || '=') + " "), val);
+      if (o.level <= LEVEL_LIST) {
+        return answer;
+      } else {
+        return this.wrapInBraces(answer);
+      }
+    };
+
+    Assign.prototype.compilePatternMatch = function(o) {
+      var acc, assigns, code, expandedIdx, fragments, i, idx, isObject, ivar, name, obj, objects, olen, ref, rest, top, val, value, vvar, vvarText, _i, _len, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7;
+      top = o.level === LEVEL_TOP;
+      value = this.value;
+      objects = this.variable.base.objects;
+      if (!(olen = objects.length)) {
+        code = value.compileToFragments(o);
+        if (o.level >= LEVEL_OP) {
+          return this.wrapInBraces(code);
+        } else {
+          return code;
+        }
+      }
+      isObject = this.variable.isObject();
+      if (top && olen === 1 && !((obj = objects[0]) instanceof Splat)) {
+        if (obj instanceof Assign) {
+          _ref2 = obj, (_ref3 = _ref2.variable, idx = _ref3.base), obj = _ref2.value;
+        } else {
+          idx = isObject ? obj["this"] ? obj.properties[0].name : obj : new Literal(0);
+        }
+        acc = IDENTIFIER.test(idx.unwrap().value || 0);
+        value = new Value(value);
+        value.properties.push(new (acc ? Access : Index)(idx));
+        if (_ref4 = obj.unwrap().value, __indexOf.call(RESERVED, _ref4) >= 0) {
+          obj.error("assignment to a reserved word: " + (obj.compile(o)));
+        }
+        return new Assign(obj, value, null, {
+          param: this.param
+        }).compileToFragments(o, LEVEL_TOP);
+      }
+      vvar = value.compileToFragments(o, LEVEL_LIST);
+      vvarText = fragmentsToText(vvar);
+      assigns = [];
+      expandedIdx = false;
+      if (!IDENTIFIER.test(vvarText) || this.variable.assigns(vvarText)) {
+        assigns.push([this.makeCode("" + (ref = o.scope.freeVariable('ref')) + " = ")].concat(__slice.call(vvar)));
+        vvar = [this.makeCode(ref)];
+        vvarText = ref;
+      }
+      for (i = _i = 0, _len = objects.length; _i < _len; i = ++_i) {
+        obj = objects[i];
+        idx = i;
+        if (isObject) {
+          if (obj instanceof Assign) {
+            _ref5 = obj, (_ref6 = _ref5.variable, idx = _ref6.base), obj = _ref5.value;
+          } else {
+            if (obj.base instanceof Parens) {
+              _ref7 = new Value(obj.unwrapAll()).cacheReference(o), obj = _ref7[0], idx = _ref7[1];
+            } else {
+              idx = obj["this"] ? obj.properties[0].name : obj;
+            }
+          }
+        }
+        if (!expandedIdx && obj instanceof Splat) {
+          name = obj.name.unwrap().value;
+          obj = obj.unwrap();
+          val = "" + olen + " <= " + vvarText + ".length ? " + (utility('slice')) + ".call(" + vvarText + ", " + i;
+          if (rest = olen - i - 1) {
+            ivar = o.scope.freeVariable('i');
+            val += ", " + ivar + " = " + vvarText + ".length - " + rest + ") : (" + ivar + " = " + i + ", [])";
+          } else {
+            val += ") : []";
+          }
+          val = new Literal(val);
+          expandedIdx = "" + ivar + "++";
+        } else if (!expandedIdx && obj instanceof Expansion) {
+          if (rest = olen - i - 1) {
+            if (rest === 1) {
+              expandedIdx = "" + vvarText + ".length - 1";
+            } else {
+              ivar = o.scope.freeVariable('i');
+              val = new Literal("" + ivar + " = " + vvarText + ".length - " + rest);
+              expandedIdx = "" + ivar + "++";
+              assigns.push(val.compileToFragments(o, LEVEL_LIST));
+            }
+          }
+          continue;
+        } else {
+          name = obj.unwrap().value;
+          if (obj instanceof Splat || obj instanceof Expansion) {
+            obj.error("multiple splats/expansions are disallowed in an assignment");
+          }
+          if (typeof idx === 'number') {
+            idx = new Literal(expandedIdx || idx);
+            acc = false;
+          } else {
+            acc = isObject && IDENTIFIER.test(idx.unwrap().value || 0);
+          }
+          val = new Value(new Literal(vvarText), [new (acc ? Access : Index)(idx)]);
+        }
+        if ((name != null) && __indexOf.call(RESERVED, name) >= 0) {
+          obj.error("assignment to a reserved word: " + (obj.compile(o)));
+        }
+        assigns.push(new Assign(obj, val, null, {
+          param: this.param,
+          subpattern: true
+        }).compileToFragments(o, LEVEL_LIST));
+      }
+      if (!(top || this.subpattern)) {
+        assigns.push(vvar);
+      }
+      fragments = this.joinFragmentArrays(assigns, ', ');
+      if (o.level < LEVEL_LIST) {
+        return fragments;
+      } else {
+        return this.wrapInBraces(fragments);
+      }
+    };
+
+    Assign.prototype.compileConditional = function(o) {
+      var fragments, left, right, _ref2;
+      _ref2 = this.variable.cacheReference(o), left = _ref2[0], right = _ref2[1];
+      if (!left.properties.length && left.base instanceof Literal && left.base.value !== "this" && !o.scope.check(left.base.value)) {
+        this.variable.error("the variable \"" + left.base.value + "\" can't be assigned with " + this.context + " because it has not been declared before");
+      }
+      if (__indexOf.call(this.context, "?") >= 0) {
+        o.isExistentialEquals = true;
+        return new If(new Existence(left), right, {
+          type: 'if'
+        }).addElse(new Assign(right, this.value, '=')).compileToFragments(o);
+      } else {
+        fragments = new Op(this.context.slice(0, -1), left, new Assign(right, this.value, '=')).compileToFragments(o);
+        if (o.level <= LEVEL_LIST) {
+          return fragments;
+        } else {
+          return this.wrapInBraces(fragments);
+        }
+      }
+    };
+
+    Assign.prototype.compileSpecialMath = function(o) {
+      var left, right, _ref2;
+      _ref2 = this.variable.cacheReference(o), left = _ref2[0], right = _ref2[1];
+      return new Assign(left, new Op(this.context.slice(0, -1), right, this.value)).compileToFragments(o);
+    };
+
+    Assign.prototype.compileSplice = function(o) {
+      var answer, exclusive, from, fromDecl, fromRef, name, to, valDef, valRef, _ref2, _ref3, _ref4;
+      _ref2 = this.variable.properties.pop().range, from = _ref2.from, to = _ref2.to, exclusive = _ref2.exclusive;
+      name = this.variable.compile(o);
+      if (from) {
+        _ref3 = this.cacheToCodeFragments(from.cache(o, LEVEL_OP)), fromDecl = _ref3[0], fromRef = _ref3[1];
+      } else {
+        fromDecl = fromRef = '0';
+      }
+      if (to) {
+        if (from instanceof Value && from.isSimpleNumber() && to instanceof Value && to.isSimpleNumber()) {
+          to = to.compile(o) - fromRef;
+          if (!exclusive) {
+            to += 1;
+          }
+        } else {
+          to = to.compile(o, LEVEL_ACCESS) + ' - ' + fromRef;
+          if (!exclusive) {
+            to += ' + 1';
+          }
+        }
+      } else {
+        to = "9e9";
+      }
+      _ref4 = this.value.cache(o, LEVEL_LIST), valDef = _ref4[0], valRef = _ref4[1];
+      answer = [].concat(this.makeCode("[].splice.apply(" + name + ", [" + fromDecl + ", " + to + "].concat("), valDef, this.makeCode(")), "), valRef);
+      if (o.level > LEVEL_TOP) {
+        return this.wrapInBraces(answer);
+      } else {
+        return answer;
+      }
+    };
+
+    return Assign;
+
+  })(Base);
+
+  exports.Code = Code = (function(_super) {
+    __extends(Code, _super);
+
+    function Code(params, body, tag) {
+      this.params = params || [];
+      this.body = body || new Block;
+      this.bound = tag === 'boundfunc';
+    }
+
+    Code.prototype.children = ['params', 'body'];
+
+    Code.prototype.isStatement = function() {
+      return !!this.ctor;
+    };
+
+    Code.prototype.jumps = NO;
+
+    Code.prototype.makeScope = function(parentScope) {
+      return new Scope(parentScope, this.body, this);
+    };
+
+    Code.prototype.compileNode = function(o) {
+      var answer, boundfunc, code, exprs, i, lit, p, param, params, ref, splats, uniqs, val, wasEmpty, wrapper, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _m, _n, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7;
+      if (this.bound && ((_ref2 = o.scope.method) != null ? _ref2.bound : void 0)) {
+        this.context = o.scope.method.context;
+      }
+      if (this.bound && !this.context) {
+        this.context = '_this';
+        wrapper = new Code([new Param(new Literal(this.context))], new Block([this]));
+        boundfunc = new Call(wrapper, [new Literal('this')]);
+        boundfunc.updateLocationDataIfMissing(this.locationData);
+        return boundfunc.compileNode(o);
+      }
+      o.scope = del(o, 'classScope') || this.makeScope(o.scope);
+      o.scope.shared = del(o, 'sharedScope');
+      o.indent += TAB;
+      delete o.bare;
+      delete o.isExistentialEquals;
+      params = [];
+      exprs = [];
+      _ref3 = this.params;
+      for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
+        param = _ref3[_i];
+        if (!(param instanceof Expansion)) {
+          o.scope.parameter(param.asReference(o));
+        }
+      }
+      _ref4 = this.params;
+      for (_j = 0, _len1 = _ref4.length; _j < _len1; _j++) {
+        param = _ref4[_j];
+        if (!(param.splat || param instanceof Expansion)) {
+          continue;
+        }
+        _ref5 = this.params;
+        for (_k = 0, _len2 = _ref5.length; _k < _len2; _k++) {
+          p = _ref5[_k].name;
+          if (!(!(param instanceof Expansion))) {
+            continue;
+          }
+          if (p["this"]) {
+            p = p.properties[0].name;
+          }
+          if (p.value) {
+            o.scope.add(p.value, 'var', true);
+          }
+        }
+        splats = new Assign(new Value(new Arr((function() {
+          var _l, _len3, _ref6, _results;
+          _ref6 = this.params;
+          _results = [];
+          for (_l = 0, _len3 = _ref6.length; _l < _len3; _l++) {
+            p = _ref6[_l];
+            _results.push(p.asReference(o));
+          }
+          return _results;
+        }).call(this))), new Value(new Literal('arguments')));
+        break;
+      }
+      _ref6 = this.params;
+      for (_l = 0, _len3 = _ref6.length; _l < _len3; _l++) {
+        param = _ref6[_l];
+        if (param.isComplex()) {
+          val = ref = param.asReference(o);
+          if (param.value) {
+            val = new Op('?', ref, param.value);
+          }
+          exprs.push(new Assign(new Value(param.name), val, '=', {
+            param: true
+          }));
+        } else {
+          ref = param;
+          if (param.value) {
+            lit = new Literal(ref.name.value + ' == null');
+            val = new Assign(new Value(param.name), param.value, '=');
+            exprs.push(new If(lit, val));
+          }
+        }
+        if (!splats) {
+          params.push(ref);
+        }
+      }
+      wasEmpty = this.body.isEmpty();
+      if (splats) {
+        exprs.unshift(splats);
+      }
+      if (exprs.length) {
+        (_ref7 = this.body.expressions).unshift.apply(_ref7, exprs);
+      }
+      for (i = _m = 0, _len4 = params.length; _m < _len4; i = ++_m) {
+        p = params[i];
+        params[i] = p.compileToFragments(o);
+        o.scope.parameter(fragmentsToText(params[i]));
+      }
+      uniqs = [];
+      this.eachParamName(function(name, node) {
+        if (__indexOf.call(uniqs, name) >= 0) {
+          node.error("multiple parameters named '" + name + "'");
+        }
+        return uniqs.push(name);
+      });
+      if (!(wasEmpty || this.noReturn)) {
+        this.body.makeReturn();
+      }
+      code = 'function';
+      if (this.ctor) {
+        code += ' ' + this.name;
+      }
+      code += '(';
+      answer = [this.makeCode(code)];
+      for (i = _n = 0, _len5 = params.length; _n < _len5; i = ++_n) {
+        p = params[i];
+        if (i) {
+          answer.push(this.makeCode(", "));
+        }
+        answer.push.apply(answer, p);
+      }
+      answer.push(this.makeCode(') {'));
+      if (!this.body.isEmpty()) {
+        answer = answer.concat(this.makeCode("\n"), this.body.compileWithDeclarations(o), this.makeCode("\n" + this.tab));
+      }
+      answer.push(this.makeCode('}'));
+      if (this.ctor) {
+        return [this.makeCode(this.tab)].concat(__slice.call(answer));
+      }
+      if (this.front || (o.level >= LEVEL_ACCESS)) {
+        return this.wrapInBraces(answer);
+      } else {
+        return answer;
+      }
+    };
+
+    Code.prototype.eachParamName = function(iterator) {
+      var param, _i, _len, _ref2, _results;
+      _ref2 = this.params;
+      _results = [];
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        param = _ref2[_i];
+        _results.push(param.eachName(iterator));
+      }
+      return _results;
+    };
+
+    Code.prototype.traverseChildren = function(crossScope, func) {
+      if (crossScope) {
+        return Code.__super__.traverseChildren.call(this, crossScope, func);
+      }
+    };
+
+    return Code;
+
+  })(Base);
+
+  exports.Param = Param = (function(_super) {
+    __extends(Param, _super);
+
+    function Param(name, value, splat) {
+      var _ref2;
+      this.name = name;
+      this.value = value;
+      this.splat = splat;
+      if (_ref2 = (name = this.name.unwrapAll().value), __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0) {
+        this.name.error("parameter name \"" + name + "\" is not allowed");
+      }
+    }
+
+    Param.prototype.children = ['name', 'value'];
+
+    Param.prototype.compileToFragments = function(o) {
+      return this.name.compileToFragments(o, LEVEL_LIST);
+    };
+
+    Param.prototype.asReference = function(o) {
+      var node;
+      if (this.reference) {
+        return this.reference;
+      }
+      node = this.name;
+      if (node["this"]) {
+        node = node.properties[0].name;
+        if (node.value.reserved) {
+          node = new Literal(o.scope.freeVariable(node.value));
+        }
+      } else if (node.isComplex()) {
+        node = new Literal(o.scope.freeVariable('arg'));
+      }
+      node = new Value(node);
+      if (this.splat) {
+        node = new Splat(node);
+      }
+      node.updateLocationDataIfMissing(this.locationData);
+      return this.reference = node;
+    };
+
+    Param.prototype.isComplex = function() {
+      return this.name.isComplex();
+    };
+
+    Param.prototype.eachName = function(iterator, name) {
+      var atParam, node, obj, _i, _len, _ref2;
+      if (name == null) {
+        name = this.name;
+      }
+      atParam = function(obj) {
+        var node;
+        node = obj.properties[0].name;
+        if (!node.value.reserved) {
+          return iterator(node.value, node);
+        }
+      };
+      if (name instanceof Literal) {
+        return iterator(name.value, name);
+      }
+      if (name instanceof Value) {
+        return atParam(name);
+      }
+      _ref2 = name.objects;
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        obj = _ref2[_i];
+        if (obj instanceof Assign) {
+          this.eachName(iterator, obj.value.unwrap());
+        } else if (obj instanceof Splat) {
+          node = obj.name.unwrap();
+          iterator(node.value, node);
+        } else if (obj instanceof Value) {
+          if (obj.isArray() || obj.isObject()) {
+            this.eachName(iterator, obj.base);
+          } else if (obj["this"]) {
+            atParam(obj);
+          } else {
+            iterator(obj.base.value, obj.base);
+          }
+        } else if (!(obj instanceof Expansion)) {
+          obj.error("illegal parameter " + (obj.compile()));
+        }
+      }
+    };
+
+    return Param;
+
+  })(Base);
+
+  exports.Splat = Splat = (function(_super) {
+    __extends(Splat, _super);
+
+    Splat.prototype.children = ['name'];
+
+    Splat.prototype.isAssignable = YES;
+
+    function Splat(name) {
+      this.name = name.compile ? name : new Literal(name);
+    }
+
+    Splat.prototype.assigns = function(name) {
+      return this.name.assigns(name);
+    };
+
+    Splat.prototype.compileToFragments = function(o) {
+      return this.name.compileToFragments(o);
+    };
+
+    Splat.prototype.unwrap = function() {
+      return this.name;
+    };
+
+    Splat.compileSplattedArray = function(o, list, apply) {
+      var args, base, compiledNode, concatPart, fragments, i, index, node, _i, _len;
+      index = -1;
+      while ((node = list[++index]) && !(node instanceof Splat)) {
+        continue;
+      }
+      if (index >= list.length) {
+        return [];
+      }
+      if (list.length === 1) {
+        node = list[0];
+        fragments = node.compileToFragments(o, LEVEL_LIST);
+        if (apply) {
+          return fragments;
+        }
+        return [].concat(node.makeCode("" + (utility('slice')) + ".call("), fragments, node.makeCode(")"));
+      }
+      args = list.slice(index);
+      for (i = _i = 0, _len = args.length; _i < _len; i = ++_i) {
+        node = args[i];
+        compiledNode = node.compileToFragments(o, LEVEL_LIST);
+        args[i] = node instanceof Splat ? [].concat(node.makeCode("" + (utility('slice')) + ".call("), compiledNode, node.makeCode(")")) : [].concat(node.makeCode("["), compiledNode, node.makeCode("]"));
+      }
+      if (index === 0) {
+        node = list[0];
+        concatPart = node.joinFragmentArrays(args.slice(1), ', ');
+        return args[0].concat(node.makeCode(".concat("), concatPart, node.makeCode(")"));
+      }
+      base = (function() {
+        var _j, _len1, _ref2, _results;
+        _ref2 = list.slice(0, index);
+        _results = [];
+        for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
+          node = _ref2[_j];
+          _results.push(node.compileToFragments(o, LEVEL_LIST));
+        }
+        return _results;
+      })();
+      base = list[0].joinFragmentArrays(base, ', ');
+      concatPart = list[index].joinFragmentArrays(args, ', ');
+      return [].concat(list[0].makeCode("["), base, list[index].makeCode("].concat("), concatPart, (last(list)).makeCode(")"));
+    };
+
+    return Splat;
+
+  })(Base);
+
+  exports.Expansion = Expansion = (function(_super) {
+    __extends(Expansion, _super);
+
+    function Expansion() {
+      return Expansion.__super__.constructor.apply(this, arguments);
+    }
+
+    Expansion.prototype.isComplex = NO;
+
+    Expansion.prototype.compileNode = function(o) {
+      return this.error('Expansion must be used inside a destructuring assignment or parameter list');
+    };
+
+    Expansion.prototype.asReference = function(o) {
+      return this;
+    };
+
+    Expansion.prototype.eachName = function(iterator) {};
+
+    return Expansion;
+
+  })(Base);
+
+  exports.While = While = (function(_super) {
+    __extends(While, _super);
+
+    function While(condition, options) {
+      this.condition = (options != null ? options.invert : void 0) ? condition.invert() : condition;
+      this.guard = options != null ? options.guard : void 0;
+    }
+
+    While.prototype.children = ['condition', 'guard', 'body'];
+
+    While.prototype.isStatement = YES;
+
+    While.prototype.makeReturn = function(res) {
+      if (res) {
+        return While.__super__.makeReturn.apply(this, arguments);
+      } else {
+        this.returns = !this.jumps({
+          loop: true
+        });
+        return this;
+      }
+    };
+
+    While.prototype.addBody = function(body) {
+      this.body = body;
+      return this;
+    };
+
+    While.prototype.jumps = function() {
+      var expressions, jumpNode, node, _i, _len;
+      expressions = this.body.expressions;
+      if (!expressions.length) {
+        return false;
+      }
+      for (_i = 0, _len = expressions.length; _i < _len; _i++) {
+        node = expressions[_i];
+        if (jumpNode = node.jumps({
+          loop: true
+        })) {
+          return jumpNode;
+        }
+      }
+      return false;
+    };
+
+    While.prototype.compileNode = function(o) {
+      var answer, body, rvar, set;
+      o.indent += TAB;
+      set = '';
+      body = this.body;
+      if (body.isEmpty()) {
+        body = this.makeCode('');
+      } else {
+        if (this.returns) {
+          body.makeReturn(rvar = o.scope.freeVariable('results'));
+          set = "" + this.tab + rvar + " = [];\n";
+        }
+        if (this.guard) {
+          if (body.expressions.length > 1) {
+            body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue")));
+          } else {
+            if (this.guard) {
+              body = Block.wrap([new If(this.guard, body)]);
+            }
+          }
+        }
+        body = [].concat(this.makeCode("\n"), body.compileToFragments(o, LEVEL_TOP), this.makeCode("\n" + this.tab));
+      }
+      answer = [].concat(this.makeCode(set + this.tab + "while ("), this.condition.compileToFragments(o, LEVEL_PAREN), this.makeCode(") {"), body, this.makeCode("}"));
+      if (this.returns) {
+        answer.push(this.makeCode("\n" + this.tab + "return " + rvar + ";"));
+      }
+      return answer;
+    };
+
+    return While;
+
+  })(Base);
+
+  exports.Op = Op = (function(_super) {
+    var CONVERSIONS, INVERSIONS;
+
+    __extends(Op, _super);
+
+    function Op(op, first, second, flip) {
+      if (op === 'in') {
+        return new In(first, second);
+      }
+      if (op === 'do') {
+        return this.generateDo(first);
+      }
+      if (op === 'new') {
+        if (first instanceof Call && !first["do"] && !first.isNew) {
+          return first.newInstance();
+        }
+        if (first instanceof Code && first.bound || first["do"]) {
+          first = new Parens(first);
+        }
+      }
+      this.operator = CONVERSIONS[op] || op;
+      this.first = first;
+      this.second = second;
+      this.flip = !!flip;
+      return this;
+    }
+
+    CONVERSIONS = {
+      '==': '===',
+      '!=': '!==',
+      'of': 'in'
+    };
+
+    INVERSIONS = {
+      '!==': '===',
+      '===': '!=='
+    };
+
+    Op.prototype.children = ['first', 'second'];
+
+    Op.prototype.isSimpleNumber = NO;
+
+    Op.prototype.isUnary = function() {
+      return !this.second;
+    };
+
+    Op.prototype.isComplex = function() {
+      var _ref2;
+      return !(this.isUnary() && ((_ref2 = this.operator) === '+' || _ref2 === '-')) || this.first.isComplex();
+    };
+
+    Op.prototype.isChainable = function() {
+      var _ref2;
+      return (_ref2 = this.operator) === '<' || _ref2 === '>' || _ref2 === '>=' || _ref2 === '<=' || _ref2 === '===' || _ref2 === '!==';
+    };
+
+    Op.prototype.invert = function() {
+      var allInvertable, curr, fst, op, _ref2;
+      if (this.isChainable() && this.first.isChainable()) {
+        allInvertable = true;
+        curr = this;
+        while (curr && curr.operator) {
+          allInvertable && (allInvertable = curr.operator in INVERSIONS);
+          curr = curr.first;
+        }
+        if (!allInvertable) {
+          return new Parens(this).invert();
+        }
+        curr = this;
+        while (curr && curr.operator) {
+          curr.invert = !curr.invert;
+          curr.operator = INVERSIONS[curr.operator];
+          curr = curr.first;
+        }
+        return this;
+      } else if (op = INVERSIONS[this.operator]) {
+        this.operator = op;
+        if (this.first.unwrap() instanceof Op) {
+          this.first.invert();
+        }
+        return this;
+      } else if (this.second) {
+        return new Parens(this).invert();
+      } else if (this.operator === '!' && (fst = this.first.unwrap()) instanceof Op && ((_ref2 = fst.operator) === '!' || _ref2 === 'in' || _ref2 === 'instanceof')) {
+        return fst;
+      } else {
+        return new Op('!', this);
+      }
+    };
+
+    Op.prototype.unfoldSoak = function(o) {
+      var _ref2;
+      return ((_ref2 = this.operator) === '++' || _ref2 === '--' || _ref2 === 'delete') && unfoldSoak(o, this, 'first');
+    };
+
+    Op.prototype.generateDo = function(exp) {
+      var call, func, param, passedParams, ref, _i, _len, _ref2;
+      passedParams = [];
+      func = exp instanceof Assign && (ref = exp.value.unwrap()) instanceof Code ? ref : exp;
+      _ref2 = func.params || [];
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        param = _ref2[_i];
+        if (param.value) {
+          passedParams.push(param.value);
+          delete param.value;
+        } else {
+          passedParams.push(param);
+        }
+      }
+      call = new Call(exp, passedParams);
+      call["do"] = true;
+      return call;
+    };
+
+    Op.prototype.compileNode = function(o) {
+      var answer, isChain, lhs, rhs, _ref2, _ref3;
+      isChain = this.isChainable() && this.first.isChainable();
+      if (!isChain) {
+        this.first.front = this.front;
+      }
+      if (this.operator === 'delete' && o.scope.check(this.first.unwrapAll().value)) {
+        this.error('delete operand may not be argument or var');
+      }
+      if (((_ref2 = this.operator) === '--' || _ref2 === '++') && (_ref3 = this.first.unwrapAll().value, __indexOf.call(STRICT_PROSCRIBED, _ref3) >= 0)) {
+        this.error("cannot increment/decrement \"" + (this.first.unwrapAll().value) + "\"");
+      }
+      if (this.isUnary()) {
+        return this.compileUnary(o);
+      }
+      if (isChain) {
+        return this.compileChain(o);
+      }
+      switch (this.operator) {
+        case '?':
+          return this.compileExistence(o);
+        case '**':
+          return this.compilePower(o);
+        case '//':
+          return this.compileFloorDivision(o);
+        case '%%':
+          return this.compileModulo(o);
+        default:
+          lhs = this.first.compileToFragments(o, LEVEL_OP);
+          rhs = this.second.compileToFragments(o, LEVEL_OP);
+          answer = [].concat(lhs, this.makeCode(" " + this.operator + " "), rhs);
+          if (o.level <= LEVEL_OP) {
+            return answer;
+          } else {
+            return this.wrapInBraces(answer);
+          }
+      }
+    };
+
+    Op.prototype.compileChain = function(o) {
+      var fragments, fst, shared, _ref2;
+      _ref2 = this.first.second.cache(o), this.first.second = _ref2[0], shared = _ref2[1];
+      fst = this.first.compileToFragments(o, LEVEL_OP);
+      fragments = fst.concat(this.makeCode(" " + (this.invert ? '&&' : '||') + " "), shared.compileToFragments(o), this.makeCode(" " + this.operator + " "), this.second.compileToFragments(o, LEVEL_OP));
+      return this.wrapInBraces(fragments);
+    };
+
+    Op.prototype.compileExistence = function(o) {
+      var fst, ref;
+      if (this.first.isComplex()) {
+        ref = new Literal(o.scope.freeVariable('ref'));
+        fst = new Parens(new Assign(ref, this.first));
+      } else {
+        fst = this.first;
+        ref = fst;
+      }
+      return new If(new Existence(fst), ref, {
+        type: 'if'
+      }).addElse(this.second).compileToFragments(o);
+    };
+
+    Op.prototype.compileUnary = function(o) {
+      var op, parts, plusMinus;
+      parts = [];
+      op = this.operator;
+      parts.push([this.makeCode(op)]);
+      if (op === '!' && this.first instanceof Existence) {
+        this.first.negated = !this.first.negated;
+        return this.first.compileToFragments(o);
+      }
+      if (o.level >= LEVEL_ACCESS) {
+        return (new Parens(this)).compileToFragments(o);
+      }
+      plusMinus = op === '+' || op === '-';
+      if ((op === 'new' || op === 'typeof' || op === 'delete') || plusMinus && this.first instanceof Op && this.first.operator === op) {
+        parts.push([this.makeCode(' ')]);
+      }
+      if ((plusMinus && this.first instanceof Op) || (op === 'new' && this.first.isStatement(o))) {
+        this.first = new Parens(this.first);
+      }
+      parts.push(this.first.compileToFragments(o, LEVEL_OP));
+      if (this.flip) {
+        parts.reverse();
+      }
+      return this.joinFragmentArrays(parts, '');
+    };
+
+    Op.prototype.compilePower = function(o) {
+      var pow;
+      pow = new Value(new Literal('Math'), [new Access(new Literal('pow'))]);
+      return new Call(pow, [this.first, this.second]).compileToFragments(o);
+    };
+
+    Op.prototype.compileFloorDivision = function(o) {
+      var div, floor;
+      floor = new Value(new Literal('Math'), [new Access(new Literal('floor'))]);
+      div = new Op('/', this.first, this.second);
+      return new Call(floor, [div]).compileToFragments(o);
+    };
+
+    Op.prototype.compileModulo = function(o) {
+      var mod;
+      mod = new Value(new Literal(utility('modulo')));
+      return new Call(mod, [this.first, this.second]).compileToFragments(o);
+    };
+
+    Op.prototype.toString = function(idt) {
+      return Op.__super__.toString.call(this, idt, this.constructor.name + ' ' + this.operator);
+    };
+
+    return Op;
+
+  })(Base);
+
+  exports.In = In = (function(_super) {
+    __extends(In, _super);
+
+    function In(object, array) {
+      this.object = object;
+      this.array = array;
+    }
+
+    In.prototype.children = ['object', 'array'];
+
+    In.prototype.invert = NEGATE;
+
+    In.prototype.compileNode = function(o) {
+      var hasSplat, obj, _i, _len, _ref2;
+      if (this.array instanceof Value && this.array.isArray() && this.array.base.objects.length) {
+        _ref2 = this.array.base.objects;
+        for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+          obj = _ref2[_i];
+          if (!(obj instanceof Splat)) {
+            continue;
+          }
+          hasSplat = true;
+          break;
+        }
+        if (!hasSplat) {
+          return this.compileOrTest(o);
+        }
+      }
+      return this.compileLoopTest(o);
+    };
+
+    In.prototype.compileOrTest = function(o) {
+      var cmp, cnj, i, item, ref, sub, tests, _i, _len, _ref2, _ref3, _ref4;
+      _ref2 = this.object.cache(o, LEVEL_OP), sub = _ref2[0], ref = _ref2[1];
+      _ref3 = this.negated ? [' !== ', ' && '] : [' === ', ' || '], cmp = _ref3[0], cnj = _ref3[1];
+      tests = [];
+      _ref4 = this.array.base.objects;
+      for (i = _i = 0, _len = _ref4.length; _i < _len; i = ++_i) {
+        item = _ref4[i];
+        if (i) {
+          tests.push(this.makeCode(cnj));
+        }
+        tests = tests.concat((i ? ref : sub), this.makeCode(cmp), item.compileToFragments(o, LEVEL_ACCESS));
+      }
+      if (o.level < LEVEL_OP) {
+        return tests;
+      } else {
+        return this.wrapInBraces(tests);
+      }
+    };
+
+    In.prototype.compileLoopTest = function(o) {
+      var fragments, ref, sub, _ref2;
+      _ref2 = this.object.cache(o, LEVEL_LIST), sub = _ref2[0], ref = _ref2[1];
+      fragments = [].concat(this.makeCode(utility('indexOf') + ".call("), this.array.compileToFragments(o, LEVEL_LIST), this.makeCode(", "), ref, this.makeCode(") " + (this.negated ? '< 0' : '>= 0')));
+      if (fragmentsToText(sub) === fragmentsToText(ref)) {
+        return fragments;
+      }
+      fragments = sub.concat(this.makeCode(', '), fragments);
+      if (o.level < LEVEL_LIST) {
+        return fragments;
+      } else {
+        return this.wrapInBraces(fragments);
+      }
+    };
+
+    In.prototype.toString = function(idt) {
+      return In.__super__.toString.call(this, idt, this.constructor.name + (this.negated ? '!' : ''));
+    };
+
+    return In;
+
+  })(Base);
+
+  exports.Try = Try = (function(_super) {
+    __extends(Try, _super);
+
+    function Try(attempt, errorVariable, recovery, ensure) {
+      this.attempt = attempt;
+      this.errorVariable = errorVariable;
+      this.recovery = recovery;
+      this.ensure = ensure;
+    }
+
+    Try.prototype.children = ['attempt', 'recovery', 'ensure'];
+
+    Try.prototype.isStatement = YES;
+
+    Try.prototype.jumps = function(o) {
+      var _ref2;
+      return this.attempt.jumps(o) || ((_ref2 = this.recovery) != null ? _ref2.jumps(o) : void 0);
+    };
+
+    Try.prototype.makeReturn = function(res) {
+      if (this.attempt) {
+        this.attempt = this.attempt.makeReturn(res);
+      }
+      if (this.recovery) {
+        this.recovery = this.recovery.makeReturn(res);
+      }
+      return this;
+    };
+
+    Try.prototype.compileNode = function(o) {
+      var catchPart, ensurePart, placeholder, tryPart;
+      o.indent += TAB;
+      tryPart = this.attempt.compileToFragments(o, LEVEL_TOP);
+      catchPart = this.recovery ? (placeholder = new Literal('_error'), this.errorVariable ? this.recovery.unshift(new Assign(this.errorVariable, placeholder)) : void 0, [].concat(this.makeCode(" catch ("), placeholder.compileToFragments(o), this.makeCode(") {\n"), this.recovery.compileToFragments(o, LEVEL_TOP), this.makeCode("\n" + this.tab + "}"))) : !(this.ensure || this.recovery) ? [this.makeCode(' catch (_error) {}')] : [];
+      ensurePart = this.ensure ? [].concat(this.makeCode(" finally {\n"), this.ensure.compileToFragments(o, LEVEL_TOP), this.makeCode("\n" + this.tab + "}")) : [];
+      return [].concat(this.makeCode("" + this.tab + "try {\n"), tryPart, this.makeCode("\n" + this.tab + "}"), catchPart, ensurePart);
+    };
+
+    return Try;
+
+  })(Base);
+
+  exports.Throw = Throw = (function(_super) {
+    __extends(Throw, _super);
+
+    function Throw(expression) {
+      this.expression = expression;
+    }
+
+    Throw.prototype.children = ['expression'];
+
+    Throw.prototype.isStatement = YES;
+
+    Throw.prototype.jumps = NO;
+
+    Throw.prototype.makeReturn = THIS;
+
+    Throw.prototype.compileNode = function(o) {
+      return [].concat(this.makeCode(this.tab + "throw "), this.expression.compileToFragments(o), this.makeCode(";"));
+    };
+
+    return Throw;
+
+  })(Base);
+
+  exports.Existence = Existence = (function(_super) {
+    __extends(Existence, _super);
+
+    function Existence(expression) {
+      this.expression = expression;
+    }
+
+    Existence.prototype.children = ['expression'];
+
+    Existence.prototype.invert = NEGATE;
+
+    Existence.prototype.compileNode = function(o) {
+      var cmp, cnj, code, _ref2;
+      this.expression.front = this.front;
+      code = this.expression.compile(o, LEVEL_OP);
+      if (IDENTIFIER.test(code) && !o.scope.check(code)) {
+        _ref2 = this.negated ? ['===', '||'] : ['!==', '&&'], cmp = _ref2[0], cnj = _ref2[1];
+        code = "typeof " + code + " " + cmp + " \"undefined\" " + cnj + " " + code + " " + cmp + " null";
+      } else {
+        code = "" + code + " " + (this.negated ? '==' : '!=') + " null";
+      }
+      return [this.makeCode(o.level <= LEVEL_COND ? code : "(" + code + ")")];
+    };
+
+    return Existence;
+
+  })(Base);
+
+  exports.Parens = Parens = (function(_super) {
+    __extends(Parens, _super);
+
+    function Parens(body) {
+      this.body = body;
+    }
+
+    Parens.prototype.children = ['body'];
+
+    Parens.prototype.unwrap = function() {
+      return this.body;
+    };
+
+    Parens.prototype.isComplex = function() {
+      return this.body.isComplex();
+    };
+
+    Parens.prototype.compileNode = function(o) {
+      var bare, expr, fragments;
+      expr = this.body.unwrap();
+      if (expr instanceof Value && expr.isAtomic()) {
+        expr.front = this.front;
+        return expr.compileToFragments(o);
+      }
+      fragments = expr.compileToFragments(o, LEVEL_PAREN);
+      bare = o.level < LEVEL_OP && (expr instanceof Op || expr instanceof Call || (expr instanceof For && expr.returns));
+      if (bare) {
+        return fragments;
+      } else {
+        return this.wrapInBraces(fragments);
+      }
+    };
+
+    return Parens;
+
+  })(Base);
+
+  exports.For = For = (function(_super) {
+    __extends(For, _super);
+
+    function For(body, source) {
+      var _ref2;
+      this.source = source.source, this.guard = source.guard, this.step = source.step, this.name = source.name, this.index = source.index;
+      this.body = Block.wrap([body]);
+      this.own = !!source.own;
+      this.object = !!source.object;
+      if (this.object) {
+        _ref2 = [this.index, this.name], this.name = _ref2[0], this.index = _ref2[1];
+      }
+      if (this.index instanceof Value) {
+        this.index.error('index cannot be a pattern matching expression');
+      }
+      this.range = this.source instanceof Value && this.source.base instanceof Range && !this.source.properties.length;
+      this.pattern = this.name instanceof Value;
+      if (this.range && this.index) {
+        this.index.error('indexes do not apply to range loops');
+      }
+      if (this.range && this.pattern) {
+        this.name.error('cannot pattern match over range loops');
+      }
+      if (this.own && !this.object) {
+        this.name.error('cannot use own with for-in');
+      }
+      this.returns = false;
+    }
+
+    For.prototype.children = ['body', 'source', 'guard', 'step'];
+
+    For.prototype.compileNode = function(o) {
+      var body, bodyFragments, compare, compareDown, declare, declareDown, defPart, defPartFragments, down, forPartFragments, guardPart, idt1, increment, index, ivar, kvar, kvarAssign, lastJumps, lvar, name, namePart, ref, resultPart, returnResult, rvar, scope, source, step, stepNum, stepVar, svar, varPart, _ref2, _ref3;
+      body = Block.wrap([this.body]);
+      lastJumps = (_ref2 = last(body.expressions)) != null ? _ref2.jumps() : void 0;
+      if (lastJumps && lastJumps instanceof Return) {
+        this.returns = false;
+      }
+      source = this.range ? this.source.base : this.source;
+      scope = o.scope;
+      if (!this.pattern) {
+        name = this.name && (this.name.compile(o, LEVEL_LIST));
+      }
+      index = this.index && (this.index.compile(o, LEVEL_LIST));
+      if (name && !this.pattern) {
+        scope.find(name);
+      }
+      if (index) {
+        scope.find(index);
+      }
+      if (this.returns) {
+        rvar = scope.freeVariable('results');
+      }
+      ivar = (this.object && index) || scope.freeVariable('i');
+      kvar = (this.range && name) || index || ivar;
+      kvarAssign = kvar !== ivar ? "" + kvar + " = " : "";
+      if (this.step && !this.range) {
+        _ref3 = this.cacheToCodeFragments(this.step.cache(o, LEVEL_LIST)), step = _ref3[0], stepVar = _ref3[1];
+        stepNum = stepVar.match(NUMBER);
+      }
+      if (this.pattern) {
+        name = ivar;
+      }
+      varPart = '';
+      guardPart = '';
+      defPart = '';
+      idt1 = this.tab + TAB;
+      if (this.range) {
+        forPartFragments = source.compileToFragments(merge(o, {
+          index: ivar,
+          name: name,
+          step: this.step
+        }));
+      } else {
+        svar = this.source.compile(o, LEVEL_LIST);
+        if ((name || this.own) && !IDENTIFIER.test(svar)) {
+          defPart += "" + this.tab + (ref = scope.freeVariable('ref')) + " = " + svar + ";\n";
+          svar = ref;
+        }
+        if (name && !this.pattern) {
+          namePart = "" + name + " = " + svar + "[" + kvar + "]";
+        }
+        if (!this.object) {
+          if (step !== stepVar) {
+            defPart += "" + this.tab + step + ";\n";
+          }
+          if (!(this.step && stepNum && (down = parseNum(stepNum[0]) < 0))) {
+            lvar = scope.freeVariable('len');
+          }
+          declare = "" + kvarAssign + ivar + " = 0, " + lvar + " = " + svar + ".length";
+          declareDown = "" + kvarAssign + ivar + " = " + svar + ".length - 1";
+          compare = "" + ivar + " < " + lvar;
+          compareDown = "" + ivar + " >= 0";
+          if (this.step) {
+            if (stepNum) {
+              if (down) {
+                compare = compareDown;
+                declare = declareDown;
+              }
+            } else {
+              compare = "" + stepVar + " > 0 ? " + compare + " : " + compareDown;
+              declare = "(" + stepVar + " > 0 ? (" + declare + ") : " + declareDown + ")";
+            }
+            increment = "" + ivar + " += " + stepVar;
+          } else {
+            increment = "" + (kvar !== ivar ? "++" + ivar : "" + ivar + "++");
+          }
+          forPartFragments = [this.makeCode("" + declare + "; " + compare + "; " + kvarAssign + increment)];
+        }
+      }
+      if (this.returns) {
+        resultPart = "" + this.tab + rvar + " = [];\n";
+        returnResult = "\n" + this.tab + "return " + rvar + ";";
+        body.makeReturn(rvar);
+      }
+      if (this.guard) {
+        if (body.expressions.length > 1) {
+          body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue")));
+        } else {
+          if (this.guard) {
+            body = Block.wrap([new If(this.guard, body)]);
+          }
+        }
+      }
+      if (this.pattern) {
+        body.expressions.unshift(new Assign(this.name, new Literal("" + svar + "[" + kvar + "]")));
+      }
+      defPartFragments = [].concat(this.makeCode(defPart), this.pluckDirectCall(o, body));
+      if (namePart) {
+        varPart = "\n" + idt1 + namePart + ";";
+      }
+      if (this.object) {
+        forPartFragments = [this.makeCode("" + kvar + " in " + svar)];
+        if (this.own) {
+          guardPart = "\n" + idt1 + "if (!" + (utility('hasProp')) + ".call(" + svar + ", " + kvar + ")) continue;";
+        }
+      }
+      bodyFragments = body.compileToFragments(merge(o, {
+        indent: idt1
+      }), LEVEL_TOP);
+      if (bodyFragments && (bodyFragments.length > 0)) {
+        bodyFragments = [].concat(this.makeCode("\n"), bodyFragments, this.makeCode("\n"));
+      }
+      return [].concat(defPartFragments, this.makeCode("" + (resultPart || '') + this.tab + "for ("), forPartFragments, this.makeCode(") {" + guardPart + varPart), bodyFragments, this.makeCode("" + this.tab + "}" + (returnResult || '')));
+    };
+
+    For.prototype.pluckDirectCall = function(o, body) {
+      var base, defs, expr, fn, idx, ref, val, _i, _len, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8;
+      defs = [];
+      _ref2 = body.expressions;
+      for (idx = _i = 0, _len = _ref2.length; _i < _len; idx = ++_i) {
+        expr = _ref2[idx];
+        expr = expr.unwrapAll();
+        if (!(expr instanceof Call)) {
+          continue;
+        }
+        val = (_ref3 = expr.variable) != null ? _ref3.unwrapAll() : void 0;
+        if (!((val instanceof Code) || (val instanceof Value && ((_ref4 = val.base) != null ? _ref4.unwrapAll() : void 0) instanceof Code && val.properties.length === 1 && ((_ref5 = (_ref6 = val.properties[0].name) != null ? _ref6.value : void 0) === 'call' || _ref5 === 'apply')))) {
+          continue;
+        }
+        fn = ((_ref7 = val.base) != null ? _ref7.unwrapAll() : void 0) || val;
+        ref = new Literal(o.scope.freeVariable('fn'));
+        base = new Value(ref);
+        if (val.base) {
+          _ref8 = [base, val], val.base = _ref8[0], base = _ref8[1];
+        }
+        body.expressions[idx] = new Call(base, expr.args);
+        defs = defs.concat(this.makeCode(this.tab), new Assign(ref, fn).compileToFragments(o, LEVEL_TOP), this.makeCode(';\n'));
+      }
+      return defs;
+    };
+
+    return For;
+
+  })(While);
+
+  exports.Switch = Switch = (function(_super) {
+    __extends(Switch, _super);
+
+    function Switch(subject, cases, otherwise) {
+      this.subject = subject;
+      this.cases = cases;
+      this.otherwise = otherwise;
+    }
+
+    Switch.prototype.children = ['subject', 'cases', 'otherwise'];
+
+    Switch.prototype.isStatement = YES;
+
+    Switch.prototype.jumps = function(o) {
+      var block, conds, jumpNode, _i, _len, _ref2, _ref3, _ref4;
+      if (o == null) {
+        o = {
+          block: true
+        };
+      }
+      _ref2 = this.cases;
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        _ref3 = _ref2[_i], conds = _ref3[0], block = _ref3[1];
+        if (jumpNode = block.jumps(o)) {
+          return jumpNode;
+        }
+      }
+      return (_ref4 = this.otherwise) != null ? _ref4.jumps(o) : void 0;
+    };
+
+    Switch.prototype.makeReturn = function(res) {
+      var pair, _i, _len, _ref2, _ref3;
+      _ref2 = this.cases;
+      for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
+        pair = _ref2[_i];
+        pair[1].makeReturn(res);
+      }
+      if (res) {
+        this.otherwise || (this.otherwise = new Block([new Literal('void 0')]));
+      }
+      if ((_ref3 = this.otherwise) != null) {
+        _ref3.makeReturn(res);
+      }
+      return this;
+    };
+
+    Switch.prototype.compileNode = function(o) {
+      var block, body, cond, conditions, expr, fragments, i, idt1, idt2, _i, _j, _len, _len1, _ref2, _ref3, _ref4;
+      idt1 = o.indent + TAB;
+      idt2 = o.indent = idt1 + TAB;
+      fragments = [].concat(this.makeCode(this.tab + "switch ("), (this.subject ? this.subject.compileToFragments(o, LEVEL_PAREN) : this.makeCode("false")), this.makeCode(") {\n"));
+      _ref2 = this.cases;
+      for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) {
+        _ref3 = _ref2[i], conditions = _ref3[0], block = _ref3[1];
+        _ref4 = flatten([conditions]);
+        for (_j = 0, _len1 = _ref4.length; _j < _len1; _j++) {
+          cond = _ref4[_j];
+          if (!this.subject) {
+            cond = cond.invert();
+          }
+          fragments = fragments.concat(this.makeCode(idt1 + "case "), cond.compileToFragments(o, LEVEL_PAREN), this.makeCode(":\n"));
+        }
+        if ((body = block.compileToFragments(o, LEVEL_TOP)).length > 0) {
+          fragments = fragments.concat(body, this.makeCode('\n'));
+        }
+        if (i === this.cases.length - 1 && !this.otherwise) {
+          break;
+        }
+        expr = this.lastNonComment(block.expressions);
+        if (expr instanceof Return || (expr instanceof Literal && expr.jumps() && expr.value !== 'debugger')) {
+          continue;
+        }
+        fragments.push(cond.makeCode(idt2 + 'break;\n'));
+      }
+      if (this.otherwise && this.otherwise.expressions.length) {
+        fragments.push.apply(fragments, [this.makeCode(idt1 + "default:\n")].concat(__slice.call(this.otherwise.compileToFragments(o, LEVEL_TOP)), [this.makeCode("\n")]));
+      }
+      fragments.push(this.makeCode(this.tab + '}'));
+      return fragments;
+    };
+
+    return Switch;
+
+  })(Base);
+
+  exports.If = If = (function(_super) {
+    __extends(If, _super);
+
+    function If(condition, body, options) {
+      this.body = body;
+      if (options == null) {
+        options = {};
+      }
+      this.condition = options.type === 'unless' ? condition.invert() : condition;
+      this.elseBody = null;
+      this.isChain = false;
+      this.soak = options.soak;
+    }
+
+    If.prototype.children = ['condition', 'body', 'elseBody'];
+
+    If.prototype.bodyNode = function() {
+      var _ref2;
+      return (_ref2 = this.body) != null ? _ref2.unwrap() : void 0;
+    };
+
+    If.prototype.elseBodyNode = function() {
+      var _ref2;
+      return (_ref2 = this.elseBody) != null ? _ref2.unwrap() : void 0;
+    };
+
+    If.prototype.addElse = function(elseBody) {
+      if (this.isChain) {
+        this.elseBodyNode().addElse(elseBody);
+      } else {
+        this.isChain = elseBody instanceof If;
+        this.elseBody = this.ensureBlock(elseBody);
+        this.elseBody.updateLocationDataIfMissing(elseBody.locationData);
+      }
+      return this;
+    };
+
+    If.prototype.isStatement = function(o) {
+      var _ref2;
+      return (o != null ? o.level : void 0) === LEVEL_TOP || this.bodyNode().isStatement(o) || ((_ref2 = this.elseBodyNode()) != null ? _ref2.isStatement(o) : void 0);
+    };
+
+    If.prototype.jumps = function(o) {
+      var _ref2;
+      return this.body.jumps(o) || ((_ref2 = this.elseBody) != null ? _ref2.jumps(o) : void 0);
+    };
+
+    If.prototype.compileNode = function(o) {
+      if (this.isStatement(o)) {
+        return this.compileStatement(o);
+      } else {
+        return this.compileExpression(o);
+      }
+    };
+
+    If.prototype.makeReturn = function(res) {
+      if (res) {
+        this.elseBody || (this.elseBody = new Block([new Literal('void 0')]));
+      }
+      this.body && (this.body = new Block([this.body.makeReturn(res)]));
+      this.elseBody && (this.elseBody = new Block([this.elseBody.makeReturn(res)]));
+      return this;
+    };
+
+    If.prototype.ensureBlock = function(node) {
+      if (node instanceof Block) {
+        return node;
+      } else {
+        return new Block([node]);
+      }
+    };
+
+    If.prototype.compileStatement = function(o) {
+      var answer, body, child, cond, exeq, ifPart, indent;
+      child = del(o, 'chainChild');
+      exeq = del(o, 'isExistentialEquals');
+      if (exeq) {
+        return new If(this.condition.invert(), this.elseBodyNode(), {
+          type: 'if'
+        }).compileToFragments(o);
+      }
+      indent = o.indent + TAB;
+      cond = this.condition.compileToFragments(o, LEVEL_PAREN);
+      body = this.ensureBlock(this.body).compileToFragments(merge(o, {
+        indent: indent
+      }));
+      ifPart = [].concat(this.makeCode("if ("), cond, this.makeCode(") {\n"), body, this.makeCode("\n" + this.tab + "}"));
+      if (!child) {
+        ifPart.unshift(this.makeCode(this.tab));
+      }
+      if (!this.elseBody) {
+        return ifPart;
+      }
+      answer = ifPart.concat(this.makeCode(' else '));
+      if (this.isChain) {
+        o.chainChild = true;
+        answer = answer.concat(this.elseBody.unwrap().compileToFragments(o, LEVEL_TOP));
+      } else {
+        answer = answer.concat(this.makeCode("{\n"), this.elseBody.compileToFragments(merge(o, {
+          indent: indent
+        }), LEVEL_TOP), this.makeCode("\n" + this.tab + "}"));
+      }
+      return answer;
+    };
+
+    If.prototype.compileExpression = function(o) {
+      var alt, body, cond, fragments;
+      cond = this.condition.compileToFragments(o, LEVEL_COND);
+      body = this.bodyNode().compileToFragments(o, LEVEL_LIST);
+      alt = this.elseBodyNode() ? this.elseBodyNode().compileToFragments(o, LEVEL_LIST) : [this.makeCode('void 0')];
+      fragments = cond.concat(this.makeCode(" ? "), body, this.makeCode(" : "), alt);
+      if (o.level >= LEVEL_COND) {
+        return this.wrapInBraces(fragments);
+      } else {
+        return fragments;
+      }
+    };
+
+    If.prototype.unfoldSoak = function() {
+      return this.soak && this;
+    };
+
+    return If;
+
+  })(Base);
+
+  UTILITIES = {
+    "extends": function() {
+      return "function(child, parent) { for (var key in parent) { if (" + (utility('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() {
+      return 'function(fn, me){ return function(){ return fn.apply(me, arguments); }; }';
+    },
+    indexOf: function() {
+      return "[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }";
+    },
+    modulo: function() {
+      return "function(a, b) { return (+a % (b = +b) + b) % b; }";
+    },
+    hasProp: function() {
+      return '{}.hasOwnProperty';
+    },
+    slice: function() {
+      return '[].slice';
+    }
+  };
+
+  LEVEL_TOP = 1;
+
+  LEVEL_PAREN = 2;
+
+  LEVEL_LIST = 3;
+
+  LEVEL_COND = 4;
+
+  LEVEL_OP = 5;
+
+  LEVEL_ACCESS = 6;
+
+  TAB = '  ';
+
+  IDENTIFIER_STR = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*";
+
+  IDENTIFIER = RegExp("^" + IDENTIFIER_STR + "$");
+
+  SIMPLENUM = /^[+-]?\d+$/;
+
+  HEXNUM = /^[+-]?0x[\da-f]+/i;
+
+  NUMBER = /^[+-]?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)$/i;
+
+  METHOD_DEF = RegExp("^(" + IDENTIFIER_STR + ")(\\.prototype)?(?:\\.(" + IDENTIFIER_STR + ")|\\[(\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"|'(?:[^\\\\'\\r\\n]|\\\\.)*')\\]|\\[(0x[\\da-fA-F]+|\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\])$");
+
+  IS_STRING = /^['"]/;
+
+  IS_REGEX = /^\//;
+
+  utility = function(name) {
+    var ref;
+    ref = "__" + name;
+    Scope.root.assign(ref, UTILITIES[name]());
+    return ref;
+  };
+
+  multident = function(code, tab) {
+    code = code.replace(/\n/g, '$&' + tab);
+    return code.replace(/\s+$/, '');
+  };
+
+  parseNum = function(x) {
+    if (x == null) {
+      return 0;
+    } else if (x.match(HEXNUM)) {
+      return parseInt(x, 16);
+    } else {
+      return parseFloat(x);
+    }
+  };
+
+  isLiteralArguments = function(node) {
+    return node instanceof Literal && node.value === 'arguments' && !node.asKey;
+  };
+
+  isLiteralThis = function(node) {
+    return (node instanceof Literal && node.value === 'this' && !node.asKey) || (node instanceof Code && node.bound) || (node instanceof Call && node.isSuper);
+  };
+
+  unfoldSoak = function(o, parent, name) {
+    var ifn;
+    if (!(ifn = parent[name].unfoldSoak(o))) {
+      return;
+    }
+    parent[name] = ifn.body;
+    ifn.body = new Value(parent);
+    return ifn;
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/optparse.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/optparse.js
new file mode 100644 (file)
index 0000000..6ec3604
--- /dev/null
@@ -0,0 +1,139 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var LONG_FLAG, MULTI_FLAG, OPTIONAL, OptionParser, SHORT_FLAG, buildRule, buildRules, normalizeArguments, repeat;
+
+  repeat = require('./helpers').repeat;
+
+  exports.OptionParser = OptionParser = (function() {
+    function OptionParser(rules, banner) {
+      this.banner = banner;
+      this.rules = buildRules(rules);
+    }
+
+    OptionParser.prototype.parse = function(args) {
+      var arg, i, isOption, matchedRule, options, originalArgs, pos, rule, seenNonOptionArg, skippingArgument, value, _i, _j, _len, _len1, _ref;
+      options = {
+        "arguments": []
+      };
+      skippingArgument = false;
+      originalArgs = args;
+      args = normalizeArguments(args);
+      for (i = _i = 0, _len = args.length; _i < _len; i = ++_i) {
+        arg = args[i];
+        if (skippingArgument) {
+          skippingArgument = false;
+          continue;
+        }
+        if (arg === '--') {
+          pos = originalArgs.indexOf('--');
+          options["arguments"] = options["arguments"].concat(originalArgs.slice(pos + 1));
+          break;
+        }
+        isOption = !!(arg.match(LONG_FLAG) || arg.match(SHORT_FLAG));
+        seenNonOptionArg = options["arguments"].length > 0;
+        if (!seenNonOptionArg) {
+          matchedRule = false;
+          _ref = this.rules;
+          for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
+            rule = _ref[_j];
+            if (rule.shortFlag === arg || rule.longFlag === arg) {
+              value = true;
+              if (rule.hasArgument) {
+                skippingArgument = true;
+                value = args[i + 1];
+              }
+              options[rule.name] = rule.isList ? (options[rule.name] || []).concat(value) : value;
+              matchedRule = true;
+              break;
+            }
+          }
+          if (isOption && !matchedRule) {
+            throw new Error("unrecognized option: " + arg);
+          }
+        }
+        if (seenNonOptionArg || !isOption) {
+          options["arguments"].push(arg);
+        }
+      }
+      return options;
+    };
+
+    OptionParser.prototype.help = function() {
+      var letPart, lines, rule, spaces, _i, _len, _ref;
+      lines = [];
+      if (this.banner) {
+        lines.unshift("" + this.banner + "\n");
+      }
+      _ref = this.rules;
+      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+        rule = _ref[_i];
+        spaces = 15 - rule.longFlag.length;
+        spaces = spaces > 0 ? repeat(' ', spaces) : '';
+        letPart = rule.shortFlag ? rule.shortFlag + ', ' : '    ';
+        lines.push('  ' + letPart + rule.longFlag + spaces + rule.description);
+      }
+      return "\n" + (lines.join('\n')) + "\n";
+    };
+
+    return OptionParser;
+
+  })();
+
+  LONG_FLAG = /^(--\w[\w\-]*)/;
+
+  SHORT_FLAG = /^(-\w)$/;
+
+  MULTI_FLAG = /^-(\w{2,})/;
+
+  OPTIONAL = /\[(\w+(\*?))\]/;
+
+  buildRules = function(rules) {
+    var tuple, _i, _len, _results;
+    _results = [];
+    for (_i = 0, _len = rules.length; _i < _len; _i++) {
+      tuple = rules[_i];
+      if (tuple.length < 3) {
+        tuple.unshift(null);
+      }
+      _results.push(buildRule.apply(null, tuple));
+    }
+    return _results;
+  };
+
+  buildRule = function(shortFlag, longFlag, description, options) {
+    var match;
+    if (options == null) {
+      options = {};
+    }
+    match = longFlag.match(OPTIONAL);
+    longFlag = longFlag.match(LONG_FLAG)[1];
+    return {
+      name: longFlag.substr(2),
+      shortFlag: shortFlag,
+      longFlag: longFlag,
+      description: description,
+      hasArgument: !!(match && match[1]),
+      isList: !!(match && match[2])
+    };
+  };
+
+  normalizeArguments = function(args) {
+    var arg, l, match, result, _i, _j, _len, _len1, _ref;
+    args = args.slice(0);
+    result = [];
+    for (_i = 0, _len = args.length; _i < _len; _i++) {
+      arg = args[_i];
+      if (match = arg.match(MULTI_FLAG)) {
+        _ref = match[1].split('');
+        for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
+          l = _ref[_j];
+          result.push('-' + l);
+        }
+      } else {
+        result.push(arg);
+      }
+    }
+    return result;
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/parser.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/parser.js
new file mode 100755 (executable)
index 0000000..724636b
--- /dev/null
@@ -0,0 +1,724 @@
+/* parser generated by jison 0.4.13 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var parser = {trace: function trace() { },
+yy: {},
+symbols_: {"error":2,"Root":3,"Body":4,"Line":5,"TERMINATOR":6,"Expression":7,"Statement":8,"Return":9,"Comment":10,"STATEMENT":11,"Value":12,"Invocation":13,"Code":14,"Operation":15,"Assign":16,"If":17,"Try":18,"While":19,"For":20,"Switch":21,"Class":22,"Throw":23,"Block":24,"INDENT":25,"OUTDENT":26,"Identifier":27,"IDENTIFIER":28,"AlphaNumeric":29,"NUMBER":30,"STRING":31,"Literal":32,"JS":33,"REGEX":34,"DEBUGGER":35,"UNDEFINED":36,"NULL":37,"BOOL":38,"Assignable":39,"=":40,"AssignObj":41,"ObjAssignable":42,":":43,"ThisProperty":44,"RETURN":45,"HERECOMMENT":46,"PARAM_START":47,"ParamList":48,"PARAM_END":49,"FuncGlyph":50,"->":51,"=>":52,"OptComma":53,",":54,"Param":55,"ParamVar":56,"...":57,"Array":58,"Object":59,"Splat":60,"SimpleAssignable":61,"Accessor":62,"Parenthetical":63,"Range":64,"This":65,".":66,"?.":67,"::":68,"?::":69,"Index":70,"INDEX_START":71,"IndexValue":72,"INDEX_END":73,"INDEX_SOAK":74,"Slice":75,"{":76,"AssignList":77,"}":78,"CLASS":79,"EXTENDS":80,"OptFuncExist":81,"Arguments":82,"SUPER":83,"FUNC_EXIST":84,"CALL_START":85,"CALL_END":86,"ArgList":87,"THIS":88,"@":89,"[":90,"]":91,"RangeDots":92,"..":93,"Arg":94,"SimpleArgs":95,"TRY":96,"Catch":97,"FINALLY":98,"CATCH":99,"THROW":100,"(":101,")":102,"WhileSource":103,"WHILE":104,"WHEN":105,"UNTIL":106,"Loop":107,"LOOP":108,"ForBody":109,"FOR":110,"ForStart":111,"ForSource":112,"ForVariables":113,"OWN":114,"ForValue":115,"FORIN":116,"FOROF":117,"BY":118,"SWITCH":119,"Whens":120,"ELSE":121,"When":122,"LEADING_WHEN":123,"IfBlock":124,"IF":125,"POST_IF":126,"UNARY":127,"UNARY_MATH":128,"-":129,"+":130,"--":131,"++":132,"?":133,"MATH":134,"**":135,"SHIFT":136,"COMPARE":137,"LOGIC":138,"RELATION":139,"COMPOUND_ASSIGN":140,"$accept":0,"$end":1},
+terminals_: {2:"error",6:"TERMINATOR",11:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",31:"STRING",33:"JS",34:"REGEX",35:"DEBUGGER",36:"UNDEFINED",37:"NULL",38:"BOOL",40:"=",43:":",45:"RETURN",46:"HERECOMMENT",47:"PARAM_START",49:"PARAM_END",51:"->",52:"=>",54:",",57:"...",66:".",67:"?.",68:"::",69:"?::",71:"INDEX_START",73:"INDEX_END",74:"INDEX_SOAK",76:"{",78:"}",79:"CLASS",80:"EXTENDS",83:"SUPER",84:"FUNC_EXIST",85:"CALL_START",86:"CALL_END",88:"THIS",89:"@",90:"[",91:"]",93:"..",96:"TRY",98:"FINALLY",99:"CATCH",100:"THROW",101:"(",102:")",104:"WHILE",105:"WHEN",106:"UNTIL",108:"LOOP",110:"FOR",114:"OWN",116:"FORIN",117:"FOROF",118:"BY",119:"SWITCH",121:"ELSE",123:"LEADING_WHEN",125:"IF",126:"POST_IF",127:"UNARY",128:"UNARY_MATH",129:"-",130:"+",131:"--",132:"++",133:"?",134:"MATH",135:"**",136:"SHIFT",137:"COMPARE",138:"LOGIC",139:"RELATION",140:"COMPOUND_ASSIGN"},
+productions_: [0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[24,2],[24,3],[27,1],[29,1],[29,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[16,3],[16,4],[16,5],[41,1],[41,3],[41,5],[41,1],[42,1],[42,1],[42,1],[9,2],[9,1],[10,1],[14,5],[14,2],[50,1],[50,1],[53,0],[53,1],[48,0],[48,1],[48,3],[48,4],[48,6],[55,1],[55,2],[55,3],[55,1],[56,1],[56,1],[56,1],[56,1],[60,2],[61,1],[61,2],[61,2],[61,1],[39,1],[39,1],[39,1],[12,1],[12,1],[12,1],[12,1],[12,1],[62,2],[62,2],[62,2],[62,2],[62,1],[62,1],[70,3],[70,2],[72,1],[72,1],[59,4],[77,0],[77,1],[77,3],[77,4],[77,6],[22,1],[22,2],[22,3],[22,4],[22,2],[22,3],[22,4],[22,5],[13,3],[13,3],[13,1],[13,2],[81,0],[81,1],[82,2],[82,4],[65,1],[65,1],[44,2],[58,2],[58,4],[92,1],[92,1],[64,5],[75,3],[75,2],[75,2],[75,1],[87,1],[87,3],[87,4],[87,4],[87,6],[94,1],[94,1],[94,1],[95,1],[95,3],[18,2],[18,3],[18,4],[18,5],[97,3],[97,3],[97,2],[23,2],[63,3],[63,5],[103,2],[103,4],[103,2],[103,4],[19,2],[19,2],[19,2],[19,1],[107,2],[107,2],[20,2],[20,2],[20,2],[109,2],[109,2],[111,2],[111,3],[115,1],[115,1],[115,1],[115,1],[113,1],[113,3],[112,2],[112,2],[112,4],[112,4],[112,4],[112,6],[112,6],[21,5],[21,7],[21,4],[21,6],[120,1],[120,2],[122,3],[122,4],[124,3],[124,5],[17,1],[17,3],[17,3],[17,3],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,5],[15,4],[15,3]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 1:return this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Block);
+break;
+case 2:return this.$ = $$[$0];
+break;
+case 3:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(yy.Block.wrap([$$[$0]]));
+break;
+case 4:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].push($$[$0]));
+break;
+case 5:this.$ = $$[$0-1];
+break;
+case 6:this.$ = $$[$0];
+break;
+case 7:this.$ = $$[$0];
+break;
+case 8:this.$ = $$[$0];
+break;
+case 9:this.$ = $$[$0];
+break;
+case 10:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0]));
+break;
+case 11:this.$ = $$[$0];
+break;
+case 12:this.$ = $$[$0];
+break;
+case 13:this.$ = $$[$0];
+break;
+case 14:this.$ = $$[$0];
+break;
+case 15:this.$ = $$[$0];
+break;
+case 16:this.$ = $$[$0];
+break;
+case 17:this.$ = $$[$0];
+break;
+case 18:this.$ = $$[$0];
+break;
+case 19:this.$ = $$[$0];
+break;
+case 20:this.$ = $$[$0];
+break;
+case 21:this.$ = $$[$0];
+break;
+case 22:this.$ = $$[$0];
+break;
+case 23:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Block);
+break;
+case 24:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-1]);
+break;
+case 25:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0]));
+break;
+case 26:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0]));
+break;
+case 27:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0]));
+break;
+case 28:this.$ = $$[$0];
+break;
+case 29:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0]));
+break;
+case 30:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0]));
+break;
+case 31:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0]));
+break;
+case 32:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Undefined);
+break;
+case 33:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Null);
+break;
+case 34:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Bool($$[$0]));
+break;
+case 35:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0]));
+break;
+case 36:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0]));
+break;
+case 37:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1]));
+break;
+case 38:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0]));
+break;
+case 39:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-2])(new yy.Value($$[$0-2])), $$[$0], 'object'));
+break;
+case 40:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], 'object'));
+break;
+case 41:this.$ = $$[$0];
+break;
+case 42:this.$ = $$[$0];
+break;
+case 43:this.$ = $$[$0];
+break;
+case 44:this.$ = $$[$0];
+break;
+case 45:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Return($$[$0]));
+break;
+case 46:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Return);
+break;
+case 47:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Comment($$[$0]));
+break;
+case 48:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Code($$[$0-3], $$[$0], $$[$0-1]));
+break;
+case 49:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Code([], $$[$0], $$[$0-1]));
+break;
+case 50:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('func');
+break;
+case 51:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('boundfunc');
+break;
+case 52:this.$ = $$[$0];
+break;
+case 53:this.$ = $$[$0];
+break;
+case 54:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([]);
+break;
+case 55:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([$$[$0]]);
+break;
+case 56:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].concat($$[$0]));
+break;
+case 57:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-3].concat($$[$0]));
+break;
+case 58:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])($$[$0-5].concat($$[$0-2]));
+break;
+case 59:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Param($$[$0]));
+break;
+case 60:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Param($$[$0-1], null, true));
+break;
+case 61:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Param($$[$0-2], $$[$0]));
+break;
+case 62:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Expansion);
+break;
+case 63:this.$ = $$[$0];
+break;
+case 64:this.$ = $$[$0];
+break;
+case 65:this.$ = $$[$0];
+break;
+case 66:this.$ = $$[$0];
+break;
+case 67:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Splat($$[$0-1]));
+break;
+case 68:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0]));
+break;
+case 69:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].add($$[$0]));
+break;
+case 70:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Value($$[$0-1], [].concat($$[$0])));
+break;
+case 71:this.$ = $$[$0];
+break;
+case 72:this.$ = $$[$0];
+break;
+case 73:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0]));
+break;
+case 74:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0]));
+break;
+case 75:this.$ = $$[$0];
+break;
+case 76:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0]));
+break;
+case 77:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0]));
+break;
+case 78:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0]));
+break;
+case 79:this.$ = $$[$0];
+break;
+case 80:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Access($$[$0]));
+break;
+case 81:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Access($$[$0], 'soak'));
+break;
+case 82:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Access(new yy.Literal('prototype'))), yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))]);
+break;
+case 83:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Access(new yy.Literal('prototype'), 'soak')), yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))]);
+break;
+case 84:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Access(new yy.Literal('prototype')));
+break;
+case 85:this.$ = $$[$0];
+break;
+case 86:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-1]);
+break;
+case 87:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(yy.extend($$[$0], {
+          soak: true
+        }));
+break;
+case 88:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Index($$[$0]));
+break;
+case 89:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Slice($$[$0]));
+break;
+case 90:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Obj($$[$0-2], $$[$0-3].generated));
+break;
+case 91:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([]);
+break;
+case 92:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([$$[$0]]);
+break;
+case 93:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].concat($$[$0]));
+break;
+case 94:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-3].concat($$[$0]));
+break;
+case 95:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])($$[$0-5].concat($$[$0-2]));
+break;
+case 96:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Class);
+break;
+case 97:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Class(null, null, $$[$0]));
+break;
+case 98:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Class(null, $$[$0]));
+break;
+case 99:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Class(null, $$[$0-1], $$[$0]));
+break;
+case 100:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Class($$[$0]));
+break;
+case 101:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Class($$[$0-1], null, $$[$0]));
+break;
+case 102:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Class($$[$0-2], $$[$0]));
+break;
+case 103:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Class($$[$0-3], $$[$0-1], $$[$0]));
+break;
+case 104:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Call($$[$0-2], $$[$0], $$[$0-1]));
+break;
+case 105:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Call($$[$0-2], $$[$0], $$[$0-1]));
+break;
+case 106:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Call('super', [new yy.Splat(new yy.Literal('arguments'))]));
+break;
+case 107:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Call('super', $$[$0]));
+break;
+case 108:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(false);
+break;
+case 109:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(true);
+break;
+case 110:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([]);
+break;
+case 111:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-2]);
+break;
+case 112:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value(new yy.Literal('this')));
+break;
+case 113:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value(new yy.Literal('this')));
+break;
+case 114:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Value(yy.addLocationDataFn(_$[$0-1])(new yy.Literal('this')), [yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))], 'this'));
+break;
+case 115:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Arr([]));
+break;
+case 116:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Arr($$[$0-2]));
+break;
+case 117:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('inclusive');
+break;
+case 118:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('exclusive');
+break;
+case 119:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Range($$[$0-3], $$[$0-1], $$[$0-2]));
+break;
+case 120:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Range($$[$0-2], $$[$0], $$[$0-1]));
+break;
+case 121:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Range($$[$0-1], null, $$[$0]));
+break;
+case 122:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Range(null, $$[$0], $$[$0-1]));
+break;
+case 123:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Range(null, null, $$[$0]));
+break;
+case 124:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([$$[$0]]);
+break;
+case 125:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].concat($$[$0]));
+break;
+case 126:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-3].concat($$[$0]));
+break;
+case 127:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-2]);
+break;
+case 128:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])($$[$0-5].concat($$[$0-2]));
+break;
+case 129:this.$ = $$[$0];
+break;
+case 130:this.$ = $$[$0];
+break;
+case 131:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Expansion);
+break;
+case 132:this.$ = $$[$0];
+break;
+case 133:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([].concat($$[$0-2], $$[$0]));
+break;
+case 134:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Try($$[$0]));
+break;
+case 135:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Try($$[$0-1], $$[$0][0], $$[$0][1]));
+break;
+case 136:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Try($$[$0-2], null, null, $$[$0]));
+break;
+case 137:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0]));
+break;
+case 138:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([$$[$0-1], $$[$0]]);
+break;
+case 139:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Value($$[$0-1])), $$[$0]]);
+break;
+case 140:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([null, $$[$0]]);
+break;
+case 141:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Throw($$[$0]));
+break;
+case 142:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Parens($$[$0-1]));
+break;
+case 143:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Parens($$[$0-2]));
+break;
+case 144:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While($$[$0]));
+break;
+case 145:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.While($$[$0-2], {
+          guard: $$[$0]
+        }));
+break;
+case 146:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While($$[$0], {
+          invert: true
+        }));
+break;
+case 147:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.While($$[$0-2], {
+          invert: true,
+          guard: $$[$0]
+        }));
+break;
+case 148:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].addBody($$[$0]));
+break;
+case 149:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0].addBody(yy.addLocationDataFn(_$[$0-1])(yy.Block.wrap([$$[$0-1]]))));
+break;
+case 150:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0].addBody(yy.addLocationDataFn(_$[$0-1])(yy.Block.wrap([$$[$0-1]]))));
+break;
+case 151:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])($$[$0]);
+break;
+case 152:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While(yy.addLocationDataFn(_$[$0-1])(new yy.Literal('true'))).addBody($$[$0]));
+break;
+case 153:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While(yy.addLocationDataFn(_$[$0-1])(new yy.Literal('true'))).addBody(yy.addLocationDataFn(_$[$0])(yy.Block.wrap([$$[$0]]))));
+break;
+case 154:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0-1], $$[$0]));
+break;
+case 155:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0-1], $$[$0]));
+break;
+case 156:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0], $$[$0-1]));
+break;
+case 157:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({
+          source: yy.addLocationDataFn(_$[$0])(new yy.Value($$[$0]))
+        });
+break;
+case 158:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])((function () {
+        $$[$0].own = $$[$0-1].own;
+        $$[$0].name = $$[$0-1][0];
+        $$[$0].index = $$[$0-1][1];
+        return $$[$0];
+      }()));
+break;
+case 159:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0]);
+break;
+case 160:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])((function () {
+        $$[$0].own = true;
+        return $$[$0];
+      }()));
+break;
+case 161:this.$ = $$[$0];
+break;
+case 162:this.$ = $$[$0];
+break;
+case 163:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0]));
+break;
+case 164:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0]));
+break;
+case 165:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([$$[$0]]);
+break;
+case 166:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([$$[$0-2], $$[$0]]);
+break;
+case 167:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({
+          source: $$[$0]
+        });
+break;
+case 168:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({
+          source: $$[$0],
+          object: true
+        });
+break;
+case 169:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({
+          source: $$[$0-2],
+          guard: $$[$0]
+        });
+break;
+case 170:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({
+          source: $$[$0-2],
+          guard: $$[$0],
+          object: true
+        });
+break;
+case 171:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({
+          source: $$[$0-2],
+          step: $$[$0]
+        });
+break;
+case 172:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])({
+          source: $$[$0-4],
+          guard: $$[$0-2],
+          step: $$[$0]
+        });
+break;
+case 173:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])({
+          source: $$[$0-4],
+          step: $$[$0-2],
+          guard: $$[$0]
+        });
+break;
+case 174:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Switch($$[$0-3], $$[$0-1]));
+break;
+case 175:this.$ = yy.addLocationDataFn(_$[$0-6], _$[$0])(new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1]));
+break;
+case 176:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Switch(null, $$[$0-1]));
+break;
+case 177:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])(new yy.Switch(null, $$[$0-3], $$[$0-1]));
+break;
+case 178:this.$ = $$[$0];
+break;
+case 179:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].concat($$[$0]));
+break;
+case 180:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([[$$[$0-1], $$[$0]]]);
+break;
+case 181:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])([[$$[$0-2], $$[$0-1]]]);
+break;
+case 182:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], {
+          type: $$[$0-2]
+        }));
+break;
+case 183:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])($$[$0-4].addElse(yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], {
+          type: $$[$0-2]
+        }))));
+break;
+case 184:this.$ = $$[$0];
+break;
+case 185:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].addElse($$[$0]));
+break;
+case 186:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0], yy.addLocationDataFn(_$[$0-2])(yy.Block.wrap([$$[$0-2]])), {
+          type: $$[$0-1],
+          statement: true
+        }));
+break;
+case 187:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0], yy.addLocationDataFn(_$[$0-2])(yy.Block.wrap([$$[$0-2]])), {
+          type: $$[$0-1],
+          statement: true
+        }));
+break;
+case 188:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op($$[$0-1], $$[$0]));
+break;
+case 189:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op($$[$0-1], $$[$0]));
+break;
+case 190:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('-', $$[$0]));
+break;
+case 191:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('+', $$[$0]));
+break;
+case 192:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('--', $$[$0]));
+break;
+case 193:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('++', $$[$0]));
+break;
+case 194:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('--', $$[$0-1], null, true));
+break;
+case 195:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('++', $$[$0-1], null, true));
+break;
+case 196:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Existence($$[$0-1]));
+break;
+case 197:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op('+', $$[$0-2], $$[$0]));
+break;
+case 198:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op('-', $$[$0-2], $$[$0]));
+break;
+case 199:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0]));
+break;
+case 200:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0]));
+break;
+case 201:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0]));
+break;
+case 202:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0]));
+break;
+case 203:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0]));
+break;
+case 204:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])((function () {
+        if ($$[$0-1].charAt(0) === '!') {
+          return new yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert();
+        } else {
+          return new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
+        }
+      }()));
+break;
+case 205:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0], $$[$0-1]));
+break;
+case 206:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3]));
+break;
+case 207:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0], $$[$0-2]));
+break;
+case 208:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Extends($$[$0-2], $$[$0]));
+break;
+}
+},
+table: [{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[3]},{1:[2,2],6:[1,73]},{1:[2,3],6:[2,3],26:[2,3],102:[2,3]},{1:[2,6],6:[2,6],26:[2,6],102:[2,6],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,7],6:[2,7],26:[2,7],102:[2,7],103:87,104:[1,64],106:[1,65],109:88,110:[1,67],111:68,126:[1,86]},{1:[2,11],6:[2,11],25:[2,11],26:[2,11],49:[2,11],54:[2,11],57:[2,11],62:90,66:[1,92],67:[1,93],68:[1,94],69:[1,95],70:96,71:[1,97],73:[2,11],74:[1,98],78:[2,11],81:89,84:[1,91],85:[2,108],86:[2,11],91:[2,11],93:[2,11],102:[2,11],104:[2,11],105:[2,11],106:[2,11],110:[2,11],118:[2,11],126:[2,11],129:[2,11],130:[2,11],133:[2,11],134:[2,11],135:[2,11],136:[2,11],137:[2,11],138:[2,11],139:[2,11]},{1:[2,12],6:[2,12],25:[2,12],26:[2,12],49:[2,12],54:[2,12],57:[2,12],62:100,66:[1,92],67:[1,93],68:[1,94],69:[1,95],70:96,71:[1,97],73:[2,12],74:[1,98],78:[2,12],81:99,84:[1,91],85:[2,108],86:[2,12],91:[2,12],93:[2,12],102:[2,12],104:[2,12],105:[2,12],106:[2,12],110:[2,12],118:[2,12],126:[2,12],129:[2,12],130:[2,12],133:[2,12],134:[2,12],135:[2,12],136:[2,12],137:[2,12],138:[2,12],139:[2,12]},{1:[2,13],6:[2,13],25:[2,13],26:[2,13],49:[2,13],54:[2,13],57:[2,13],73:[2,13],78:[2,13],86:[2,13],91:[2,13],93:[2,13],102:[2,13],104:[2,13],105:[2,13],106:[2,13],110:[2,13],118:[2,13],126:[2,13],129:[2,13],130:[2,13],133:[2,13],134:[2,13],135:[2,13],136:[2,13],137:[2,13],138:[2,13],139:[2,13]},{1:[2,14],6:[2,14],25:[2,14],26:[2,14],49:[2,14],54:[2,14],57:[2,14],73:[2,14],78:[2,14],86:[2,14],91:[2,14],93:[2,14],102:[2,14],104:[2,14],105:[2,14],106:[2,14],110:[2,14],118:[2,14],126:[2,14],129:[2,14],130:[2,14],133:[2,14],134:[2,14],135:[2,14],136:[2,14],137:[2,14],138:[2,14],139:[2,14]},{1:[2,15],6:[2,15],25:[2,15],26:[2,15],49:[2,15],54:[2,15],57:[2,15],73:[2,15],78:[2,15],86:[2,15],91:[2,15],93:[2,15],102:[2,15],104:[2,15],105:[2,15],106:[2,15],110:[2,15],118:[2,15],126:[2,15],129:[2,15],130:[2,15],133:[2,15],134:[2,15],135:[2,15],136:[2,15],137:[2,15],138:[2,15],139:[2,15]},{1:[2,16],6:[2,16],25:[2,16],26:[2,16],49:[2,16],54:[2,16],57:[2,16],73:[2,16],78:[2,16],86:[2,16],91:[2,16],93:[2,16],102:[2,16],104:[2,16],105:[2,16],106:[2,16],110:[2,16],118:[2,16],126:[2,16],129:[2,16],130:[2,16],133:[2,16],134:[2,16],135:[2,16],136:[2,16],137:[2,16],138:[2,16],139:[2,16]},{1:[2,17],6:[2,17],25:[2,17],26:[2,17],49:[2,17],54:[2,17],57:[2,17],73:[2,17],78:[2,17],86:[2,17],91:[2,17],93:[2,17],102:[2,17],104:[2,17],105:[2,17],106:[2,17],110:[2,17],118:[2,17],126:[2,17],129:[2,17],130:[2,17],133:[2,17],134:[2,17],135:[2,17],136:[2,17],137:[2,17],138:[2,17],139:[2,17]},{1:[2,18],6:[2,18],25:[2,18],26:[2,18],49:[2,18],54:[2,18],57:[2,18],73:[2,18],78:[2,18],86:[2,18],91:[2,18],93:[2,18],102:[2,18],104:[2,18],105:[2,18],106:[2,18],110:[2,18],118:[2,18],126:[2,18],129:[2,18],130:[2,18],133:[2,18],134:[2,18],135:[2,18],136:[2,18],137:[2,18],138:[2,18],139:[2,18]},{1:[2,19],6:[2,19],25:[2,19],26:[2,19],49:[2,19],54:[2,19],57:[2,19],73:[2,19],78:[2,19],86:[2,19],91:[2,19],93:[2,19],102:[2,19],104:[2,19],105:[2,19],106:[2,19],110:[2,19],118:[2,19],126:[2,19],129:[2,19],130:[2,19],133:[2,19],134:[2,19],135:[2,19],136:[2,19],137:[2,19],138:[2,19],139:[2,19]},{1:[2,20],6:[2,20],25:[2,20],26:[2,20],49:[2,20],54:[2,20],57:[2,20],73:[2,20],78:[2,20],86:[2,20],91:[2,20],93:[2,20],102:[2,20],104:[2,20],105:[2,20],106:[2,20],110:[2,20],118:[2,20],126:[2,20],129:[2,20],130:[2,20],133:[2,20],134:[2,20],135:[2,20],136:[2,20],137:[2,20],138:[2,20],139:[2,20]},{1:[2,21],6:[2,21],25:[2,21],26:[2,21],49:[2,21],54:[2,21],57:[2,21],73:[2,21],78:[2,21],86:[2,21],91:[2,21],93:[2,21],102:[2,21],104:[2,21],105:[2,21],106:[2,21],110:[2,21],118:[2,21],126:[2,21],129:[2,21],130:[2,21],133:[2,21],134:[2,21],135:[2,21],136:[2,21],137:[2,21],138:[2,21],139:[2,21]},{1:[2,22],6:[2,22],25:[2,22],26:[2,22],49:[2,22],54:[2,22],57:[2,22],73:[2,22],78:[2,22],86:[2,22],91:[2,22],93:[2,22],102:[2,22],104:[2,22],105:[2,22],106:[2,22],110:[2,22],118:[2,22],126:[2,22],129:[2,22],130:[2,22],133:[2,22],134:[2,22],135:[2,22],136:[2,22],137:[2,22],138:[2,22],139:[2,22]},{1:[2,8],6:[2,8],26:[2,8],102:[2,8],104:[2,8],106:[2,8],110:[2,8],126:[2,8]},{1:[2,9],6:[2,9],26:[2,9],102:[2,9],104:[2,9],106:[2,9],110:[2,9],126:[2,9]},{1:[2,10],6:[2,10],26:[2,10],102:[2,10],104:[2,10],106:[2,10],110:[2,10],126:[2,10]},{1:[2,75],6:[2,75],25:[2,75],26:[2,75],40:[1,101],49:[2,75],54:[2,75],57:[2,75],66:[2,75],67:[2,75],68:[2,75],69:[2,75],71:[2,75],73:[2,75],74:[2,75],78:[2,75],84:[2,75],85:[2,75],86:[2,75],91:[2,75],93:[2,75],102:[2,75],104:[2,75],105:[2,75],106:[2,75],110:[2,75],118:[2,75],126:[2,75],129:[2,75],130:[2,75],133:[2,75],134:[2,75],135:[2,75],136:[2,75],137:[2,75],138:[2,75],139:[2,75]},{1:[2,76],6:[2,76],25:[2,76],26:[2,76],49:[2,76],54:[2,76],57:[2,76],66:[2,76],67:[2,76],68:[2,76],69:[2,76],71:[2,76],73:[2,76],74:[2,76],78:[2,76],84:[2,76],85:[2,76],86:[2,76],91:[2,76],93:[2,76],102:[2,76],104:[2,76],105:[2,76],106:[2,76],110:[2,76],118:[2,76],126:[2,76],129:[2,76],130:[2,76],133:[2,76],134:[2,76],135:[2,76],136:[2,76],137:[2,76],138:[2,76],139:[2,76]},{1:[2,77],6:[2,77],25:[2,77],26:[2,77],49:[2,77],54:[2,77],57:[2,77],66:[2,77],67:[2,77],68:[2,77],69:[2,77],71:[2,77],73:[2,77],74:[2,77],78:[2,77],84:[2,77],85:[2,77],86:[2,77],91:[2,77],93:[2,77],102:[2,77],104:[2,77],105:[2,77],106:[2,77],110:[2,77],118:[2,77],126:[2,77],129:[2,77],130:[2,77],133:[2,77],134:[2,77],135:[2,77],136:[2,77],137:[2,77],138:[2,77],139:[2,77]},{1:[2,78],6:[2,78],25:[2,78],26:[2,78],49:[2,78],54:[2,78],57:[2,78],66:[2,78],67:[2,78],68:[2,78],69:[2,78],71:[2,78],73:[2,78],74:[2,78],78:[2,78],84:[2,78],85:[2,78],86:[2,78],91:[2,78],93:[2,78],102:[2,78],104:[2,78],105:[2,78],106:[2,78],110:[2,78],118:[2,78],126:[2,78],129:[2,78],130:[2,78],133:[2,78],134:[2,78],135:[2,78],136:[2,78],137:[2,78],138:[2,78],139:[2,78]},{1:[2,79],6:[2,79],25:[2,79],26:[2,79],49:[2,79],54:[2,79],57:[2,79],66:[2,79],67:[2,79],68:[2,79],69:[2,79],71:[2,79],73:[2,79],74:[2,79],78:[2,79],84:[2,79],85:[2,79],86:[2,79],91:[2,79],93:[2,79],102:[2,79],104:[2,79],105:[2,79],106:[2,79],110:[2,79],118:[2,79],126:[2,79],129:[2,79],130:[2,79],133:[2,79],134:[2,79],135:[2,79],136:[2,79],137:[2,79],138:[2,79],139:[2,79]},{1:[2,106],6:[2,106],25:[2,106],26:[2,106],49:[2,106],54:[2,106],57:[2,106],66:[2,106],67:[2,106],68:[2,106],69:[2,106],71:[2,106],73:[2,106],74:[2,106],78:[2,106],82:102,84:[2,106],85:[1,103],86:[2,106],91:[2,106],93:[2,106],102:[2,106],104:[2,106],105:[2,106],106:[2,106],110:[2,106],118:[2,106],126:[2,106],129:[2,106],130:[2,106],133:[2,106],134:[2,106],135:[2,106],136:[2,106],137:[2,106],138:[2,106],139:[2,106]},{6:[2,54],25:[2,54],27:108,28:[1,72],44:109,48:104,49:[2,54],54:[2,54],55:105,56:106,57:[1,107],58:110,59:111,76:[1,69],89:[1,112],90:[1,113]},{24:114,25:[1,115]},{7:116,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:118,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:119,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:120,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{12:122,13:123,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:124,44:62,58:46,59:47,61:121,63:23,64:24,65:25,76:[1,69],83:[1,26],88:[1,57],89:[1,58],90:[1,56],101:[1,55]},{12:122,13:123,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:124,44:62,58:46,59:47,61:125,63:23,64:24,65:25,76:[1,69],83:[1,26],88:[1,57],89:[1,58],90:[1,56],101:[1,55]},{1:[2,72],6:[2,72],25:[2,72],26:[2,72],40:[2,72],49:[2,72],54:[2,72],57:[2,72],66:[2,72],67:[2,72],68:[2,72],69:[2,72],71:[2,72],73:[2,72],74:[2,72],78:[2,72],80:[1,129],84:[2,72],85:[2,72],86:[2,72],91:[2,72],93:[2,72],102:[2,72],104:[2,72],105:[2,72],106:[2,72],110:[2,72],118:[2,72],126:[2,72],129:[2,72],130:[2,72],131:[1,126],132:[1,127],133:[2,72],134:[2,72],135:[2,72],136:[2,72],137:[2,72],138:[2,72],139:[2,72],140:[1,128]},{1:[2,184],6:[2,184],25:[2,184],26:[2,184],49:[2,184],54:[2,184],57:[2,184],73:[2,184],78:[2,184],86:[2,184],91:[2,184],93:[2,184],102:[2,184],104:[2,184],105:[2,184],106:[2,184],110:[2,184],118:[2,184],121:[1,130],126:[2,184],129:[2,184],130:[2,184],133:[2,184],134:[2,184],135:[2,184],136:[2,184],137:[2,184],138:[2,184],139:[2,184]},{24:131,25:[1,115]},{24:132,25:[1,115]},{1:[2,151],6:[2,151],25:[2,151],26:[2,151],49:[2,151],54:[2,151],57:[2,151],73:[2,151],78:[2,151],86:[2,151],91:[2,151],93:[2,151],102:[2,151],104:[2,151],105:[2,151],106:[2,151],110:[2,151],118:[2,151],126:[2,151],129:[2,151],130:[2,151],133:[2,151],134:[2,151],135:[2,151],136:[2,151],137:[2,151],138:[2,151],139:[2,151]},{24:133,25:[1,115]},{7:134,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,135],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,96],6:[2,96],12:122,13:123,24:136,25:[1,115],26:[2,96],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:124,44:62,49:[2,96],54:[2,96],57:[2,96],58:46,59:47,61:138,63:23,64:24,65:25,73:[2,96],76:[1,69],78:[2,96],80:[1,137],83:[1,26],86:[2,96],88:[1,57],89:[1,58],90:[1,56],91:[2,96],93:[2,96],101:[1,55],102:[2,96],104:[2,96],105:[2,96],106:[2,96],110:[2,96],118:[2,96],126:[2,96],129:[2,96],130:[2,96],133:[2,96],134:[2,96],135:[2,96],136:[2,96],137:[2,96],138:[2,96],139:[2,96]},{7:139,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,46],6:[2,46],7:140,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[2,46],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],102:[2,46],103:38,104:[2,46],106:[2,46],107:39,108:[1,66],109:40,110:[2,46],111:68,119:[1,41],124:36,125:[1,63],126:[2,46],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,47],6:[2,47],25:[2,47],26:[2,47],54:[2,47],78:[2,47],102:[2,47],104:[2,47],106:[2,47],110:[2,47],126:[2,47]},{1:[2,73],6:[2,73],25:[2,73],26:[2,73],40:[2,73],49:[2,73],54:[2,73],57:[2,73],66:[2,73],67:[2,73],68:[2,73],69:[2,73],71:[2,73],73:[2,73],74:[2,73],78:[2,73],84:[2,73],85:[2,73],86:[2,73],91:[2,73],93:[2,73],102:[2,73],104:[2,73],105:[2,73],106:[2,73],110:[2,73],118:[2,73],126:[2,73],129:[2,73],130:[2,73],133:[2,73],134:[2,73],135:[2,73],136:[2,73],137:[2,73],138:[2,73],139:[2,73]},{1:[2,74],6:[2,74],25:[2,74],26:[2,74],40:[2,74],49:[2,74],54:[2,74],57:[2,74],66:[2,74],67:[2,74],68:[2,74],69:[2,74],71:[2,74],73:[2,74],74:[2,74],78:[2,74],84:[2,74],85:[2,74],86:[2,74],91:[2,74],93:[2,74],102:[2,74],104:[2,74],105:[2,74],106:[2,74],110:[2,74],118:[2,74],126:[2,74],129:[2,74],130:[2,74],133:[2,74],134:[2,74],135:[2,74],136:[2,74],137:[2,74],138:[2,74],139:[2,74]},{1:[2,28],6:[2,28],25:[2,28],26:[2,28],49:[2,28],54:[2,28],57:[2,28],66:[2,28],67:[2,28],68:[2,28],69:[2,28],71:[2,28],73:[2,28],74:[2,28],78:[2,28],84:[2,28],85:[2,28],86:[2,28],91:[2,28],93:[2,28],102:[2,28],104:[2,28],105:[2,28],106:[2,28],110:[2,28],118:[2,28],126:[2,28],129:[2,28],130:[2,28],133:[2,28],134:[2,28],135:[2,28],136:[2,28],137:[2,28],138:[2,28],139:[2,28]},{1:[2,29],6:[2,29],25:[2,29],26:[2,29],49:[2,29],54:[2,29],57:[2,29],66:[2,29],67:[2,29],68:[2,29],69:[2,29],71:[2,29],73:[2,29],74:[2,29],78:[2,29],84:[2,29],85:[2,29],86:[2,29],91:[2,29],93:[2,29],102:[2,29],104:[2,29],105:[2,29],106:[2,29],110:[2,29],118:[2,29],126:[2,29],129:[2,29],130:[2,29],133:[2,29],134:[2,29],135:[2,29],136:[2,29],137:[2,29],138:[2,29],139:[2,29]},{1:[2,30],6:[2,30],25:[2,30],26:[2,30],49:[2,30],54:[2,30],57:[2,30],66:[2,30],67:[2,30],68:[2,30],69:[2,30],71:[2,30],73:[2,30],74:[2,30],78:[2,30],84:[2,30],85:[2,30],86:[2,30],91:[2,30],93:[2,30],102:[2,30],104:[2,30],105:[2,30],106:[2,30],110:[2,30],118:[2,30],126:[2,30],129:[2,30],130:[2,30],133:[2,30],134:[2,30],135:[2,30],136:[2,30],137:[2,30],138:[2,30],139:[2,30]},{1:[2,31],6:[2,31],25:[2,31],26:[2,31],49:[2,31],54:[2,31],57:[2,31],66:[2,31],67:[2,31],68:[2,31],69:[2,31],71:[2,31],73:[2,31],74:[2,31],78:[2,31],84:[2,31],85:[2,31],86:[2,31],91:[2,31],93:[2,31],102:[2,31],104:[2,31],105:[2,31],106:[2,31],110:[2,31],118:[2,31],126:[2,31],129:[2,31],130:[2,31],133:[2,31],134:[2,31],135:[2,31],136:[2,31],137:[2,31],138:[2,31],139:[2,31]},{1:[2,32],6:[2,32],25:[2,32],26:[2,32],49:[2,32],54:[2,32],57:[2,32],66:[2,32],67:[2,32],68:[2,32],69:[2,32],71:[2,32],73:[2,32],74:[2,32],78:[2,32],84:[2,32],85:[2,32],86:[2,32],91:[2,32],93:[2,32],102:[2,32],104:[2,32],105:[2,32],106:[2,32],110:[2,32],118:[2,32],126:[2,32],129:[2,32],130:[2,32],133:[2,32],134:[2,32],135:[2,32],136:[2,32],137:[2,32],138:[2,32],139:[2,32]},{1:[2,33],6:[2,33],25:[2,33],26:[2,33],49:[2,33],54:[2,33],57:[2,33],66:[2,33],67:[2,33],68:[2,33],69:[2,33],71:[2,33],73:[2,33],74:[2,33],78:[2,33],84:[2,33],85:[2,33],86:[2,33],91:[2,33],93:[2,33],102:[2,33],104:[2,33],105:[2,33],106:[2,33],110:[2,33],118:[2,33],126:[2,33],129:[2,33],130:[2,33],133:[2,33],134:[2,33],135:[2,33],136:[2,33],137:[2,33],138:[2,33],139:[2,33]},{1:[2,34],6:[2,34],25:[2,34],26:[2,34],49:[2,34],54:[2,34],57:[2,34],66:[2,34],67:[2,34],68:[2,34],69:[2,34],71:[2,34],73:[2,34],74:[2,34],78:[2,34],84:[2,34],85:[2,34],86:[2,34],91:[2,34],93:[2,34],102:[2,34],104:[2,34],105:[2,34],106:[2,34],110:[2,34],118:[2,34],126:[2,34],129:[2,34],130:[2,34],133:[2,34],134:[2,34],135:[2,34],136:[2,34],137:[2,34],138:[2,34],139:[2,34]},{4:141,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,142],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:143,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,147],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],57:[1,149],58:46,59:47,60:148,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],87:145,88:[1,57],89:[1,58],90:[1,56],91:[1,144],94:146,96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,112],6:[2,112],25:[2,112],26:[2,112],49:[2,112],54:[2,112],57:[2,112],66:[2,112],67:[2,112],68:[2,112],69:[2,112],71:[2,112],73:[2,112],74:[2,112],78:[2,112],84:[2,112],85:[2,112],86:[2,112],91:[2,112],93:[2,112],102:[2,112],104:[2,112],105:[2,112],106:[2,112],110:[2,112],118:[2,112],126:[2,112],129:[2,112],130:[2,112],133:[2,112],134:[2,112],135:[2,112],136:[2,112],137:[2,112],138:[2,112],139:[2,112]},{1:[2,113],6:[2,113],25:[2,113],26:[2,113],27:150,28:[1,72],49:[2,113],54:[2,113],57:[2,113],66:[2,113],67:[2,113],68:[2,113],69:[2,113],71:[2,113],73:[2,113],74:[2,113],78:[2,113],84:[2,113],85:[2,113],86:[2,113],91:[2,113],93:[2,113],102:[2,113],104:[2,113],105:[2,113],106:[2,113],110:[2,113],118:[2,113],126:[2,113],129:[2,113],130:[2,113],133:[2,113],134:[2,113],135:[2,113],136:[2,113],137:[2,113],138:[2,113],139:[2,113]},{25:[2,50]},{25:[2,51]},{1:[2,68],6:[2,68],25:[2,68],26:[2,68],40:[2,68],49:[2,68],54:[2,68],57:[2,68],66:[2,68],67:[2,68],68:[2,68],69:[2,68],71:[2,68],73:[2,68],74:[2,68],78:[2,68],80:[2,68],84:[2,68],85:[2,68],86:[2,68],91:[2,68],93:[2,68],102:[2,68],104:[2,68],105:[2,68],106:[2,68],110:[2,68],118:[2,68],126:[2,68],129:[2,68],130:[2,68],131:[2,68],132:[2,68],133:[2,68],134:[2,68],135:[2,68],136:[2,68],137:[2,68],138:[2,68],139:[2,68],140:[2,68]},{1:[2,71],6:[2,71],25:[2,71],26:[2,71],40:[2,71],49:[2,71],54:[2,71],57:[2,71],66:[2,71],67:[2,71],68:[2,71],69:[2,71],71:[2,71],73:[2,71],74:[2,71],78:[2,71],80:[2,71],84:[2,71],85:[2,71],86:[2,71],91:[2,71],93:[2,71],102:[2,71],104:[2,71],105:[2,71],106:[2,71],110:[2,71],118:[2,71],126:[2,71],129:[2,71],130:[2,71],131:[2,71],132:[2,71],133:[2,71],134:[2,71],135:[2,71],136:[2,71],137:[2,71],138:[2,71],139:[2,71],140:[2,71]},{7:151,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:152,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:153,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:155,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,24:154,25:[1,115],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{27:160,28:[1,72],44:161,58:162,59:163,64:156,76:[1,69],89:[1,112],90:[1,56],113:157,114:[1,158],115:159},{112:164,116:[1,165],117:[1,166]},{6:[2,91],10:170,25:[2,91],27:171,28:[1,72],29:172,30:[1,70],31:[1,71],41:168,42:169,44:173,46:[1,45],54:[2,91],77:167,78:[2,91],89:[1,112]},{1:[2,26],6:[2,26],25:[2,26],26:[2,26],43:[2,26],49:[2,26],54:[2,26],57:[2,26],66:[2,26],67:[2,26],68:[2,26],69:[2,26],71:[2,26],73:[2,26],74:[2,26],78:[2,26],84:[2,26],85:[2,26],86:[2,26],91:[2,26],93:[2,26],102:[2,26],104:[2,26],105:[2,26],106:[2,26],110:[2,26],118:[2,26],126:[2,26],129:[2,26],130:[2,26],133:[2,26],134:[2,26],135:[2,26],136:[2,26],137:[2,26],138:[2,26],139:[2,26]},{1:[2,27],6:[2,27],25:[2,27],26:[2,27],43:[2,27],49:[2,27],54:[2,27],57:[2,27],66:[2,27],67:[2,27],68:[2,27],69:[2,27],71:[2,27],73:[2,27],74:[2,27],78:[2,27],84:[2,27],85:[2,27],86:[2,27],91:[2,27],93:[2,27],102:[2,27],104:[2,27],105:[2,27],106:[2,27],110:[2,27],118:[2,27],126:[2,27],129:[2,27],130:[2,27],133:[2,27],134:[2,27],135:[2,27],136:[2,27],137:[2,27],138:[2,27],139:[2,27]},{1:[2,25],6:[2,25],25:[2,25],26:[2,25],40:[2,25],43:[2,25],49:[2,25],54:[2,25],57:[2,25],66:[2,25],67:[2,25],68:[2,25],69:[2,25],71:[2,25],73:[2,25],74:[2,25],78:[2,25],80:[2,25],84:[2,25],85:[2,25],86:[2,25],91:[2,25],93:[2,25],102:[2,25],104:[2,25],105:[2,25],106:[2,25],110:[2,25],116:[2,25],117:[2,25],118:[2,25],126:[2,25],129:[2,25],130:[2,25],131:[2,25],132:[2,25],133:[2,25],134:[2,25],135:[2,25],136:[2,25],137:[2,25],138:[2,25],139:[2,25],140:[2,25]},{1:[2,5],5:174,6:[2,5],7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[2,5],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],102:[2,5],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,196],6:[2,196],25:[2,196],26:[2,196],49:[2,196],54:[2,196],57:[2,196],73:[2,196],78:[2,196],86:[2,196],91:[2,196],93:[2,196],102:[2,196],104:[2,196],105:[2,196],106:[2,196],110:[2,196],118:[2,196],126:[2,196],129:[2,196],130:[2,196],133:[2,196],134:[2,196],135:[2,196],136:[2,196],137:[2,196],138:[2,196],139:[2,196]},{7:175,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:176,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:177,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:178,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:179,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:180,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:181,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:182,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:183,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,150],6:[2,150],25:[2,150],26:[2,150],49:[2,150],54:[2,150],57:[2,150],73:[2,150],78:[2,150],86:[2,150],91:[2,150],93:[2,150],102:[2,150],104:[2,150],105:[2,150],106:[2,150],110:[2,150],118:[2,150],126:[2,150],129:[2,150],130:[2,150],133:[2,150],134:[2,150],135:[2,150],136:[2,150],137:[2,150],138:[2,150],139:[2,150]},{1:[2,155],6:[2,155],25:[2,155],26:[2,155],49:[2,155],54:[2,155],57:[2,155],73:[2,155],78:[2,155],86:[2,155],91:[2,155],93:[2,155],102:[2,155],104:[2,155],105:[2,155],106:[2,155],110:[2,155],118:[2,155],126:[2,155],129:[2,155],130:[2,155],133:[2,155],134:[2,155],135:[2,155],136:[2,155],137:[2,155],138:[2,155],139:[2,155]},{7:184,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,149],6:[2,149],25:[2,149],26:[2,149],49:[2,149],54:[2,149],57:[2,149],73:[2,149],78:[2,149],86:[2,149],91:[2,149],93:[2,149],102:[2,149],104:[2,149],105:[2,149],106:[2,149],110:[2,149],118:[2,149],126:[2,149],129:[2,149],130:[2,149],133:[2,149],134:[2,149],135:[2,149],136:[2,149],137:[2,149],138:[2,149],139:[2,149]},{1:[2,154],6:[2,154],25:[2,154],26:[2,154],49:[2,154],54:[2,154],57:[2,154],73:[2,154],78:[2,154],86:[2,154],91:[2,154],93:[2,154],102:[2,154],104:[2,154],105:[2,154],106:[2,154],110:[2,154],118:[2,154],126:[2,154],129:[2,154],130:[2,154],133:[2,154],134:[2,154],135:[2,154],136:[2,154],137:[2,154],138:[2,154],139:[2,154]},{82:185,85:[1,103]},{1:[2,69],6:[2,69],25:[2,69],26:[2,69],40:[2,69],49:[2,69],54:[2,69],57:[2,69],66:[2,69],67:[2,69],68:[2,69],69:[2,69],71:[2,69],73:[2,69],74:[2,69],78:[2,69],80:[2,69],84:[2,69],85:[2,69],86:[2,69],91:[2,69],93:[2,69],102:[2,69],104:[2,69],105:[2,69],106:[2,69],110:[2,69],118:[2,69],126:[2,69],129:[2,69],130:[2,69],131:[2,69],132:[2,69],133:[2,69],134:[2,69],135:[2,69],136:[2,69],137:[2,69],138:[2,69],139:[2,69],140:[2,69]},{85:[2,109]},{27:186,28:[1,72]},{27:187,28:[1,72]},{1:[2,84],6:[2,84],25:[2,84],26:[2,84],27:188,28:[1,72],40:[2,84],49:[2,84],54:[2,84],57:[2,84],66:[2,84],67:[2,84],68:[2,84],69:[2,84],71:[2,84],73:[2,84],74:[2,84],78:[2,84],80:[2,84],84:[2,84],85:[2,84],86:[2,84],91:[2,84],93:[2,84],102:[2,84],104:[2,84],105:[2,84],106:[2,84],110:[2,84],118:[2,84],126:[2,84],129:[2,84],130:[2,84],131:[2,84],132:[2,84],133:[2,84],134:[2,84],135:[2,84],136:[2,84],137:[2,84],138:[2,84],139:[2,84],140:[2,84]},{27:189,28:[1,72]},{1:[2,85],6:[2,85],25:[2,85],26:[2,85],40:[2,85],49:[2,85],54:[2,85],57:[2,85],66:[2,85],67:[2,85],68:[2,85],69:[2,85],71:[2,85],73:[2,85],74:[2,85],78:[2,85],80:[2,85],84:[2,85],85:[2,85],86:[2,85],91:[2,85],93:[2,85],102:[2,85],104:[2,85],105:[2,85],106:[2,85],110:[2,85],118:[2,85],126:[2,85],129:[2,85],130:[2,85],131:[2,85],132:[2,85],133:[2,85],134:[2,85],135:[2,85],136:[2,85],137:[2,85],138:[2,85],139:[2,85],140:[2,85]},{7:191,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],57:[1,195],58:46,59:47,61:35,63:23,64:24,65:25,72:190,75:192,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],92:193,93:[1,194],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{70:196,71:[1,97],74:[1,98]},{82:197,85:[1,103]},{1:[2,70],6:[2,70],25:[2,70],26:[2,70],40:[2,70],49:[2,70],54:[2,70],57:[2,70],66:[2,70],67:[2,70],68:[2,70],69:[2,70],71:[2,70],73:[2,70],74:[2,70],78:[2,70],80:[2,70],84:[2,70],85:[2,70],86:[2,70],91:[2,70],93:[2,70],102:[2,70],104:[2,70],105:[2,70],106:[2,70],110:[2,70],118:[2,70],126:[2,70],129:[2,70],130:[2,70],131:[2,70],132:[2,70],133:[2,70],134:[2,70],135:[2,70],136:[2,70],137:[2,70],138:[2,70],139:[2,70],140:[2,70]},{6:[1,199],7:198,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,200],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,107],6:[2,107],25:[2,107],26:[2,107],49:[2,107],54:[2,107],57:[2,107],66:[2,107],67:[2,107],68:[2,107],69:[2,107],71:[2,107],73:[2,107],74:[2,107],78:[2,107],84:[2,107],85:[2,107],86:[2,107],91:[2,107],93:[2,107],102:[2,107],104:[2,107],105:[2,107],106:[2,107],110:[2,107],118:[2,107],126:[2,107],129:[2,107],130:[2,107],133:[2,107],134:[2,107],135:[2,107],136:[2,107],137:[2,107],138:[2,107],139:[2,107]},{7:203,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,147],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],57:[1,149],58:46,59:47,60:148,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],86:[1,201],87:202,88:[1,57],89:[1,58],90:[1,56],94:146,96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{6:[2,52],25:[2,52],49:[1,204],53:206,54:[1,205]},{6:[2,55],25:[2,55],26:[2,55],49:[2,55],54:[2,55]},{6:[2,59],25:[2,59],26:[2,59],40:[1,208],49:[2,59],54:[2,59],57:[1,207]},{6:[2,62],25:[2,62],26:[2,62],49:[2,62],54:[2,62]},{6:[2,63],25:[2,63],26:[2,63],40:[2,63],49:[2,63],54:[2,63],57:[2,63]},{6:[2,64],25:[2,64],26:[2,64],40:[2,64],49:[2,64],54:[2,64],57:[2,64]},{6:[2,65],25:[2,65],26:[2,65],40:[2,65],49:[2,65],54:[2,65],57:[2,65]},{6:[2,66],25:[2,66],26:[2,66],40:[2,66],49:[2,66],54:[2,66],57:[2,66]},{27:150,28:[1,72]},{7:203,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,147],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],57:[1,149],58:46,59:47,60:148,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],87:145,88:[1,57],89:[1,58],90:[1,56],91:[1,144],94:146,96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,49],6:[2,49],25:[2,49],26:[2,49],49:[2,49],54:[2,49],57:[2,49],73:[2,49],78:[2,49],86:[2,49],91:[2,49],93:[2,49],102:[2,49],104:[2,49],105:[2,49],106:[2,49],110:[2,49],118:[2,49],126:[2,49],129:[2,49],130:[2,49],133:[2,49],134:[2,49],135:[2,49],136:[2,49],137:[2,49],138:[2,49],139:[2,49]},{4:210,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[1,209],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,188],6:[2,188],25:[2,188],26:[2,188],49:[2,188],54:[2,188],57:[2,188],73:[2,188],78:[2,188],86:[2,188],91:[2,188],93:[2,188],102:[2,188],103:84,104:[2,188],105:[2,188],106:[2,188],109:85,110:[2,188],111:68,118:[2,188],126:[2,188],129:[2,188],130:[2,188],133:[1,74],134:[2,188],135:[2,188],136:[2,188],137:[2,188],138:[2,188],139:[2,188]},{103:87,104:[1,64],106:[1,65],109:88,110:[1,67],111:68,126:[1,86]},{1:[2,189],6:[2,189],25:[2,189],26:[2,189],49:[2,189],54:[2,189],57:[2,189],73:[2,189],78:[2,189],86:[2,189],91:[2,189],93:[2,189],102:[2,189],103:84,104:[2,189],105:[2,189],106:[2,189],109:85,110:[2,189],111:68,118:[2,189],126:[2,189],129:[2,189],130:[2,189],133:[1,74],134:[2,189],135:[1,78],136:[2,189],137:[2,189],138:[2,189],139:[2,189]},{1:[2,190],6:[2,190],25:[2,190],26:[2,190],49:[2,190],54:[2,190],57:[2,190],73:[2,190],78:[2,190],86:[2,190],91:[2,190],93:[2,190],102:[2,190],103:84,104:[2,190],105:[2,190],106:[2,190],109:85,110:[2,190],111:68,118:[2,190],126:[2,190],129:[2,190],130:[2,190],133:[1,74],134:[2,190],135:[1,78],136:[2,190],137:[2,190],138:[2,190],139:[2,190]},{1:[2,191],6:[2,191],25:[2,191],26:[2,191],49:[2,191],54:[2,191],57:[2,191],73:[2,191],78:[2,191],86:[2,191],91:[2,191],93:[2,191],102:[2,191],103:84,104:[2,191],105:[2,191],106:[2,191],109:85,110:[2,191],111:68,118:[2,191],126:[2,191],129:[2,191],130:[2,191],133:[1,74],134:[2,191],135:[1,78],136:[2,191],137:[2,191],138:[2,191],139:[2,191]},{1:[2,192],6:[2,192],25:[2,192],26:[2,192],49:[2,192],54:[2,192],57:[2,192],66:[2,72],67:[2,72],68:[2,72],69:[2,72],71:[2,72],73:[2,192],74:[2,72],78:[2,192],84:[2,72],85:[2,72],86:[2,192],91:[2,192],93:[2,192],102:[2,192],104:[2,192],105:[2,192],106:[2,192],110:[2,192],118:[2,192],126:[2,192],129:[2,192],130:[2,192],133:[2,192],134:[2,192],135:[2,192],136:[2,192],137:[2,192],138:[2,192],139:[2,192]},{62:90,66:[1,92],67:[1,93],68:[1,94],69:[1,95],70:96,71:[1,97],74:[1,98],81:89,84:[1,91],85:[2,108]},{62:100,66:[1,92],67:[1,93],68:[1,94],69:[1,95],70:96,71:[1,97],74:[1,98],81:99,84:[1,91],85:[2,108]},{66:[2,75],67:[2,75],68:[2,75],69:[2,75],71:[2,75],74:[2,75],84:[2,75],85:[2,75]},{1:[2,193],6:[2,193],25:[2,193],26:[2,193],49:[2,193],54:[2,193],57:[2,193],66:[2,72],67:[2,72],68:[2,72],69:[2,72],71:[2,72],73:[2,193],74:[2,72],78:[2,193],84:[2,72],85:[2,72],86:[2,193],91:[2,193],93:[2,193],102:[2,193],104:[2,193],105:[2,193],106:[2,193],110:[2,193],118:[2,193],126:[2,193],129:[2,193],130:[2,193],133:[2,193],134:[2,193],135:[2,193],136:[2,193],137:[2,193],138:[2,193],139:[2,193]},{1:[2,194],6:[2,194],25:[2,194],26:[2,194],49:[2,194],54:[2,194],57:[2,194],73:[2,194],78:[2,194],86:[2,194],91:[2,194],93:[2,194],102:[2,194],104:[2,194],105:[2,194],106:[2,194],110:[2,194],118:[2,194],126:[2,194],129:[2,194],130:[2,194],133:[2,194],134:[2,194],135:[2,194],136:[2,194],137:[2,194],138:[2,194],139:[2,194]},{1:[2,195],6:[2,195],25:[2,195],26:[2,195],49:[2,195],54:[2,195],57:[2,195],73:[2,195],78:[2,195],86:[2,195],91:[2,195],93:[2,195],102:[2,195],104:[2,195],105:[2,195],106:[2,195],110:[2,195],118:[2,195],126:[2,195],129:[2,195],130:[2,195],133:[2,195],134:[2,195],135:[2,195],136:[2,195],137:[2,195],138:[2,195],139:[2,195]},{6:[1,213],7:211,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,212],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:214,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{24:215,25:[1,115],125:[1,216]},{1:[2,134],6:[2,134],25:[2,134],26:[2,134],49:[2,134],54:[2,134],57:[2,134],73:[2,134],78:[2,134],86:[2,134],91:[2,134],93:[2,134],97:217,98:[1,218],99:[1,219],102:[2,134],104:[2,134],105:[2,134],106:[2,134],110:[2,134],118:[2,134],126:[2,134],129:[2,134],130:[2,134],133:[2,134],134:[2,134],135:[2,134],136:[2,134],137:[2,134],138:[2,134],139:[2,134]},{1:[2,148],6:[2,148],25:[2,148],26:[2,148],49:[2,148],54:[2,148],57:[2,148],73:[2,148],78:[2,148],86:[2,148],91:[2,148],93:[2,148],102:[2,148],104:[2,148],105:[2,148],106:[2,148],110:[2,148],118:[2,148],126:[2,148],129:[2,148],130:[2,148],133:[2,148],134:[2,148],135:[2,148],136:[2,148],137:[2,148],138:[2,148],139:[2,148]},{1:[2,156],6:[2,156],25:[2,156],26:[2,156],49:[2,156],54:[2,156],57:[2,156],73:[2,156],78:[2,156],86:[2,156],91:[2,156],93:[2,156],102:[2,156],104:[2,156],105:[2,156],106:[2,156],110:[2,156],118:[2,156],126:[2,156],129:[2,156],130:[2,156],133:[2,156],134:[2,156],135:[2,156],136:[2,156],137:[2,156],138:[2,156],139:[2,156]},{25:[1,220],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{120:221,122:222,123:[1,223]},{1:[2,97],6:[2,97],25:[2,97],26:[2,97],49:[2,97],54:[2,97],57:[2,97],73:[2,97],78:[2,97],86:[2,97],91:[2,97],93:[2,97],102:[2,97],104:[2,97],105:[2,97],106:[2,97],110:[2,97],118:[2,97],126:[2,97],129:[2,97],130:[2,97],133:[2,97],134:[2,97],135:[2,97],136:[2,97],137:[2,97],138:[2,97],139:[2,97]},{7:224,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,100],6:[2,100],24:225,25:[1,115],26:[2,100],49:[2,100],54:[2,100],57:[2,100],66:[2,72],67:[2,72],68:[2,72],69:[2,72],71:[2,72],73:[2,100],74:[2,72],78:[2,100],80:[1,226],84:[2,72],85:[2,72],86:[2,100],91:[2,100],93:[2,100],102:[2,100],104:[2,100],105:[2,100],106:[2,100],110:[2,100],118:[2,100],126:[2,100],129:[2,100],130:[2,100],133:[2,100],134:[2,100],135:[2,100],136:[2,100],137:[2,100],138:[2,100],139:[2,100]},{1:[2,141],6:[2,141],25:[2,141],26:[2,141],49:[2,141],54:[2,141],57:[2,141],73:[2,141],78:[2,141],86:[2,141],91:[2,141],93:[2,141],102:[2,141],103:84,104:[2,141],105:[2,141],106:[2,141],109:85,110:[2,141],111:68,118:[2,141],126:[2,141],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,45],6:[2,45],26:[2,45],102:[2,45],103:84,104:[2,45],106:[2,45],109:85,110:[2,45],111:68,126:[2,45],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{6:[1,73],102:[1,227]},{4:228,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{6:[2,129],25:[2,129],54:[2,129],57:[1,230],91:[2,129],92:229,93:[1,194],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,115],6:[2,115],25:[2,115],26:[2,115],40:[2,115],49:[2,115],54:[2,115],57:[2,115],66:[2,115],67:[2,115],68:[2,115],69:[2,115],71:[2,115],73:[2,115],74:[2,115],78:[2,115],84:[2,115],85:[2,115],86:[2,115],91:[2,115],93:[2,115],102:[2,115],104:[2,115],105:[2,115],106:[2,115],110:[2,115],116:[2,115],117:[2,115],118:[2,115],126:[2,115],129:[2,115],130:[2,115],133:[2,115],134:[2,115],135:[2,115],136:[2,115],137:[2,115],138:[2,115],139:[2,115]},{6:[2,52],25:[2,52],53:231,54:[1,232],91:[2,52]},{6:[2,124],25:[2,124],26:[2,124],54:[2,124],86:[2,124],91:[2,124]},{7:203,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,147],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],57:[1,149],58:46,59:47,60:148,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],87:233,88:[1,57],89:[1,58],90:[1,56],94:146,96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{6:[2,130],25:[2,130],26:[2,130],54:[2,130],86:[2,130],91:[2,130]},{6:[2,131],25:[2,131],26:[2,131],54:[2,131],86:[2,131],91:[2,131]},{1:[2,114],6:[2,114],25:[2,114],26:[2,114],40:[2,114],43:[2,114],49:[2,114],54:[2,114],57:[2,114],66:[2,114],67:[2,114],68:[2,114],69:[2,114],71:[2,114],73:[2,114],74:[2,114],78:[2,114],80:[2,114],84:[2,114],85:[2,114],86:[2,114],91:[2,114],93:[2,114],102:[2,114],104:[2,114],105:[2,114],106:[2,114],110:[2,114],116:[2,114],117:[2,114],118:[2,114],126:[2,114],129:[2,114],130:[2,114],131:[2,114],132:[2,114],133:[2,114],134:[2,114],135:[2,114],136:[2,114],137:[2,114],138:[2,114],139:[2,114],140:[2,114]},{24:234,25:[1,115],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,144],6:[2,144],25:[2,144],26:[2,144],49:[2,144],54:[2,144],57:[2,144],73:[2,144],78:[2,144],86:[2,144],91:[2,144],93:[2,144],102:[2,144],103:84,104:[1,64],105:[1,235],106:[1,65],109:85,110:[1,67],111:68,118:[2,144],126:[2,144],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,146],6:[2,146],25:[2,146],26:[2,146],49:[2,146],54:[2,146],57:[2,146],73:[2,146],78:[2,146],86:[2,146],91:[2,146],93:[2,146],102:[2,146],103:84,104:[1,64],105:[1,236],106:[1,65],109:85,110:[1,67],111:68,118:[2,146],126:[2,146],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,152],6:[2,152],25:[2,152],26:[2,152],49:[2,152],54:[2,152],57:[2,152],73:[2,152],78:[2,152],86:[2,152],91:[2,152],93:[2,152],102:[2,152],104:[2,152],105:[2,152],106:[2,152],110:[2,152],118:[2,152],126:[2,152],129:[2,152],130:[2,152],133:[2,152],134:[2,152],135:[2,152],136:[2,152],137:[2,152],138:[2,152],139:[2,152]},{1:[2,153],6:[2,153],25:[2,153],26:[2,153],49:[2,153],54:[2,153],57:[2,153],73:[2,153],78:[2,153],86:[2,153],91:[2,153],93:[2,153],102:[2,153],103:84,104:[1,64],105:[2,153],106:[1,65],109:85,110:[1,67],111:68,118:[2,153],126:[2,153],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,157],6:[2,157],25:[2,157],26:[2,157],49:[2,157],54:[2,157],57:[2,157],73:[2,157],78:[2,157],86:[2,157],91:[2,157],93:[2,157],102:[2,157],104:[2,157],105:[2,157],106:[2,157],110:[2,157],118:[2,157],126:[2,157],129:[2,157],130:[2,157],133:[2,157],134:[2,157],135:[2,157],136:[2,157],137:[2,157],138:[2,157],139:[2,157]},{116:[2,159],117:[2,159]},{27:160,28:[1,72],44:161,58:162,59:163,76:[1,69],89:[1,112],90:[1,113],113:237,115:159},{54:[1,238],116:[2,165],117:[2,165]},{54:[2,161],116:[2,161],117:[2,161]},{54:[2,162],116:[2,162],117:[2,162]},{54:[2,163],116:[2,163],117:[2,163]},{54:[2,164],116:[2,164],117:[2,164]},{1:[2,158],6:[2,158],25:[2,158],26:[2,158],49:[2,158],54:[2,158],57:[2,158],73:[2,158],78:[2,158],86:[2,158],91:[2,158],93:[2,158],102:[2,158],104:[2,158],105:[2,158],106:[2,158],110:[2,158],118:[2,158],126:[2,158],129:[2,158],130:[2,158],133:[2,158],134:[2,158],135:[2,158],136:[2,158],137:[2,158],138:[2,158],139:[2,158]},{7:239,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:240,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{6:[2,52],25:[2,52],53:241,54:[1,242],78:[2,52]},{6:[2,92],25:[2,92],26:[2,92],54:[2,92],78:[2,92]},{6:[2,38],25:[2,38],26:[2,38],43:[1,243],54:[2,38],78:[2,38]},{6:[2,41],25:[2,41],26:[2,41],54:[2,41],78:[2,41]},{6:[2,42],25:[2,42],26:[2,42],43:[2,42],54:[2,42],78:[2,42]},{6:[2,43],25:[2,43],26:[2,43],43:[2,43],54:[2,43],78:[2,43]},{6:[2,44],25:[2,44],26:[2,44],43:[2,44],54:[2,44],78:[2,44]},{1:[2,4],6:[2,4],26:[2,4],102:[2,4]},{1:[2,197],6:[2,197],25:[2,197],26:[2,197],49:[2,197],54:[2,197],57:[2,197],73:[2,197],78:[2,197],86:[2,197],91:[2,197],93:[2,197],102:[2,197],103:84,104:[2,197],105:[2,197],106:[2,197],109:85,110:[2,197],111:68,118:[2,197],126:[2,197],129:[2,197],130:[2,197],133:[1,74],134:[1,77],135:[1,78],136:[2,197],137:[2,197],138:[2,197],139:[2,197]},{1:[2,198],6:[2,198],25:[2,198],26:[2,198],49:[2,198],54:[2,198],57:[2,198],73:[2,198],78:[2,198],86:[2,198],91:[2,198],93:[2,198],102:[2,198],103:84,104:[2,198],105:[2,198],106:[2,198],109:85,110:[2,198],111:68,118:[2,198],126:[2,198],129:[2,198],130:[2,198],133:[1,74],134:[1,77],135:[1,78],136:[2,198],137:[2,198],138:[2,198],139:[2,198]},{1:[2,199],6:[2,199],25:[2,199],26:[2,199],49:[2,199],54:[2,199],57:[2,199],73:[2,199],78:[2,199],86:[2,199],91:[2,199],93:[2,199],102:[2,199],103:84,104:[2,199],105:[2,199],106:[2,199],109:85,110:[2,199],111:68,118:[2,199],126:[2,199],129:[2,199],130:[2,199],133:[1,74],134:[2,199],135:[1,78],136:[2,199],137:[2,199],138:[2,199],139:[2,199]},{1:[2,200],6:[2,200],25:[2,200],26:[2,200],49:[2,200],54:[2,200],57:[2,200],73:[2,200],78:[2,200],86:[2,200],91:[2,200],93:[2,200],102:[2,200],103:84,104:[2,200],105:[2,200],106:[2,200],109:85,110:[2,200],111:68,118:[2,200],126:[2,200],129:[2,200],130:[2,200],133:[1,74],134:[2,200],135:[1,78],136:[2,200],137:[2,200],138:[2,200],139:[2,200]},{1:[2,201],6:[2,201],25:[2,201],26:[2,201],49:[2,201],54:[2,201],57:[2,201],73:[2,201],78:[2,201],86:[2,201],91:[2,201],93:[2,201],102:[2,201],103:84,104:[2,201],105:[2,201],106:[2,201],109:85,110:[2,201],111:68,118:[2,201],126:[2,201],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[2,201],137:[2,201],138:[2,201],139:[2,201]},{1:[2,202],6:[2,202],25:[2,202],26:[2,202],49:[2,202],54:[2,202],57:[2,202],73:[2,202],78:[2,202],86:[2,202],91:[2,202],93:[2,202],102:[2,202],103:84,104:[2,202],105:[2,202],106:[2,202],109:85,110:[2,202],111:68,118:[2,202],126:[2,202],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[2,202],138:[2,202],139:[1,82]},{1:[2,203],6:[2,203],25:[2,203],26:[2,203],49:[2,203],54:[2,203],57:[2,203],73:[2,203],78:[2,203],86:[2,203],91:[2,203],93:[2,203],102:[2,203],103:84,104:[2,203],105:[2,203],106:[2,203],109:85,110:[2,203],111:68,118:[2,203],126:[2,203],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[2,203],139:[1,82]},{1:[2,204],6:[2,204],25:[2,204],26:[2,204],49:[2,204],54:[2,204],57:[2,204],73:[2,204],78:[2,204],86:[2,204],91:[2,204],93:[2,204],102:[2,204],103:84,104:[2,204],105:[2,204],106:[2,204],109:85,110:[2,204],111:68,118:[2,204],126:[2,204],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[2,204],138:[2,204],139:[2,204]},{1:[2,187],6:[2,187],25:[2,187],26:[2,187],49:[2,187],54:[2,187],57:[2,187],73:[2,187],78:[2,187],86:[2,187],91:[2,187],93:[2,187],102:[2,187],103:84,104:[1,64],105:[2,187],106:[1,65],109:85,110:[1,67],111:68,118:[2,187],126:[2,187],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,186],6:[2,186],25:[2,186],26:[2,186],49:[2,186],54:[2,186],57:[2,186],73:[2,186],78:[2,186],86:[2,186],91:[2,186],93:[2,186],102:[2,186],103:84,104:[1,64],105:[2,186],106:[1,65],109:85,110:[1,67],111:68,118:[2,186],126:[2,186],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,104],6:[2,104],25:[2,104],26:[2,104],49:[2,104],54:[2,104],57:[2,104],66:[2,104],67:[2,104],68:[2,104],69:[2,104],71:[2,104],73:[2,104],74:[2,104],78:[2,104],84:[2,104],85:[2,104],86:[2,104],91:[2,104],93:[2,104],102:[2,104],104:[2,104],105:[2,104],106:[2,104],110:[2,104],118:[2,104],126:[2,104],129:[2,104],130:[2,104],133:[2,104],134:[2,104],135:[2,104],136:[2,104],137:[2,104],138:[2,104],139:[2,104]},{1:[2,80],6:[2,80],25:[2,80],26:[2,80],40:[2,80],49:[2,80],54:[2,80],57:[2,80],66:[2,80],67:[2,80],68:[2,80],69:[2,80],71:[2,80],73:[2,80],74:[2,80],78:[2,80],80:[2,80],84:[2,80],85:[2,80],86:[2,80],91:[2,80],93:[2,80],102:[2,80],104:[2,80],105:[2,80],106:[2,80],110:[2,80],118:[2,80],126:[2,80],129:[2,80],130:[2,80],131:[2,80],132:[2,80],133:[2,80],134:[2,80],135:[2,80],136:[2,80],137:[2,80],138:[2,80],139:[2,80],140:[2,80]},{1:[2,81],6:[2,81],25:[2,81],26:[2,81],40:[2,81],49:[2,81],54:[2,81],57:[2,81],66:[2,81],67:[2,81],68:[2,81],69:[2,81],71:[2,81],73:[2,81],74:[2,81],78:[2,81],80:[2,81],84:[2,81],85:[2,81],86:[2,81],91:[2,81],93:[2,81],102:[2,81],104:[2,81],105:[2,81],106:[2,81],110:[2,81],118:[2,81],126:[2,81],129:[2,81],130:[2,81],131:[2,81],132:[2,81],133:[2,81],134:[2,81],135:[2,81],136:[2,81],137:[2,81],138:[2,81],139:[2,81],140:[2,81]},{1:[2,82],6:[2,82],25:[2,82],26:[2,82],40:[2,82],49:[2,82],54:[2,82],57:[2,82],66:[2,82],67:[2,82],68:[2,82],69:[2,82],71:[2,82],73:[2,82],74:[2,82],78:[2,82],80:[2,82],84:[2,82],85:[2,82],86:[2,82],91:[2,82],93:[2,82],102:[2,82],104:[2,82],105:[2,82],106:[2,82],110:[2,82],118:[2,82],126:[2,82],129:[2,82],130:[2,82],131:[2,82],132:[2,82],133:[2,82],134:[2,82],135:[2,82],136:[2,82],137:[2,82],138:[2,82],139:[2,82],140:[2,82]},{1:[2,83],6:[2,83],25:[2,83],26:[2,83],40:[2,83],49:[2,83],54:[2,83],57:[2,83],66:[2,83],67:[2,83],68:[2,83],69:[2,83],71:[2,83],73:[2,83],74:[2,83],78:[2,83],80:[2,83],84:[2,83],85:[2,83],86:[2,83],91:[2,83],93:[2,83],102:[2,83],104:[2,83],105:[2,83],106:[2,83],110:[2,83],118:[2,83],126:[2,83],129:[2,83],130:[2,83],131:[2,83],132:[2,83],133:[2,83],134:[2,83],135:[2,83],136:[2,83],137:[2,83],138:[2,83],139:[2,83],140:[2,83]},{73:[1,244]},{57:[1,195],73:[2,88],92:245,93:[1,194],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{73:[2,89]},{7:246,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,73:[2,123],76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{11:[2,117],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],73:[2,117],76:[2,117],79:[2,117],83:[2,117],88:[2,117],89:[2,117],90:[2,117],96:[2,117],100:[2,117],101:[2,117],104:[2,117],106:[2,117],108:[2,117],110:[2,117],119:[2,117],125:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117],131:[2,117],132:[2,117]},{11:[2,118],28:[2,118],30:[2,118],31:[2,118],33:[2,118],34:[2,118],35:[2,118],36:[2,118],37:[2,118],38:[2,118],45:[2,118],46:[2,118],47:[2,118],51:[2,118],52:[2,118],73:[2,118],76:[2,118],79:[2,118],83:[2,118],88:[2,118],89:[2,118],90:[2,118],96:[2,118],100:[2,118],101:[2,118],104:[2,118],106:[2,118],108:[2,118],110:[2,118],119:[2,118],125:[2,118],127:[2,118],128:[2,118],129:[2,118],130:[2,118],131:[2,118],132:[2,118]},{1:[2,87],6:[2,87],25:[2,87],26:[2,87],40:[2,87],49:[2,87],54:[2,87],57:[2,87],66:[2,87],67:[2,87],68:[2,87],69:[2,87],71:[2,87],73:[2,87],74:[2,87],78:[2,87],80:[2,87],84:[2,87],85:[2,87],86:[2,87],91:[2,87],93:[2,87],102:[2,87],104:[2,87],105:[2,87],106:[2,87],110:[2,87],118:[2,87],126:[2,87],129:[2,87],130:[2,87],131:[2,87],132:[2,87],133:[2,87],134:[2,87],135:[2,87],136:[2,87],137:[2,87],138:[2,87],139:[2,87],140:[2,87]},{1:[2,105],6:[2,105],25:[2,105],26:[2,105],49:[2,105],54:[2,105],57:[2,105],66:[2,105],67:[2,105],68:[2,105],69:[2,105],71:[2,105],73:[2,105],74:[2,105],78:[2,105],84:[2,105],85:[2,105],86:[2,105],91:[2,105],93:[2,105],102:[2,105],104:[2,105],105:[2,105],106:[2,105],110:[2,105],118:[2,105],126:[2,105],129:[2,105],130:[2,105],133:[2,105],134:[2,105],135:[2,105],136:[2,105],137:[2,105],138:[2,105],139:[2,105]},{1:[2,35],6:[2,35],25:[2,35],26:[2,35],49:[2,35],54:[2,35],57:[2,35],73:[2,35],78:[2,35],86:[2,35],91:[2,35],93:[2,35],102:[2,35],103:84,104:[2,35],105:[2,35],106:[2,35],109:85,110:[2,35],111:68,118:[2,35],126:[2,35],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{7:247,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:248,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,110],6:[2,110],25:[2,110],26:[2,110],49:[2,110],54:[2,110],57:[2,110],66:[2,110],67:[2,110],68:[2,110],69:[2,110],71:[2,110],73:[2,110],74:[2,110],78:[2,110],84:[2,110],85:[2,110],86:[2,110],91:[2,110],93:[2,110],102:[2,110],104:[2,110],105:[2,110],106:[2,110],110:[2,110],118:[2,110],126:[2,110],129:[2,110],130:[2,110],133:[2,110],134:[2,110],135:[2,110],136:[2,110],137:[2,110],138:[2,110],139:[2,110]},{6:[2,52],25:[2,52],53:249,54:[1,232],86:[2,52]},{6:[2,129],25:[2,129],26:[2,129],54:[2,129],57:[1,250],86:[2,129],91:[2,129],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{50:251,51:[1,59],52:[1,60]},{6:[2,53],25:[2,53],26:[2,53],27:108,28:[1,72],44:109,55:252,56:106,57:[1,107],58:110,59:111,76:[1,69],89:[1,112],90:[1,113]},{6:[1,253],25:[1,254]},{6:[2,60],25:[2,60],26:[2,60],49:[2,60],54:[2,60]},{7:255,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,23],6:[2,23],25:[2,23],26:[2,23],49:[2,23],54:[2,23],57:[2,23],73:[2,23],78:[2,23],86:[2,23],91:[2,23],93:[2,23],98:[2,23],99:[2,23],102:[2,23],104:[2,23],105:[2,23],106:[2,23],110:[2,23],118:[2,23],121:[2,23],123:[2,23],126:[2,23],129:[2,23],130:[2,23],133:[2,23],134:[2,23],135:[2,23],136:[2,23],137:[2,23],138:[2,23],139:[2,23]},{6:[1,73],26:[1,256]},{1:[2,205],6:[2,205],25:[2,205],26:[2,205],49:[2,205],54:[2,205],57:[2,205],73:[2,205],78:[2,205],86:[2,205],91:[2,205],93:[2,205],102:[2,205],103:84,104:[2,205],105:[2,205],106:[2,205],109:85,110:[2,205],111:68,118:[2,205],126:[2,205],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{7:257,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:258,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,208],6:[2,208],25:[2,208],26:[2,208],49:[2,208],54:[2,208],57:[2,208],73:[2,208],78:[2,208],86:[2,208],91:[2,208],93:[2,208],102:[2,208],103:84,104:[2,208],105:[2,208],106:[2,208],109:85,110:[2,208],111:68,118:[2,208],126:[2,208],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,185],6:[2,185],25:[2,185],26:[2,185],49:[2,185],54:[2,185],57:[2,185],73:[2,185],78:[2,185],86:[2,185],91:[2,185],93:[2,185],102:[2,185],104:[2,185],105:[2,185],106:[2,185],110:[2,185],118:[2,185],126:[2,185],129:[2,185],130:[2,185],133:[2,185],134:[2,185],135:[2,185],136:[2,185],137:[2,185],138:[2,185],139:[2,185]},{7:259,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,135],6:[2,135],25:[2,135],26:[2,135],49:[2,135],54:[2,135],57:[2,135],73:[2,135],78:[2,135],86:[2,135],91:[2,135],93:[2,135],98:[1,260],102:[2,135],104:[2,135],105:[2,135],106:[2,135],110:[2,135],118:[2,135],126:[2,135],129:[2,135],130:[2,135],133:[2,135],134:[2,135],135:[2,135],136:[2,135],137:[2,135],138:[2,135],139:[2,135]},{24:261,25:[1,115]},{24:264,25:[1,115],27:262,28:[1,72],59:263,76:[1,69]},{120:265,122:222,123:[1,223]},{26:[1,266],121:[1,267],122:268,123:[1,223]},{26:[2,178],121:[2,178],123:[2,178]},{7:270,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],95:269,96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,98],6:[2,98],24:271,25:[1,115],26:[2,98],49:[2,98],54:[2,98],57:[2,98],73:[2,98],78:[2,98],86:[2,98],91:[2,98],93:[2,98],102:[2,98],103:84,104:[1,64],105:[2,98],106:[1,65],109:85,110:[1,67],111:68,118:[2,98],126:[2,98],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,101],6:[2,101],25:[2,101],26:[2,101],49:[2,101],54:[2,101],57:[2,101],73:[2,101],78:[2,101],86:[2,101],91:[2,101],93:[2,101],102:[2,101],104:[2,101],105:[2,101],106:[2,101],110:[2,101],118:[2,101],126:[2,101],129:[2,101],130:[2,101],133:[2,101],134:[2,101],135:[2,101],136:[2,101],137:[2,101],138:[2,101],139:[2,101]},{7:272,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,142],6:[2,142],25:[2,142],26:[2,142],49:[2,142],54:[2,142],57:[2,142],66:[2,142],67:[2,142],68:[2,142],69:[2,142],71:[2,142],73:[2,142],74:[2,142],78:[2,142],84:[2,142],85:[2,142],86:[2,142],91:[2,142],93:[2,142],102:[2,142],104:[2,142],105:[2,142],106:[2,142],110:[2,142],118:[2,142],126:[2,142],129:[2,142],130:[2,142],133:[2,142],134:[2,142],135:[2,142],136:[2,142],137:[2,142],138:[2,142],139:[2,142]},{6:[1,73],26:[1,273]},{7:274,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{6:[2,67],11:[2,118],25:[2,67],28:[2,118],30:[2,118],31:[2,118],33:[2,118],34:[2,118],35:[2,118],36:[2,118],37:[2,118],38:[2,118],45:[2,118],46:[2,118],47:[2,118],51:[2,118],52:[2,118],54:[2,67],76:[2,118],79:[2,118],83:[2,118],88:[2,118],89:[2,118],90:[2,118],91:[2,67],96:[2,118],100:[2,118],101:[2,118],104:[2,118],106:[2,118],108:[2,118],110:[2,118],119:[2,118],125:[2,118],127:[2,118],128:[2,118],129:[2,118],130:[2,118],131:[2,118],132:[2,118]},{6:[1,276],25:[1,277],91:[1,275]},{6:[2,53],7:203,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[2,53],26:[2,53],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],57:[1,149],58:46,59:47,60:148,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],86:[2,53],88:[1,57],89:[1,58],90:[1,56],91:[2,53],94:278,96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{6:[2,52],25:[2,52],26:[2,52],53:279,54:[1,232]},{1:[2,182],6:[2,182],25:[2,182],26:[2,182],49:[2,182],54:[2,182],57:[2,182],73:[2,182],78:[2,182],86:[2,182],91:[2,182],93:[2,182],102:[2,182],104:[2,182],105:[2,182],106:[2,182],110:[2,182],118:[2,182],121:[2,182],126:[2,182],129:[2,182],130:[2,182],133:[2,182],134:[2,182],135:[2,182],136:[2,182],137:[2,182],138:[2,182],139:[2,182]},{7:280,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:281,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{116:[2,160],117:[2,160]},{27:160,28:[1,72],44:161,58:162,59:163,76:[1,69],89:[1,112],90:[1,113],115:282},{1:[2,167],6:[2,167],25:[2,167],26:[2,167],49:[2,167],54:[2,167],57:[2,167],73:[2,167],78:[2,167],86:[2,167],91:[2,167],93:[2,167],102:[2,167],103:84,104:[2,167],105:[1,283],106:[2,167],109:85,110:[2,167],111:68,118:[1,284],126:[2,167],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,168],6:[2,168],25:[2,168],26:[2,168],49:[2,168],54:[2,168],57:[2,168],73:[2,168],78:[2,168],86:[2,168],91:[2,168],93:[2,168],102:[2,168],103:84,104:[2,168],105:[1,285],106:[2,168],109:85,110:[2,168],111:68,118:[2,168],126:[2,168],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{6:[1,287],25:[1,288],78:[1,286]},{6:[2,53],10:170,25:[2,53],26:[2,53],27:171,28:[1,72],29:172,30:[1,70],31:[1,71],41:289,42:169,44:173,46:[1,45],78:[2,53],89:[1,112]},{7:290,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,291],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,86],6:[2,86],25:[2,86],26:[2,86],40:[2,86],49:[2,86],54:[2,86],57:[2,86],66:[2,86],67:[2,86],68:[2,86],69:[2,86],71:[2,86],73:[2,86],74:[2,86],78:[2,86],80:[2,86],84:[2,86],85:[2,86],86:[2,86],91:[2,86],93:[2,86],102:[2,86],104:[2,86],105:[2,86],106:[2,86],110:[2,86],118:[2,86],126:[2,86],129:[2,86],130:[2,86],131:[2,86],132:[2,86],133:[2,86],134:[2,86],135:[2,86],136:[2,86],137:[2,86],138:[2,86],139:[2,86],140:[2,86]},{7:292,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,73:[2,121],76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{73:[2,122],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,36],6:[2,36],25:[2,36],26:[2,36],49:[2,36],54:[2,36],57:[2,36],73:[2,36],78:[2,36],86:[2,36],91:[2,36],93:[2,36],102:[2,36],103:84,104:[2,36],105:[2,36],106:[2,36],109:85,110:[2,36],111:68,118:[2,36],126:[2,36],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{26:[1,293],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{6:[1,276],25:[1,277],86:[1,294]},{6:[2,67],25:[2,67],26:[2,67],54:[2,67],86:[2,67],91:[2,67]},{24:295,25:[1,115]},{6:[2,56],25:[2,56],26:[2,56],49:[2,56],54:[2,56]},{27:108,28:[1,72],44:109,55:296,56:106,57:[1,107],58:110,59:111,76:[1,69],89:[1,112],90:[1,113]},{6:[2,54],25:[2,54],26:[2,54],27:108,28:[1,72],44:109,48:297,54:[2,54],55:105,56:106,57:[1,107],58:110,59:111,76:[1,69],89:[1,112],90:[1,113]},{6:[2,61],25:[2,61],26:[2,61],49:[2,61],54:[2,61],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,24],6:[2,24],25:[2,24],26:[2,24],49:[2,24],54:[2,24],57:[2,24],73:[2,24],78:[2,24],86:[2,24],91:[2,24],93:[2,24],98:[2,24],99:[2,24],102:[2,24],104:[2,24],105:[2,24],106:[2,24],110:[2,24],118:[2,24],121:[2,24],123:[2,24],126:[2,24],129:[2,24],130:[2,24],133:[2,24],134:[2,24],135:[2,24],136:[2,24],137:[2,24],138:[2,24],139:[2,24]},{26:[1,298],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,207],6:[2,207],25:[2,207],26:[2,207],49:[2,207],54:[2,207],57:[2,207],73:[2,207],78:[2,207],86:[2,207],91:[2,207],93:[2,207],102:[2,207],103:84,104:[2,207],105:[2,207],106:[2,207],109:85,110:[2,207],111:68,118:[2,207],126:[2,207],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{24:299,25:[1,115],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{24:300,25:[1,115]},{1:[2,136],6:[2,136],25:[2,136],26:[2,136],49:[2,136],54:[2,136],57:[2,136],73:[2,136],78:[2,136],86:[2,136],91:[2,136],93:[2,136],102:[2,136],104:[2,136],105:[2,136],106:[2,136],110:[2,136],118:[2,136],126:[2,136],129:[2,136],130:[2,136],133:[2,136],134:[2,136],135:[2,136],136:[2,136],137:[2,136],138:[2,136],139:[2,136]},{24:301,25:[1,115]},{24:302,25:[1,115]},{1:[2,140],6:[2,140],25:[2,140],26:[2,140],49:[2,140],54:[2,140],57:[2,140],73:[2,140],78:[2,140],86:[2,140],91:[2,140],93:[2,140],98:[2,140],102:[2,140],104:[2,140],105:[2,140],106:[2,140],110:[2,140],118:[2,140],126:[2,140],129:[2,140],130:[2,140],133:[2,140],134:[2,140],135:[2,140],136:[2,140],137:[2,140],138:[2,140],139:[2,140]},{26:[1,303],121:[1,304],122:268,123:[1,223]},{1:[2,176],6:[2,176],25:[2,176],26:[2,176],49:[2,176],54:[2,176],57:[2,176],73:[2,176],78:[2,176],86:[2,176],91:[2,176],93:[2,176],102:[2,176],104:[2,176],105:[2,176],106:[2,176],110:[2,176],118:[2,176],126:[2,176],129:[2,176],130:[2,176],133:[2,176],134:[2,176],135:[2,176],136:[2,176],137:[2,176],138:[2,176],139:[2,176]},{24:305,25:[1,115]},{26:[2,179],121:[2,179],123:[2,179]},{24:306,25:[1,115],54:[1,307]},{25:[2,132],54:[2,132],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,99],6:[2,99],25:[2,99],26:[2,99],49:[2,99],54:[2,99],57:[2,99],73:[2,99],78:[2,99],86:[2,99],91:[2,99],93:[2,99],102:[2,99],104:[2,99],105:[2,99],106:[2,99],110:[2,99],118:[2,99],126:[2,99],129:[2,99],130:[2,99],133:[2,99],134:[2,99],135:[2,99],136:[2,99],137:[2,99],138:[2,99],139:[2,99]},{1:[2,102],6:[2,102],24:308,25:[1,115],26:[2,102],49:[2,102],54:[2,102],57:[2,102],73:[2,102],78:[2,102],86:[2,102],91:[2,102],93:[2,102],102:[2,102],103:84,104:[1,64],105:[2,102],106:[1,65],109:85,110:[1,67],111:68,118:[2,102],126:[2,102],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{102:[1,309]},{91:[1,310],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,116],6:[2,116],25:[2,116],26:[2,116],40:[2,116],49:[2,116],54:[2,116],57:[2,116],66:[2,116],67:[2,116],68:[2,116],69:[2,116],71:[2,116],73:[2,116],74:[2,116],78:[2,116],84:[2,116],85:[2,116],86:[2,116],91:[2,116],93:[2,116],102:[2,116],104:[2,116],105:[2,116],106:[2,116],110:[2,116],116:[2,116],117:[2,116],118:[2,116],126:[2,116],129:[2,116],130:[2,116],133:[2,116],134:[2,116],135:[2,116],136:[2,116],137:[2,116],138:[2,116],139:[2,116]},{7:203,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],57:[1,149],58:46,59:47,60:148,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],94:311,96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:203,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,147],27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],57:[1,149],58:46,59:47,60:148,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],87:312,88:[1,57],89:[1,58],90:[1,56],94:146,96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{6:[2,125],25:[2,125],26:[2,125],54:[2,125],86:[2,125],91:[2,125]},{6:[1,276],25:[1,277],26:[1,313]},{1:[2,145],6:[2,145],25:[2,145],26:[2,145],49:[2,145],54:[2,145],57:[2,145],73:[2,145],78:[2,145],86:[2,145],91:[2,145],93:[2,145],102:[2,145],103:84,104:[1,64],105:[2,145],106:[1,65],109:85,110:[1,67],111:68,118:[2,145],126:[2,145],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,147],6:[2,147],25:[2,147],26:[2,147],49:[2,147],54:[2,147],57:[2,147],73:[2,147],78:[2,147],86:[2,147],91:[2,147],93:[2,147],102:[2,147],103:84,104:[1,64],105:[2,147],106:[1,65],109:85,110:[1,67],111:68,118:[2,147],126:[2,147],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{116:[2,166],117:[2,166]},{7:314,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:315,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:316,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,90],6:[2,90],25:[2,90],26:[2,90],40:[2,90],49:[2,90],54:[2,90],57:[2,90],66:[2,90],67:[2,90],68:[2,90],69:[2,90],71:[2,90],73:[2,90],74:[2,90],78:[2,90],84:[2,90],85:[2,90],86:[2,90],91:[2,90],93:[2,90],102:[2,90],104:[2,90],105:[2,90],106:[2,90],110:[2,90],116:[2,90],117:[2,90],118:[2,90],126:[2,90],129:[2,90],130:[2,90],133:[2,90],134:[2,90],135:[2,90],136:[2,90],137:[2,90],138:[2,90],139:[2,90]},{10:170,27:171,28:[1,72],29:172,30:[1,70],31:[1,71],41:317,42:169,44:173,46:[1,45],89:[1,112]},{6:[2,91],10:170,25:[2,91],26:[2,91],27:171,28:[1,72],29:172,30:[1,70],31:[1,71],41:168,42:169,44:173,46:[1,45],54:[2,91],77:318,89:[1,112]},{6:[2,93],25:[2,93],26:[2,93],54:[2,93],78:[2,93]},{6:[2,39],25:[2,39],26:[2,39],54:[2,39],78:[2,39],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{7:319,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{73:[2,120],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,37],6:[2,37],25:[2,37],26:[2,37],49:[2,37],54:[2,37],57:[2,37],73:[2,37],78:[2,37],86:[2,37],91:[2,37],93:[2,37],102:[2,37],104:[2,37],105:[2,37],106:[2,37],110:[2,37],118:[2,37],126:[2,37],129:[2,37],130:[2,37],133:[2,37],134:[2,37],135:[2,37],136:[2,37],137:[2,37],138:[2,37],139:[2,37]},{1:[2,111],6:[2,111],25:[2,111],26:[2,111],49:[2,111],54:[2,111],57:[2,111],66:[2,111],67:[2,111],68:[2,111],69:[2,111],71:[2,111],73:[2,111],74:[2,111],78:[2,111],84:[2,111],85:[2,111],86:[2,111],91:[2,111],93:[2,111],102:[2,111],104:[2,111],105:[2,111],106:[2,111],110:[2,111],118:[2,111],126:[2,111],129:[2,111],130:[2,111],133:[2,111],134:[2,111],135:[2,111],136:[2,111],137:[2,111],138:[2,111],139:[2,111]},{1:[2,48],6:[2,48],25:[2,48],26:[2,48],49:[2,48],54:[2,48],57:[2,48],73:[2,48],78:[2,48],86:[2,48],91:[2,48],93:[2,48],102:[2,48],104:[2,48],105:[2,48],106:[2,48],110:[2,48],118:[2,48],126:[2,48],129:[2,48],130:[2,48],133:[2,48],134:[2,48],135:[2,48],136:[2,48],137:[2,48],138:[2,48],139:[2,48]},{6:[2,57],25:[2,57],26:[2,57],49:[2,57],54:[2,57]},{6:[2,52],25:[2,52],26:[2,52],53:320,54:[1,205]},{1:[2,206],6:[2,206],25:[2,206],26:[2,206],49:[2,206],54:[2,206],57:[2,206],73:[2,206],78:[2,206],86:[2,206],91:[2,206],93:[2,206],102:[2,206],104:[2,206],105:[2,206],106:[2,206],110:[2,206],118:[2,206],126:[2,206],129:[2,206],130:[2,206],133:[2,206],134:[2,206],135:[2,206],136:[2,206],137:[2,206],138:[2,206],139:[2,206]},{1:[2,183],6:[2,183],25:[2,183],26:[2,183],49:[2,183],54:[2,183],57:[2,183],73:[2,183],78:[2,183],86:[2,183],91:[2,183],93:[2,183],102:[2,183],104:[2,183],105:[2,183],106:[2,183],110:[2,183],118:[2,183],121:[2,183],126:[2,183],129:[2,183],130:[2,183],133:[2,183],134:[2,183],135:[2,183],136:[2,183],137:[2,183],138:[2,183],139:[2,183]},{1:[2,137],6:[2,137],25:[2,137],26:[2,137],49:[2,137],54:[2,137],57:[2,137],73:[2,137],78:[2,137],86:[2,137],91:[2,137],93:[2,137],102:[2,137],104:[2,137],105:[2,137],106:[2,137],110:[2,137],118:[2,137],126:[2,137],129:[2,137],130:[2,137],133:[2,137],134:[2,137],135:[2,137],136:[2,137],137:[2,137],138:[2,137],139:[2,137]},{1:[2,138],6:[2,138],25:[2,138],26:[2,138],49:[2,138],54:[2,138],57:[2,138],73:[2,138],78:[2,138],86:[2,138],91:[2,138],93:[2,138],98:[2,138],102:[2,138],104:[2,138],105:[2,138],106:[2,138],110:[2,138],118:[2,138],126:[2,138],129:[2,138],130:[2,138],133:[2,138],134:[2,138],135:[2,138],136:[2,138],137:[2,138],138:[2,138],139:[2,138]},{1:[2,139],6:[2,139],25:[2,139],26:[2,139],49:[2,139],54:[2,139],57:[2,139],73:[2,139],78:[2,139],86:[2,139],91:[2,139],93:[2,139],98:[2,139],102:[2,139],104:[2,139],105:[2,139],106:[2,139],110:[2,139],118:[2,139],126:[2,139],129:[2,139],130:[2,139],133:[2,139],134:[2,139],135:[2,139],136:[2,139],137:[2,139],138:[2,139],139:[2,139]},{1:[2,174],6:[2,174],25:[2,174],26:[2,174],49:[2,174],54:[2,174],57:[2,174],73:[2,174],78:[2,174],86:[2,174],91:[2,174],93:[2,174],102:[2,174],104:[2,174],105:[2,174],106:[2,174],110:[2,174],118:[2,174],126:[2,174],129:[2,174],130:[2,174],133:[2,174],134:[2,174],135:[2,174],136:[2,174],137:[2,174],138:[2,174],139:[2,174]},{24:321,25:[1,115]},{26:[1,322]},{6:[1,323],26:[2,180],121:[2,180],123:[2,180]},{7:324,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{1:[2,103],6:[2,103],25:[2,103],26:[2,103],49:[2,103],54:[2,103],57:[2,103],73:[2,103],78:[2,103],86:[2,103],91:[2,103],93:[2,103],102:[2,103],104:[2,103],105:[2,103],106:[2,103],110:[2,103],118:[2,103],126:[2,103],129:[2,103],130:[2,103],133:[2,103],134:[2,103],135:[2,103],136:[2,103],137:[2,103],138:[2,103],139:[2,103]},{1:[2,143],6:[2,143],25:[2,143],26:[2,143],49:[2,143],54:[2,143],57:[2,143],66:[2,143],67:[2,143],68:[2,143],69:[2,143],71:[2,143],73:[2,143],74:[2,143],78:[2,143],84:[2,143],85:[2,143],86:[2,143],91:[2,143],93:[2,143],102:[2,143],104:[2,143],105:[2,143],106:[2,143],110:[2,143],118:[2,143],126:[2,143],129:[2,143],130:[2,143],133:[2,143],134:[2,143],135:[2,143],136:[2,143],137:[2,143],138:[2,143],139:[2,143]},{1:[2,119],6:[2,119],25:[2,119],26:[2,119],49:[2,119],54:[2,119],57:[2,119],66:[2,119],67:[2,119],68:[2,119],69:[2,119],71:[2,119],73:[2,119],74:[2,119],78:[2,119],84:[2,119],85:[2,119],86:[2,119],91:[2,119],93:[2,119],102:[2,119],104:[2,119],105:[2,119],106:[2,119],110:[2,119],118:[2,119],126:[2,119],129:[2,119],130:[2,119],133:[2,119],134:[2,119],135:[2,119],136:[2,119],137:[2,119],138:[2,119],139:[2,119]},{6:[2,126],25:[2,126],26:[2,126],54:[2,126],86:[2,126],91:[2,126]},{6:[2,52],25:[2,52],26:[2,52],53:325,54:[1,232]},{6:[2,127],25:[2,127],26:[2,127],54:[2,127],86:[2,127],91:[2,127]},{1:[2,169],6:[2,169],25:[2,169],26:[2,169],49:[2,169],54:[2,169],57:[2,169],73:[2,169],78:[2,169],86:[2,169],91:[2,169],93:[2,169],102:[2,169],103:84,104:[2,169],105:[2,169],106:[2,169],109:85,110:[2,169],111:68,118:[1,326],126:[2,169],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,171],6:[2,171],25:[2,171],26:[2,171],49:[2,171],54:[2,171],57:[2,171],73:[2,171],78:[2,171],86:[2,171],91:[2,171],93:[2,171],102:[2,171],103:84,104:[2,171],105:[1,327],106:[2,171],109:85,110:[2,171],111:68,118:[2,171],126:[2,171],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,170],6:[2,170],25:[2,170],26:[2,170],49:[2,170],54:[2,170],57:[2,170],73:[2,170],78:[2,170],86:[2,170],91:[2,170],93:[2,170],102:[2,170],103:84,104:[2,170],105:[2,170],106:[2,170],109:85,110:[2,170],111:68,118:[2,170],126:[2,170],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{6:[2,94],25:[2,94],26:[2,94],54:[2,94],78:[2,94]},{6:[2,52],25:[2,52],26:[2,52],53:328,54:[1,242]},{26:[1,329],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{6:[1,253],25:[1,254],26:[1,330]},{26:[1,331]},{1:[2,177],6:[2,177],25:[2,177],26:[2,177],49:[2,177],54:[2,177],57:[2,177],73:[2,177],78:[2,177],86:[2,177],91:[2,177],93:[2,177],102:[2,177],104:[2,177],105:[2,177],106:[2,177],110:[2,177],118:[2,177],126:[2,177],129:[2,177],130:[2,177],133:[2,177],134:[2,177],135:[2,177],136:[2,177],137:[2,177],138:[2,177],139:[2,177]},{26:[2,181],121:[2,181],123:[2,181]},{25:[2,133],54:[2,133],103:84,104:[1,64],106:[1,65],109:85,110:[1,67],111:68,126:[1,83],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{6:[1,276],25:[1,277],26:[1,332]},{7:333,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{7:334,8:117,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:61,28:[1,72],29:48,30:[1,70],31:[1,71],32:22,33:[1,49],34:[1,50],35:[1,51],36:[1,52],37:[1,53],38:[1,54],39:21,44:62,45:[1,44],46:[1,45],47:[1,27],50:28,51:[1,59],52:[1,60],58:46,59:47,61:35,63:23,64:24,65:25,76:[1,69],79:[1,42],83:[1,26],88:[1,57],89:[1,58],90:[1,56],96:[1,37],100:[1,43],101:[1,55],103:38,104:[1,64],106:[1,65],107:39,108:[1,66],109:40,110:[1,67],111:68,119:[1,41],124:36,125:[1,63],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33],132:[1,34]},{6:[1,287],25:[1,288],26:[1,335]},{6:[2,40],25:[2,40],26:[2,40],54:[2,40],78:[2,40]},{6:[2,58],25:[2,58],26:[2,58],49:[2,58],54:[2,58]},{1:[2,175],6:[2,175],25:[2,175],26:[2,175],49:[2,175],54:[2,175],57:[2,175],73:[2,175],78:[2,175],86:[2,175],91:[2,175],93:[2,175],102:[2,175],104:[2,175],105:[2,175],106:[2,175],110:[2,175],118:[2,175],126:[2,175],129:[2,175],130:[2,175],133:[2,175],134:[2,175],135:[2,175],136:[2,175],137:[2,175],138:[2,175],139:[2,175]},{6:[2,128],25:[2,128],26:[2,128],54:[2,128],86:[2,128],91:[2,128]},{1:[2,172],6:[2,172],25:[2,172],26:[2,172],49:[2,172],54:[2,172],57:[2,172],73:[2,172],78:[2,172],86:[2,172],91:[2,172],93:[2,172],102:[2,172],103:84,104:[2,172],105:[2,172],106:[2,172],109:85,110:[2,172],111:68,118:[2,172],126:[2,172],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{1:[2,173],6:[2,173],25:[2,173],26:[2,173],49:[2,173],54:[2,173],57:[2,173],73:[2,173],78:[2,173],86:[2,173],91:[2,173],93:[2,173],102:[2,173],103:84,104:[2,173],105:[2,173],106:[2,173],109:85,110:[2,173],111:68,118:[2,173],126:[2,173],129:[1,76],130:[1,75],133:[1,74],134:[1,77],135:[1,78],136:[1,79],137:[1,80],138:[1,81],139:[1,82]},{6:[2,95],25:[2,95],26:[2,95],54:[2,95],78:[2,95]}],
+defaultActions: {59:[2,50],60:[2,51],91:[2,109],192:[2,89]},
+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], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    this.lexer.setInput(input);
+    this.lexer.yy = this.yy;
+    this.yy.lexer = this.lexer;
+    this.yy.parser = this;
+    if (typeof this.lexer.yylloc == 'undefined') {
+        this.lexer.yylloc = {};
+    }
+    var yyloc = this.lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = this.lexer.options && this.lexer.options.ranges;
+    if (typeof this.yy.parseError === 'function') {
+        this.parseError = this.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;
+    }
+    function lex() {
+        var token;
+        token = self.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 (this.lexer.showPosition) {
+                    errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + this.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: this.lexer.match,
+                    token: this.terminals_[symbol] || symbol,
+                    line: this.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(this.lexer.yytext);
+            lstack.push(this.lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = this.lexer.yyleng;
+                yytext = this.lexer.yytext;
+                yylineno = this.lexer.yylineno;
+                yyloc = this.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,
+                this.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;
+}};
+
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, 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));
+}
+}
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/register.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/register.js
new file mode 100644 (file)
index 0000000..b1d75ca
--- /dev/null
@@ -0,0 +1,66 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var CoffeeScript, Module, binary, child_process, ext, findExtension, fork, helpers, loadFile, path, _i, _len, _ref;
+
+  CoffeeScript = require('./coffee-script');
+
+  child_process = require('child_process');
+
+  helpers = require('./helpers');
+
+  path = require('path');
+
+  loadFile = function(module, filename) {
+    var answer;
+    answer = CoffeeScript._compileFile(filename, false);
+    return module._compile(answer, filename);
+  };
+
+  if (require.extensions) {
+    _ref = CoffeeScript.FILE_EXTENSIONS;
+    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+      ext = _ref[_i];
+      require.extensions[ext] = loadFile;
+    }
+    Module = require('module');
+    findExtension = function(filename) {
+      var curExtension, extensions;
+      extensions = path.basename(filename).split('.');
+      if (extensions[0] === '') {
+        extensions.shift();
+      }
+      while (extensions.shift()) {
+        curExtension = '.' + extensions.join('.');
+        if (Module._extensions[curExtension]) {
+          return curExtension;
+        }
+      }
+      return '.js';
+    };
+    Module.prototype.load = function(filename) {
+      var extension;
+      this.filename = filename;
+      this.paths = Module._nodeModulePaths(path.dirname(filename));
+      extension = findExtension(filename);
+      Module._extensions[extension](this, filename);
+      return this.loaded = true;
+    };
+  }
+
+  if (child_process) {
+    fork = child_process.fork;
+    binary = require.resolve('../../bin/coffee');
+    child_process.fork = function(path, args, options) {
+      if (helpers.isCoffee(path)) {
+        if (!Array.isArray(args)) {
+          options = args || {};
+          args = [];
+        }
+        args = [path].concat(args);
+        path = binary;
+      }
+      return fork(path, args, options);
+    };
+  }
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/repl.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/repl.js
new file mode 100644 (file)
index 0000000..9f06977
--- /dev/null
@@ -0,0 +1,176 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var CoffeeScript, addHistory, addMultilineHandler, fs, getCommandId, merge, nodeREPL, path, replDefaults, updateSyntaxError, vm, _ref;
+
+  fs = require('fs');
+
+  path = require('path');
+
+  vm = require('vm');
+
+  nodeREPL = require('repl');
+
+  CoffeeScript = require('./coffee-script');
+
+  _ref = require('./helpers'), merge = _ref.merge, updateSyntaxError = _ref.updateSyntaxError;
+
+  replDefaults = {
+    prompt: 'coffee> ',
+    historyFile: process.env.HOME ? path.join(process.env.HOME, '.coffee_history') : void 0,
+    historyMaxInputSize: 10240,
+    "eval": function(input, context, filename, cb) {
+      var Assign, Block, Literal, Value, ast, err, js, result, _ref1;
+      input = input.replace(/\uFF00/g, '\n');
+      input = input.replace(/^\(([\s\S]*)\n\)$/m, '$1');
+      _ref1 = require('./nodes'), Block = _ref1.Block, Assign = _ref1.Assign, Value = _ref1.Value, Literal = _ref1.Literal;
+      try {
+        ast = CoffeeScript.nodes(input);
+        ast = new Block([new Assign(new Value(new Literal('_')), ast, '=')]);
+        js = ast.compile({
+          bare: true,
+          locals: Object.keys(context)
+        });
+        result = context === global ? vm.runInThisContext(js, filename) : vm.runInContext(js, context, filename);
+        return cb(null, result);
+      } catch (_error) {
+        err = _error;
+        updateSyntaxError(err, input);
+        return cb(err);
+      }
+    }
+  };
+
+  addMultilineHandler = function(repl) {
+    var inputStream, multiline, nodeLineListener, origPrompt, outputStream, rli, _ref1;
+    rli = repl.rli, inputStream = repl.inputStream, outputStream = repl.outputStream;
+    origPrompt = (_ref1 = repl._prompt) != null ? _ref1 : repl.prompt;
+    multiline = {
+      enabled: false,
+      initialPrompt: origPrompt.replace(/^[^> ]*/, function(x) {
+        return x.replace(/./g, '-');
+      }),
+      prompt: origPrompt.replace(/^[^> ]*>?/, function(x) {
+        return x.replace(/./g, '.');
+      }),
+      buffer: ''
+    };
+    nodeLineListener = rli.listeners('line')[0];
+    rli.removeListener('line', nodeLineListener);
+    rli.on('line', function(cmd) {
+      if (multiline.enabled) {
+        multiline.buffer += "" + cmd + "\n";
+        rli.setPrompt(multiline.prompt);
+        rli.prompt(true);
+      } else {
+        rli.setPrompt(origPrompt);
+        nodeLineListener(cmd);
+      }
+    });
+    return inputStream.on('keypress', function(char, key) {
+      if (!(key && key.ctrl && !key.meta && !key.shift && key.name === 'v')) {
+        return;
+      }
+      if (multiline.enabled) {
+        if (!multiline.buffer.match(/\n/)) {
+          multiline.enabled = !multiline.enabled;
+          rli.setPrompt(origPrompt);
+          rli.prompt(true);
+          return;
+        }
+        if ((rli.line != null) && !rli.line.match(/^\s*$/)) {
+          return;
+        }
+        multiline.enabled = !multiline.enabled;
+        rli.line = '';
+        rli.cursor = 0;
+        rli.output.cursorTo(0);
+        rli.output.clearLine(1);
+        multiline.buffer = multiline.buffer.replace(/\n/g, '\uFF00');
+        rli.emit('line', multiline.buffer);
+        multiline.buffer = '';
+      } else {
+        multiline.enabled = !multiline.enabled;
+        rli.setPrompt(multiline.initialPrompt);
+        rli.prompt(true);
+      }
+    });
+  };
+
+  addHistory = function(repl, filename, maxSize) {
+    var buffer, fd, lastLine, readFd, size, stat;
+    lastLine = null;
+    try {
+      stat = fs.statSync(filename);
+      size = Math.min(maxSize, stat.size);
+      readFd = fs.openSync(filename, 'r');
+      buffer = new Buffer(size);
+      fs.readSync(readFd, buffer, 0, size, stat.size - size);
+      repl.rli.history = buffer.toString().split('\n').reverse();
+      if (stat.size > maxSize) {
+        repl.rli.history.pop();
+      }
+      if (repl.rli.history[0] === '') {
+        repl.rli.history.shift();
+      }
+      repl.rli.historyIndex = -1;
+      lastLine = repl.rli.history[0];
+    } catch (_error) {}
+    fd = fs.openSync(filename, 'a');
+    repl.rli.addListener('line', function(code) {
+      if (code && code.length && code !== '.history' && lastLine !== code) {
+        fs.write(fd, "" + code + "\n");
+        return lastLine = code;
+      }
+    });
+    repl.rli.on('exit', function() {
+      return fs.close(fd);
+    });
+    return repl.commands[getCommandId(repl, 'history')] = {
+      help: 'Show command history',
+      action: function() {
+        repl.outputStream.write("" + (repl.rli.history.slice(0).reverse().join('\n')) + "\n");
+        return repl.displayPrompt();
+      }
+    };
+  };
+
+  getCommandId = function(repl, commandName) {
+    var commandsHaveLeadingDot;
+    commandsHaveLeadingDot = repl.commands['.help'] != null;
+    if (commandsHaveLeadingDot) {
+      return "." + commandName;
+    } else {
+      return commandName;
+    }
+  };
+
+  module.exports = {
+    start: function(opts) {
+      var build, major, minor, repl, _ref1;
+      if (opts == null) {
+        opts = {};
+      }
+      _ref1 = process.versions.node.split('.').map(function(n) {
+        return parseInt(n);
+      }), major = _ref1[0], minor = _ref1[1], build = _ref1[2];
+      if (major === 0 && minor < 8) {
+        console.warn("Node 0.8.0+ required for CoffeeScript REPL");
+        process.exit(1);
+      }
+      CoffeeScript.register();
+      process.argv = ['coffee'].concat(process.argv.slice(2));
+      opts = merge(replDefaults, opts);
+      repl = nodeREPL.start(opts);
+      repl.on('exit', function() {
+        return repl.outputStream.write('\n');
+      });
+      addMultilineHandler(repl);
+      if (opts.historyFile) {
+        addHistory(repl, opts.historyFile, opts.historyMaxInputSize);
+      }
+      repl.commands[getCommandId(repl, 'load')].help = 'Load code from a file into this REPL session';
+      return repl;
+    }
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/rewriter.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/rewriter.js
new file mode 100644 (file)
index 0000000..c5f228a
--- /dev/null
@@ -0,0 +1,475 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var BALANCED_PAIRS, CALL_CLOSERS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, generate, left, rite, _i, _len, _ref,
+    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
+    __slice = [].slice;
+
+  generate = function(tag, value, origin) {
+    var tok;
+    tok = [tag, value];
+    tok.generated = true;
+    if (origin) {
+      tok.origin = origin;
+    }
+    return tok;
+  };
+
+  exports.Rewriter = (function() {
+    function Rewriter() {}
+
+    Rewriter.prototype.rewrite = function(tokens) {
+      this.tokens = tokens;
+      this.removeLeadingNewlines();
+      this.closeOpenCalls();
+      this.closeOpenIndexes();
+      this.normalizeLines();
+      this.tagPostfixConditionals();
+      this.addImplicitBracesAndParens();
+      this.addLocationDataToGeneratedTokens();
+      return this.tokens;
+    };
+
+    Rewriter.prototype.scanTokens = function(block) {
+      var i, token, tokens;
+      tokens = this.tokens;
+      i = 0;
+      while (token = tokens[i]) {
+        i += block.call(this, token, i, tokens);
+      }
+      return true;
+    };
+
+    Rewriter.prototype.detectEnd = function(i, condition, action) {
+      var levels, token, tokens, _ref, _ref1;
+      tokens = this.tokens;
+      levels = 0;
+      while (token = tokens[i]) {
+        if (levels === 0 && condition.call(this, token, i)) {
+          return action.call(this, token, i);
+        }
+        if (!token || levels < 0) {
+          return action.call(this, token, i - 1);
+        }
+        if (_ref = token[0], __indexOf.call(EXPRESSION_START, _ref) >= 0) {
+          levels += 1;
+        } else if (_ref1 = token[0], __indexOf.call(EXPRESSION_END, _ref1) >= 0) {
+          levels -= 1;
+        }
+        i += 1;
+      }
+      return i - 1;
+    };
+
+    Rewriter.prototype.removeLeadingNewlines = function() {
+      var i, tag, _i, _len, _ref;
+      _ref = this.tokens;
+      for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
+        tag = _ref[i][0];
+        if (tag !== 'TERMINATOR') {
+          break;
+        }
+      }
+      if (i) {
+        return this.tokens.splice(0, i);
+      }
+    };
+
+    Rewriter.prototype.closeOpenCalls = function() {
+      var action, condition;
+      condition = function(token, i) {
+        var _ref;
+        return ((_ref = token[0]) === ')' || _ref === 'CALL_END') || token[0] === 'OUTDENT' && this.tag(i - 1) === ')';
+      };
+      action = function(token, i) {
+        return this.tokens[token[0] === 'OUTDENT' ? i - 1 : i][0] = 'CALL_END';
+      };
+      return this.scanTokens(function(token, i) {
+        if (token[0] === 'CALL_START') {
+          this.detectEnd(i + 1, condition, action);
+        }
+        return 1;
+      });
+    };
+
+    Rewriter.prototype.closeOpenIndexes = function() {
+      var action, condition;
+      condition = function(token, i) {
+        var _ref;
+        return (_ref = token[0]) === ']' || _ref === 'INDEX_END';
+      };
+      action = function(token, i) {
+        return token[0] = 'INDEX_END';
+      };
+      return this.scanTokens(function(token, i) {
+        if (token[0] === 'INDEX_START') {
+          this.detectEnd(i + 1, condition, action);
+        }
+        return 1;
+      });
+    };
+
+    Rewriter.prototype.matchTags = function() {
+      var fuzz, i, j, pattern, _i, _ref, _ref1;
+      i = arguments[0], pattern = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      fuzz = 0;
+      for (j = _i = 0, _ref = pattern.length; 0 <= _ref ? _i < _ref : _i > _ref; j = 0 <= _ref ? ++_i : --_i) {
+        while (this.tag(i + j + fuzz) === 'HERECOMMENT') {
+          fuzz += 2;
+        }
+        if (pattern[j] == null) {
+          continue;
+        }
+        if (typeof pattern[j] === 'string') {
+          pattern[j] = [pattern[j]];
+        }
+        if (_ref1 = this.tag(i + j + fuzz), __indexOf.call(pattern[j], _ref1) < 0) {
+          return false;
+        }
+      }
+      return true;
+    };
+
+    Rewriter.prototype.looksObjectish = function(j) {
+      return this.matchTags(j, '@', null, ':') || this.matchTags(j, null, ':');
+    };
+
+    Rewriter.prototype.findTagsBackwards = function(i, tags) {
+      var backStack, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;
+      backStack = [];
+      while (i >= 0 && (backStack.length || (_ref2 = this.tag(i), __indexOf.call(tags, _ref2) < 0) && ((_ref3 = this.tag(i), __indexOf.call(EXPRESSION_START, _ref3) < 0) || this.tokens[i].generated) && (_ref4 = this.tag(i), __indexOf.call(LINEBREAKS, _ref4) < 0))) {
+        if (_ref = this.tag(i), __indexOf.call(EXPRESSION_END, _ref) >= 0) {
+          backStack.push(this.tag(i));
+        }
+        if ((_ref1 = this.tag(i), __indexOf.call(EXPRESSION_START, _ref1) >= 0) && backStack.length) {
+          backStack.pop();
+        }
+        i -= 1;
+      }
+      return _ref5 = this.tag(i), __indexOf.call(tags, _ref5) >= 0;
+    };
+
+    Rewriter.prototype.addImplicitBracesAndParens = function() {
+      var stack;
+      stack = [];
+      return this.scanTokens(function(token, i, tokens) {
+        var endImplicitCall, endImplicitObject, forward, inImplicit, inImplicitCall, inImplicitControl, inImplicitObject, newLine, nextTag, offset, prevTag, prevToken, s, sameLine, stackIdx, stackTag, stackTop, startIdx, startImplicitCall, startImplicitObject, startsLine, tag, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;
+        tag = token[0];
+        prevTag = (prevToken = i > 0 ? tokens[i - 1] : [])[0];
+        nextTag = (i < tokens.length - 1 ? tokens[i + 1] : [])[0];
+        stackTop = function() {
+          return stack[stack.length - 1];
+        };
+        startIdx = i;
+        forward = function(n) {
+          return i - startIdx + n;
+        };
+        inImplicit = function() {
+          var _ref, _ref1;
+          return (_ref = stackTop()) != null ? (_ref1 = _ref[2]) != null ? _ref1.ours : void 0 : void 0;
+        };
+        inImplicitCall = function() {
+          var _ref;
+          return inImplicit() && ((_ref = stackTop()) != null ? _ref[0] : void 0) === '(';
+        };
+        inImplicitObject = function() {
+          var _ref;
+          return inImplicit() && ((_ref = stackTop()) != null ? _ref[0] : void 0) === '{';
+        };
+        inImplicitControl = function() {
+          var _ref;
+          return inImplicit && ((_ref = stackTop()) != null ? _ref[0] : void 0) === 'CONTROL';
+        };
+        startImplicitCall = function(j) {
+          var idx;
+          idx = j != null ? j : i;
+          stack.push([
+            '(', idx, {
+              ours: true
+            }
+          ]);
+          tokens.splice(idx, 0, generate('CALL_START', '('));
+          if (j == null) {
+            return i += 1;
+          }
+        };
+        endImplicitCall = function() {
+          stack.pop();
+          tokens.splice(i, 0, generate('CALL_END', ')'));
+          return i += 1;
+        };
+        startImplicitObject = function(j, startsLine) {
+          var idx;
+          if (startsLine == null) {
+            startsLine = true;
+          }
+          idx = j != null ? j : i;
+          stack.push([
+            '{', idx, {
+              sameLine: true,
+              startsLine: startsLine,
+              ours: true
+            }
+          ]);
+          tokens.splice(idx, 0, generate('{', generate(new String('{')), token));
+          if (j == null) {
+            return i += 1;
+          }
+        };
+        endImplicitObject = function(j) {
+          j = j != null ? j : i;
+          stack.pop();
+          tokens.splice(j, 0, generate('}', '}', token));
+          return i += 1;
+        };
+        if (inImplicitCall() && (tag === 'IF' || tag === 'TRY' || tag === 'FINALLY' || tag === 'CATCH' || tag === 'CLASS' || tag === 'SWITCH')) {
+          stack.push([
+            'CONTROL', i, {
+              ours: true
+            }
+          ]);
+          return forward(1);
+        }
+        if (tag === 'INDENT' && inImplicit()) {
+          if (prevTag !== '=>' && prevTag !== '->' && prevTag !== '[' && prevTag !== '(' && prevTag !== ',' && prevTag !== '{' && prevTag !== 'TRY' && prevTag !== 'ELSE' && prevTag !== '=') {
+            while (inImplicitCall()) {
+              endImplicitCall();
+            }
+          }
+          if (inImplicitControl()) {
+            stack.pop();
+          }
+          stack.push([tag, i]);
+          return forward(1);
+        }
+        if (__indexOf.call(EXPRESSION_START, tag) >= 0) {
+          stack.push([tag, i]);
+          return forward(1);
+        }
+        if (__indexOf.call(EXPRESSION_END, tag) >= 0) {
+          while (inImplicit()) {
+            if (inImplicitCall()) {
+              endImplicitCall();
+            } else if (inImplicitObject()) {
+              endImplicitObject();
+            } else {
+              stack.pop();
+            }
+          }
+          stack.pop();
+        }
+        if ((__indexOf.call(IMPLICIT_FUNC, tag) >= 0 && token.spaced && !token.stringEnd || tag === '?' && i > 0 && !tokens[i - 1].spaced) && (__indexOf.call(IMPLICIT_CALL, nextTag) >= 0 || __indexOf.call(IMPLICIT_UNSPACED_CALL, nextTag) >= 0 && !((_ref = tokens[i + 1]) != null ? _ref.spaced : void 0) && !((_ref1 = tokens[i + 1]) != null ? _ref1.newLine : void 0))) {
+          if (tag === '?') {
+            tag = token[0] = 'FUNC_EXIST';
+          }
+          startImplicitCall(i + 1);
+          return forward(2);
+        }
+        if (__indexOf.call(IMPLICIT_FUNC, tag) >= 0 && this.matchTags(i + 1, 'INDENT', null, ':') && !this.findTagsBackwards(i, ['CLASS', 'EXTENDS', 'IF', 'CATCH', 'SWITCH', 'LEADING_WHEN', 'FOR', 'WHILE', 'UNTIL'])) {
+          startImplicitCall(i + 1);
+          stack.push(['INDENT', i + 2]);
+          return forward(3);
+        }
+        if (tag === ':') {
+          if (this.tag(i - 2) === '@') {
+            s = i - 2;
+          } else {
+            s = i - 1;
+          }
+          while (this.tag(s - 2) === 'HERECOMMENT') {
+            s -= 2;
+          }
+          this.insideForDeclaration = nextTag === 'FOR';
+          startsLine = s === 0 || (_ref2 = this.tag(s - 1), __indexOf.call(LINEBREAKS, _ref2) >= 0) || tokens[s - 1].newLine;
+          if (stackTop()) {
+            _ref3 = stackTop(), stackTag = _ref3[0], stackIdx = _ref3[1];
+            if ((stackTag === '{' || stackTag === 'INDENT' && this.tag(stackIdx - 1) === '{') && (startsLine || this.tag(s - 1) === ',' || this.tag(s - 1) === '{')) {
+              return forward(1);
+            }
+          }
+          startImplicitObject(s, !!startsLine);
+          return forward(2);
+        }
+        if (inImplicitObject() && __indexOf.call(LINEBREAKS, tag) >= 0) {
+          stackTop()[2].sameLine = false;
+        }
+        newLine = prevTag === 'OUTDENT' || prevToken.newLine;
+        if (__indexOf.call(IMPLICIT_END, tag) >= 0 || __indexOf.call(CALL_CLOSERS, tag) >= 0 && newLine) {
+          while (inImplicit()) {
+            _ref4 = stackTop(), stackTag = _ref4[0], stackIdx = _ref4[1], (_ref5 = _ref4[2], sameLine = _ref5.sameLine, startsLine = _ref5.startsLine);
+            if (inImplicitCall() && prevTag !== ',') {
+              endImplicitCall();
+            } else if (inImplicitObject() && !this.insideForDeclaration && sameLine && tag !== 'TERMINATOR' && prevTag !== ':' && endImplicitObject()) {
+
+            } else if (inImplicitObject() && tag === 'TERMINATOR' && prevTag !== ',' && !(startsLine && this.looksObjectish(i + 1))) {
+              endImplicitObject();
+            } else {
+              break;
+            }
+          }
+        }
+        if (tag === ',' && !this.looksObjectish(i + 1) && inImplicitObject() && !this.insideForDeclaration && (nextTag !== 'TERMINATOR' || !this.looksObjectish(i + 2))) {
+          offset = nextTag === 'OUTDENT' ? 1 : 0;
+          while (inImplicitObject()) {
+            endImplicitObject(i + offset);
+          }
+        }
+        return forward(1);
+      });
+    };
+
+    Rewriter.prototype.addLocationDataToGeneratedTokens = function() {
+      return this.scanTokens(function(token, i, tokens) {
+        var column, line, nextLocation, prevLocation, _ref, _ref1;
+        if (token[2]) {
+          return 1;
+        }
+        if (!(token.generated || token.explicit)) {
+          return 1;
+        }
+        if (token[0] === '{' && (nextLocation = (_ref = tokens[i + 1]) != null ? _ref[2] : void 0)) {
+          line = nextLocation.first_line, column = nextLocation.first_column;
+        } else if (prevLocation = (_ref1 = tokens[i - 1]) != null ? _ref1[2] : void 0) {
+          line = prevLocation.last_line, column = prevLocation.last_column;
+        } else {
+          line = column = 0;
+        }
+        token[2] = {
+          first_line: line,
+          first_column: column,
+          last_line: line,
+          last_column: column
+        };
+        return 1;
+      });
+    };
+
+    Rewriter.prototype.normalizeLines = function() {
+      var action, condition, indent, outdent, starter;
+      starter = indent = outdent = null;
+      condition = function(token, i) {
+        var _ref, _ref1, _ref2, _ref3;
+        return token[1] !== ';' && (_ref = token[0], __indexOf.call(SINGLE_CLOSERS, _ref) >= 0) && !(token[0] === 'TERMINATOR' && (_ref1 = this.tag(i + 1), __indexOf.call(EXPRESSION_CLOSE, _ref1) >= 0)) && !(token[0] === 'ELSE' && starter !== 'THEN') && !(((_ref2 = token[0]) === 'CATCH' || _ref2 === 'FINALLY') && (starter === '->' || starter === '=>')) || (_ref3 = token[0], __indexOf.call(CALL_CLOSERS, _ref3) >= 0) && this.tokens[i - 1].newLine;
+      };
+      action = function(token, i) {
+        return this.tokens.splice((this.tag(i - 1) === ',' ? i - 1 : i), 0, outdent);
+      };
+      return this.scanTokens(function(token, i, tokens) {
+        var j, tag, _i, _ref, _ref1, _ref2;
+        tag = token[0];
+        if (tag === 'TERMINATOR') {
+          if (this.tag(i + 1) === 'ELSE' && this.tag(i - 1) !== 'OUTDENT') {
+            tokens.splice.apply(tokens, [i, 1].concat(__slice.call(this.indentation())));
+            return 1;
+          }
+          if (_ref = this.tag(i + 1), __indexOf.call(EXPRESSION_CLOSE, _ref) >= 0) {
+            tokens.splice(i, 1);
+            return 0;
+          }
+        }
+        if (tag === 'CATCH') {
+          for (j = _i = 1; _i <= 2; j = ++_i) {
+            if (!((_ref1 = this.tag(i + j)) === 'OUTDENT' || _ref1 === 'TERMINATOR' || _ref1 === 'FINALLY')) {
+              continue;
+            }
+            tokens.splice.apply(tokens, [i + j, 0].concat(__slice.call(this.indentation())));
+            return 2 + j;
+          }
+        }
+        if (__indexOf.call(SINGLE_LINERS, tag) >= 0 && this.tag(i + 1) !== 'INDENT' && !(tag === 'ELSE' && this.tag(i + 1) === 'IF')) {
+          starter = tag;
+          _ref2 = this.indentation(tokens[i]), indent = _ref2[0], outdent = _ref2[1];
+          if (starter === 'THEN') {
+            indent.fromThen = true;
+          }
+          tokens.splice(i + 1, 0, indent);
+          this.detectEnd(i + 2, condition, action);
+          if (tag === 'THEN') {
+            tokens.splice(i, 1);
+          }
+          return 1;
+        }
+        return 1;
+      });
+    };
+
+    Rewriter.prototype.tagPostfixConditionals = function() {
+      var action, condition, original;
+      original = null;
+      condition = function(token, i) {
+        var prevTag, tag;
+        tag = token[0];
+        prevTag = this.tokens[i - 1][0];
+        return tag === 'TERMINATOR' || (tag === 'INDENT' && __indexOf.call(SINGLE_LINERS, prevTag) < 0);
+      };
+      action = function(token, i) {
+        if (token[0] !== 'INDENT' || (token.generated && !token.fromThen)) {
+          return original[0] = 'POST_' + original[0];
+        }
+      };
+      return this.scanTokens(function(token, i) {
+        if (token[0] !== 'IF') {
+          return 1;
+        }
+        original = token;
+        this.detectEnd(i + 1, condition, action);
+        return 1;
+      });
+    };
+
+    Rewriter.prototype.indentation = function(origin) {
+      var indent, outdent;
+      indent = ['INDENT', 2];
+      outdent = ['OUTDENT', 2];
+      if (origin) {
+        indent.generated = outdent.generated = true;
+        indent.origin = outdent.origin = origin;
+      } else {
+        indent.explicit = outdent.explicit = true;
+      }
+      return [indent, outdent];
+    };
+
+    Rewriter.prototype.generate = generate;
+
+    Rewriter.prototype.tag = function(i) {
+      var _ref;
+      return (_ref = this.tokens[i]) != null ? _ref[0] : void 0;
+    };
+
+    return Rewriter;
+
+  })();
+
+  BALANCED_PAIRS = [['(', ')'], ['[', ']'], ['{', '}'], ['INDENT', 'OUTDENT'], ['CALL_START', 'CALL_END'], ['PARAM_START', 'PARAM_END'], ['INDEX_START', 'INDEX_END']];
+
+  exports.INVERSES = INVERSES = {};
+
+  EXPRESSION_START = [];
+
+  EXPRESSION_END = [];
+
+  for (_i = 0, _len = BALANCED_PAIRS.length; _i < _len; _i++) {
+    _ref = BALANCED_PAIRS[_i], left = _ref[0], rite = _ref[1];
+    EXPRESSION_START.push(INVERSES[rite] = left);
+    EXPRESSION_END.push(INVERSES[left] = rite);
+  }
+
+  EXPRESSION_CLOSE = ['CATCH', 'THEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END);
+
+  IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS'];
+
+  IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'NULL', 'UNDEFINED', 'UNARY', 'UNARY_MATH', 'SUPER', 'THROW', '@', '->', '=>', '[', '(', '{', '--', '++'];
+
+  IMPLICIT_UNSPACED_CALL = ['+', '-'];
+
+  IMPLICIT_END = ['POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY', 'LOOP', 'TERMINATOR'];
+
+  SINGLE_LINERS = ['ELSE', '->', '=>', 'TRY', 'FINALLY', 'THEN'];
+
+  SINGLE_CLOSERS = ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN'];
+
+  LINEBREAKS = ['TERMINATOR', 'INDENT', 'OUTDENT'];
+
+  CALL_CLOSERS = ['.', '?.', '::', '?::'];
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/scope.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/scope.js
new file mode 100644 (file)
index 0000000..cb43b02
--- /dev/null
@@ -0,0 +1,146 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var Scope, extend, last, _ref;
+
+  _ref = require('./helpers'), extend = _ref.extend, last = _ref.last;
+
+  exports.Scope = Scope = (function() {
+    Scope.root = null;
+
+    function Scope(parent, expressions, method) {
+      this.parent = parent;
+      this.expressions = expressions;
+      this.method = method;
+      this.variables = [
+        {
+          name: 'arguments',
+          type: 'arguments'
+        }
+      ];
+      this.positions = {};
+      if (!this.parent) {
+        Scope.root = this;
+      }
+    }
+
+    Scope.prototype.add = function(name, type, immediate) {
+      if (this.shared && !immediate) {
+        return this.parent.add(name, type, immediate);
+      }
+      if (Object.prototype.hasOwnProperty.call(this.positions, name)) {
+        return this.variables[this.positions[name]].type = type;
+      } else {
+        return this.positions[name] = this.variables.push({
+          name: name,
+          type: type
+        }) - 1;
+      }
+    };
+
+    Scope.prototype.namedMethod = function() {
+      var _ref1;
+      if (((_ref1 = this.method) != null ? _ref1.name : void 0) || !this.parent) {
+        return this.method;
+      }
+      return this.parent.namedMethod();
+    };
+
+    Scope.prototype.find = function(name) {
+      if (this.check(name)) {
+        return true;
+      }
+      this.add(name, 'var');
+      return false;
+    };
+
+    Scope.prototype.parameter = function(name) {
+      if (this.shared && this.parent.check(name, true)) {
+        return;
+      }
+      return this.add(name, 'param');
+    };
+
+    Scope.prototype.check = function(name) {
+      var _ref1;
+      return !!(this.type(name) || ((_ref1 = this.parent) != null ? _ref1.check(name) : void 0));
+    };
+
+    Scope.prototype.temporary = function(name, index) {
+      if (name.length > 1) {
+        return '_' + name + (index > 1 ? index - 1 : '');
+      } else {
+        return '_' + (index + parseInt(name, 36)).toString(36).replace(/\d/g, 'a');
+      }
+    };
+
+    Scope.prototype.type = function(name) {
+      var v, _i, _len, _ref1;
+      _ref1 = this.variables;
+      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+        v = _ref1[_i];
+        if (v.name === name) {
+          return v.type;
+        }
+      }
+      return null;
+    };
+
+    Scope.prototype.freeVariable = function(name, reserve) {
+      var index, temp;
+      if (reserve == null) {
+        reserve = true;
+      }
+      index = 0;
+      while (this.check((temp = this.temporary(name, index)))) {
+        index++;
+      }
+      if (reserve) {
+        this.add(temp, 'var', true);
+      }
+      return temp;
+    };
+
+    Scope.prototype.assign = function(name, value) {
+      this.add(name, {
+        value: value,
+        assigned: true
+      }, true);
+      return this.hasAssignments = true;
+    };
+
+    Scope.prototype.hasDeclarations = function() {
+      return !!this.declaredVariables().length;
+    };
+
+    Scope.prototype.declaredVariables = function() {
+      var realVars, tempVars, v, _i, _len, _ref1;
+      realVars = [];
+      tempVars = [];
+      _ref1 = this.variables;
+      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+        v = _ref1[_i];
+        if (v.type === 'var') {
+          (v.name.charAt(0) === '_' ? tempVars : realVars).push(v.name);
+        }
+      }
+      return realVars.sort().concat(tempVars.sort());
+    };
+
+    Scope.prototype.assignedVariables = function() {
+      var v, _i, _len, _ref1, _results;
+      _ref1 = this.variables;
+      _results = [];
+      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+        v = _ref1[_i];
+        if (v.type.assigned) {
+          _results.push("" + v.name + " = " + v.type.value);
+        }
+      }
+      return _results;
+    };
+
+    return Scope;
+
+  })();
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/sourcemap.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/sourcemap.js
new file mode 100644 (file)
index 0000000..c94ebd1
--- /dev/null
@@ -0,0 +1,161 @@
+// Generated by CoffeeScript 1.8.0
+(function() {
+  var LineMap, SourceMap;
+
+  LineMap = (function() {
+    function LineMap(line) {
+      this.line = line;
+      this.columns = [];
+    }
+
+    LineMap.prototype.add = function(column, _arg, options) {
+      var sourceColumn, sourceLine;
+      sourceLine = _arg[0], sourceColumn = _arg[1];
+      if (options == null) {
+        options = {};
+      }
+      if (this.columns[column] && options.noReplace) {
+        return;
+      }
+      return this.columns[column] = {
+        line: this.line,
+        column: column,
+        sourceLine: sourceLine,
+        sourceColumn: sourceColumn
+      };
+    };
+
+    LineMap.prototype.sourceLocation = function(column) {
+      var mapping;
+      while (!((mapping = this.columns[column]) || (column <= 0))) {
+        column--;
+      }
+      return mapping && [mapping.sourceLine, mapping.sourceColumn];
+    };
+
+    return LineMap;
+
+  })();
+
+  SourceMap = (function() {
+    var BASE64_CHARS, VLQ_CONTINUATION_BIT, VLQ_SHIFT, VLQ_VALUE_MASK;
+
+    function SourceMap() {
+      this.lines = [];
+    }
+
+    SourceMap.prototype.add = function(sourceLocation, generatedLocation, options) {
+      var column, line, lineMap, _base;
+      if (options == null) {
+        options = {};
+      }
+      line = generatedLocation[0], column = generatedLocation[1];
+      lineMap = ((_base = this.lines)[line] || (_base[line] = new LineMap(line)));
+      return lineMap.add(column, sourceLocation, options);
+    };
+
+    SourceMap.prototype.sourceLocation = function(_arg) {
+      var column, line, lineMap;
+      line = _arg[0], column = _arg[1];
+      while (!((lineMap = this.lines[line]) || (line <= 0))) {
+        line--;
+      }
+      return lineMap && lineMap.sourceLocation(column);
+    };
+
+    SourceMap.prototype.generate = function(options, code) {
+      var buffer, lastColumn, lastSourceColumn, lastSourceLine, lineMap, lineNumber, mapping, needComma, v3, writingline, _i, _j, _len, _len1, _ref, _ref1;
+      if (options == null) {
+        options = {};
+      }
+      if (code == null) {
+        code = null;
+      }
+      writingline = 0;
+      lastColumn = 0;
+      lastSourceLine = 0;
+      lastSourceColumn = 0;
+      needComma = false;
+      buffer = "";
+      _ref = this.lines;
+      for (lineNumber = _i = 0, _len = _ref.length; _i < _len; lineNumber = ++_i) {
+        lineMap = _ref[lineNumber];
+        if (lineMap) {
+          _ref1 = lineMap.columns;
+          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
+            mapping = _ref1[_j];
+            if (!(mapping)) {
+              continue;
+            }
+            while (writingline < mapping.line) {
+              lastColumn = 0;
+              needComma = false;
+              buffer += ";";
+              writingline++;
+            }
+            if (needComma) {
+              buffer += ",";
+              needComma = false;
+            }
+            buffer += this.encodeVlq(mapping.column - lastColumn);
+            lastColumn = mapping.column;
+            buffer += this.encodeVlq(0);
+            buffer += this.encodeVlq(mapping.sourceLine - lastSourceLine);
+            lastSourceLine = mapping.sourceLine;
+            buffer += this.encodeVlq(mapping.sourceColumn - lastSourceColumn);
+            lastSourceColumn = mapping.sourceColumn;
+            needComma = true;
+          }
+        }
+      }
+      v3 = {
+        version: 3,
+        file: options.generatedFile || '',
+        sourceRoot: options.sourceRoot || '',
+        sources: options.sourceFiles || [''],
+        names: [],
+        mappings: buffer
+      };
+      if (options.inline) {
+        v3.sourcesContent = [code];
+      }
+      return JSON.stringify(v3, null, 2);
+    };
+
+    VLQ_SHIFT = 5;
+
+    VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT;
+
+    VLQ_VALUE_MASK = VLQ_CONTINUATION_BIT - 1;
+
+    SourceMap.prototype.encodeVlq = function(value) {
+      var answer, nextChunk, signBit, valueToEncode;
+      answer = '';
+      signBit = value < 0 ? 1 : 0;
+      valueToEncode = (Math.abs(value) << 1) + signBit;
+      while (valueToEncode || !answer) {
+        nextChunk = valueToEncode & VLQ_VALUE_MASK;
+        valueToEncode = valueToEncode >> VLQ_SHIFT;
+        if (valueToEncode) {
+          nextChunk |= VLQ_CONTINUATION_BIT;
+        }
+        answer += this.encodeBase64(nextChunk);
+      }
+      return answer;
+    };
+
+    BASE64_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+
+    SourceMap.prototype.encodeBase64 = function(value) {
+      return BASE64_CHARS[value] || (function() {
+        throw new Error("Cannot Base64 encode value: " + value);
+      })();
+    };
+
+    return SourceMap;
+
+  })();
+
+  module.exports = SourceMap;
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/.npmignore b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/.npmignore
new file mode 100644 (file)
index 0000000..9303c34
--- /dev/null
@@ -0,0 +1,2 @@
+node_modules/
+npm-debug.log
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/.travis.yml b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/.travis.yml
new file mode 100644 (file)
index 0000000..84fd7ca
--- /dev/null
@@ -0,0 +1,5 @@
+language: node_js
+node_js:
+  - 0.6
+  - 0.8
+  - 0.9
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/LICENSE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/LICENSE
new file mode 100644 (file)
index 0000000..432d1ae
--- /dev/null
@@ -0,0 +1,21 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/examples/pow.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/examples/pow.js
new file mode 100644 (file)
index 0000000..e692421
--- /dev/null
@@ -0,0 +1,6 @@
+var mkdirp = require('mkdirp');
+
+mkdirp('/tmp/foo/bar/baz', function (err) {
+    if (err) console.error(err)
+    else console.log('pow!')
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/index.js
new file mode 100644 (file)
index 0000000..fda6de8
--- /dev/null
@@ -0,0 +1,82 @@
+var path = require('path');
+var fs = require('fs');
+
+module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
+
+function mkdirP (p, mode, f, made) {
+    if (typeof mode === 'function' || mode === undefined) {
+        f = mode;
+        mode = 0777 & (~process.umask());
+    }
+    if (!made) made = null;
+
+    var cb = f || function () {};
+    if (typeof mode === 'string') mode = parseInt(mode, 8);
+    p = path.resolve(p);
+
+    fs.mkdir(p, mode, function (er) {
+        if (!er) {
+            made = made || p;
+            return cb(null, made);
+        }
+        switch (er.code) {
+            case 'ENOENT':
+                mkdirP(path.dirname(p), mode, function (er, made) {
+                    if (er) cb(er, made);
+                    else mkdirP(p, mode, 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:
+                fs.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, mode, made) {
+    if (mode === undefined) {
+        mode = 0777 & (~process.umask());
+    }
+    if (!made) made = null;
+
+    if (typeof mode === 'string') mode = parseInt(mode, 8);
+    p = path.resolve(p);
+
+    try {
+        fs.mkdirSync(p, mode);
+        made = made || p;
+    }
+    catch (err0) {
+        switch (err0.code) {
+            case 'ENOENT' :
+                made = sync(path.dirname(p), mode, made);
+                sync(p, mode, 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 = fs.statSync(p);
+                }
+                catch (err1) {
+                    throw err0;
+                }
+                if (!stat.isDirectory()) throw err0;
+                break;
+        }
+    }
+
+    return made;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/package.json
new file mode 100644 (file)
index 0000000..cc7b329
--- /dev/null
@@ -0,0 +1,46 @@
+{
+  "name": "mkdirp",
+  "description": "Recursively mkdir, like `mkdir -p`",
+  "version": "0.3.5",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "main": "./index",
+  "keywords": [
+    "mkdir",
+    "directory"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "http://github.com/substack/node-mkdirp.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "devDependencies": {
+    "tap": "~0.4.0"
+  },
+  "license": "MIT",
+  "_id": "mkdirp@0.3.5",
+  "dist": {
+    "shasum": "de3e5f8961c88c787ee1368df849ac4413eca8d7",
+    "tarball": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"
+  },
+  "_from": "mkdirp@>=0.3.5 <0.4.0",
+  "_npmVersion": "1.2.2",
+  "_npmUser": {
+    "name": "substack",
+    "email": "mail@substack.net"
+  },
+  "maintainers": [
+    {
+      "name": "substack",
+      "email": "mail@substack.net"
+    }
+  ],
+  "directories": {},
+  "_shasum": "de3e5f8961c88c787ee1368df849ac4413eca8d7",
+  "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/readme.markdown b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/readme.markdown
new file mode 100644 (file)
index 0000000..83b0216
--- /dev/null
@@ -0,0 +1,63 @@
+# mkdirp
+
+Like `mkdir -p`, but in node.js!
+
+[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)
+
+# example
+
+## pow.js
+
+```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
+
+```js
+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())`.
+
+`cb(err, made)` fires with the error or the first directory `made`
+that had to be created, if any.
+
+## 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())`.
+
+Returns the first directory that had to be created, if any.
+
+# install
+
+With [npm](http://npmjs.org) do:
+
+```
+npm install mkdirp
+```
+
+# license
+
+MIT
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/chmod.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/chmod.js
new file mode 100644 (file)
index 0000000..520dcb8
--- /dev/null
@@ -0,0 +1,38 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/clobber.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/clobber.js
new file mode 100644 (file)
index 0000000..0eb7099
--- /dev/null
@@ -0,0 +1,37 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/mkdirp.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/mkdirp.js
new file mode 100644 (file)
index 0000000..b07cd70
--- /dev/null
@@ -0,0 +1,28 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/perm.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/perm.js
new file mode 100644 (file)
index 0000000..23a7abb
--- /dev/null
@@ -0,0 +1,32 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/perm_sync.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/perm_sync.js
new file mode 100644 (file)
index 0000000..f685f60
--- /dev/null
@@ -0,0 +1,39 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/race.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/race.js
new file mode 100644 (file)
index 0000000..96a0447
--- /dev/null
@@ -0,0 +1,41 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/rel.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/rel.js
new file mode 100644 (file)
index 0000000..7985824
--- /dev/null
@@ -0,0 +1,32 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/return.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/return.js
new file mode 100644 (file)
index 0000000..bce68e5
--- /dev/null
@@ -0,0 +1,25 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('return value', function (t) {
+    t.plan(4);
+    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('/');
+
+    // should return the first dir created.
+    // By this point, it would be profoundly surprising if /tmp didn't
+    // already exist, since every other test makes things in there.
+    mkdirp(file, function (err, made) {
+        t.ifError(err);
+        t.equal(made, '/tmp/' + x);
+        mkdirp(file, function (err, made) {
+          t.ifError(err);
+          t.equal(made, null);
+        });
+    });
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/return_sync.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/return_sync.js
new file mode 100644 (file)
index 0000000..7c222d3
--- /dev/null
@@ -0,0 +1,24 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('return value', 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('/');
+
+    // should return the first dir created.
+    // By this point, it would be profoundly surprising if /tmp didn't
+    // already exist, since every other test makes things in there.
+    // Note that this will throw on failure, which will fail the test.
+    var made = mkdirp.sync(file);
+    t.equal(made, '/tmp/' + x);
+
+    // making the same file again should have no effect.
+    made = mkdirp.sync(file);
+    t.equal(made, null);
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/root.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/root.js
new file mode 100644 (file)
index 0000000..97ad7a2
--- /dev/null
@@ -0,0 +1,18 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('root', function (t) {
+    // '/' on unix, 'c:/' on windows.
+    var file = path.resolve('/');
+
+    mkdirp(file, 0755, function (err) {
+        if (err) throw err
+        fs.stat(file, function (er, stat) {
+            if (er) throw er
+            t.ok(stat.isDirectory(), 'target is a directory');
+            t.end();
+        })
+    });
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/sync.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/sync.js
new file mode 100644 (file)
index 0000000..7530cad
--- /dev/null
@@ -0,0 +1,32 @@
+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('/');
+
+    try {
+        mkdirp.sync(file, 0755);
+    } catch (err) {
+        t.fail(err);
+        return t.end();
+    }
+
+    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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/umask.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/umask.js
new file mode 100644 (file)
index 0000000..64ccafe
--- /dev/null
@@ -0,0 +1,28 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/umask_sync.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/test/umask_sync.js
new file mode 100644 (file)
index 0000000..35bd5cb
--- /dev/null
@@ -0,0 +1,32 @@
+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('/');
+
+    try {
+        mkdirp.sync(file);
+    } catch (err) {
+        t.fail(err);
+        return t.end();
+    }
+
+    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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/package.json
new file mode 100644 (file)
index 0000000..9c43a2c
--- /dev/null
@@ -0,0 +1,71 @@
+{
+  "name": "coffee-script",
+  "description": "Unfancy JavaScript",
+  "keywords": [
+    "javascript",
+    "language",
+    "coffeescript",
+    "compiler"
+  ],
+  "author": {
+    "name": "Jeremy Ashkenas"
+  },
+  "version": "1.8.0",
+  "license": "MIT",
+  "engines": {
+    "node": ">=0.8.0"
+  },
+  "directories": {
+    "lib": "./lib/coffee-script"
+  },
+  "main": "./lib/coffee-script/coffee-script",
+  "bin": {
+    "coffee": "./bin/coffee",
+    "cake": "./bin/cake"
+  },
+  "preferGlobal": true,
+  "scripts": {
+    "test": "node ./bin/cake test"
+  },
+  "homepage": "http://coffeescript.org",
+  "bugs": {
+    "url": "https://github.com/jashkenas/coffeescript/issues"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/jashkenas/coffeescript.git"
+  },
+  "devDependencies": {
+    "uglify-js": "~2.2",
+    "jison": ">=0.2.0",
+    "highlight.js": "~8.0.0",
+    "underscore": "~1.5.2",
+    "docco": "~0.6.2"
+  },
+  "dependencies": {
+    "mkdirp": "~0.3.5"
+  },
+  "_id": "coffee-script@1.8.0",
+  "dist": {
+    "shasum": "9c9f1d2b4a52a000ded15b659791703648263c1d",
+    "tarball": "http://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz"
+  },
+  "_from": "coffee-script@>=1.8.0 <1.9.0",
+  "_npmVersion": "1.3.21",
+  "_npmUser": {
+    "name": "jashkenas",
+    "email": "jashkenas@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "jashkenas",
+      "email": "jashkenas@gmail.com"
+    },
+    {
+      "name": "michaelficarra",
+      "email": "npm@michael.ficarra.me"
+    }
+  ],
+  "_shasum": "9c9f1d2b4a52a000ded15b659791703648263c1d",
+  "_resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/register.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/register.js
new file mode 100644 (file)
index 0000000..97b33d7
--- /dev/null
@@ -0,0 +1 @@
+require('./lib/coffee-script/register');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/repl.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/repl.js
new file mode 100644 (file)
index 0000000..d2706a7
--- /dev/null
@@ -0,0 +1 @@
+module.exports = require('./lib/coffee-script/repl');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/LICENSE.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/README.md
new file mode 100644 (file)
index 0000000..ea02e6f
--- /dev/null
@@ -0,0 +1,221 @@
+# fs plus [![Build Status](https://travis-ci.org/atom/fs-plus.svg?branch=master)](https://travis-ci.org/atom/fs-plus)
+
+Yet another filesystem helper based on node's [fs](http://nodejs.org/api/fs.html)
+module.  This library exports everything from node's fs module but with some
+extra helpers.
+
+## Using
+
+```sh
+npm install fs-plus
+```
+
+```coffee
+fs = require 'fs-plus'
+```
+
+## Documentation
+
+### `getHomeDirectory()`
+Returns the absolute path to the home directory.
+
+### `absolute(relativePath)`
+Make the given path absolute by resolving it against the current
+working directory.
+
+### Params
+
+ - **String** `relativePath`: The string representing the relative path. If the
+   path is prefixed with '~', it will be expanded to the current user's home
+   directory.
+
+### Return
+
+ - **String**: The absolute path or the relative path if it's unable to
+   determine its real path.
+
+### `normalize(pathToNormalize)`
+Normalize the given path treating a leading `~` segment as referring to the
+home directory. This method does not query the filesystem.
+
+#### Params
+
+ - **String** `pathToNormalize`: The string containing the abnormal path. If the
+   path is prefixed with '~', it will be expanded to the current user's home
+   directory.
+
+#### Return
+ - **String** Returns a normalized path.
+
+### `getAppDataDirectory()`
+Get path to store application specific data.
+
+#### Return
+ - **String** Returns the absolute path or null if platform isn't supported
+
+    - Mac: `~/Library/Application Support/`
+    - Win: `%AppData%`
+    - Linux: `/var/lib`
+
+### `isAbsolute(pathToCheck)`
+Is the given path absolute?
+
+#### Params
+ - **String** `pathToCheck`: The relative or absolute path to check.
+
+#### Return
+ - **Bolean** Returns `true` if the path is absolute, `false` otherwise.
+
+### `existsSync(pathToCheck)`
+Returns `true` if a file or folder at the specified path exists.
+
+### `isDirectorySync(directoryPath)`
+Returns `true` if the given path exists and is a directory.
+
+### `isDirectory(directoryPath)`
+Asynchronously checks that the given path exists and is a directory.
+
+### `isFileSync(filePath)`
+Returns true if the specified path exists and is a file.
+
+### `isSymbolicLinkSync(symlinkPath)`
+Returns `true` if the specified path is a symbolic link.
+
+### `isSymbolicLink(symlinkPath, callback)`
+Calls back with `true` if the specified path is a symbolic link.
+
+### `isExecutableSync(pathToCheck)`
+Returns `true` if the specified path is executable.
+
+### `getSizeSync(pathToCheck)`
+Returns the size of the specified path.
+
+### `listSync(rootPath, extensions)`
+Returns an Array with the paths of the files and directories
+contained within the directory path. It is not recursive.
+
+## Params
+ - **String** `rootPath`: The absolute path to the directory to list.
+ - **Array** `extensions`: An array of extensions to filter the results by. If none are
+   given, none are filtered (optional).
+
+### `list(rootPath, extensions)`
+Asynchronously lists the files and directories in the given path. The listing is not recursive.
+
+### `listTreeSync(rootPath)`
+Get all paths under the given path.
+
+#### Params
+ - **String** `rootPath` The {String} path to start at.
+
+#### Return
+ - **Array** Returns an array of strings under the given path.
+
+### `moveSync(source, target)`
+Moves the file or directory to the target synchronously.
+
+### `removeSync(pathToRemove)`
+Removes the file or directory at the given path synchronously.
+
+### `writeFileSync(filePath, content, options)`
+Open, write, flush, and close a file, writing the given content synchronously.
+It also creates the necessary parent directories.
+
+### `writeFile(filePath, content, options, callback)`
+Open, write, flush, and close a file, writing the given content
+asynchronously.
+It also creates the necessary parent directories.
+
+### `copySync(sourcePath, destinationPath)`
+Copies the given path recursively and synchronously.
+
+### `makeTreeSync(directoryPath)`
+Create a directory at the specified path including any missing
+parent directories synchronously.
+
+### `makeTree(directoryPath, callback)`
+Create a directory at the specified path including any missing
+parent directories asynchronously.
+
+### `traverseTreeSync(rootPath, onFile, onDirectory)`
+Recursively walk the given path and execute the given functions
+synchronously.
+
+#### Params
+ - **String** `rootPath`: The string containing the directory to recurse into.
+ - **Function** `onFile`: The function to execute on each file, receives a single argument
+   the absolute path.
+ - **Function** `onDirectory`: The function to execute on each directory, receives a single
+   argument the absolute path (defaults to onFile). If this
+   function returns a falsy value then the directory is not
+   entered.
+
+### `traverseTree(rootPath, onFile, onDirectory, onDone)`
+Public: Recursively walk the given path and execute the given functions
+asynchronously.
+
+### `md5ForPath(pathToDigest)`
+Hashes the contents of the given file.
+
+#### Params
+ - **String** `pathToDigest`: The string containing the absolute path.
+
+#### Return
+ - **String** Returns a string containing the MD5 hexadecimal hash.
+
+### `resolve(loadPaths, pathToResolve, extensions)`
+Finds a relative path among the given array of paths.
+
+#### Params
+ - **Array** `loadPaths`: An array of absolute and relative paths to search.
+ - **String** `pathToResolve` The string containing the path to resolve.
+ - **Array** `extensions` An array of extensions to pass to {resolveExtensions} in
+   which case pathToResolve should not contain an extension
+   (optional).
+
+#### Return
+Returns the absolute path of the file to be resolved if it's found and
+undefined otherwise.
+
+### `resolveOnLoadPath()`
+Like `.resolve` but uses node's modules paths as the load paths to
+search.
+
+### `resolveExtension(pathToResolve, extensions)`
+Finds the first file in the given path which matches the extension
+in the order given.
+
+#### Params
+ - **String** `pathToResolve`: the string containing relative or absolute path of the
+   file in question without the extension or '.'.
+ - **Array** `extensions`: the ordered array of extensions to try.
+
+#### Return
+Returns the absolute path of the file if it exists with any of the given
+extensions, otherwise it's undefined.
+
+### `isCompressedExtension(ext)`
+Returns true for extensions associated with compressed files.
+
+### `isImageExtension(ext)`
+Returns true for extensions associated with image files.
+
+### `isPdfExtension(ext)`
+Returns true for extensions associated with pdf files.
+
+### `isBinaryExtension(ext)`
+Returns true for extensions associated with binary files.
+
+### `isReadmePath(readmePath)`
+Returns true for files named similarily to 'README'
+
+### `isMarkdownExtension(ext)`
+Returns true for extensions associated with Markdown files.
+
+### `isCaseInsensitive()`
+Is the filesystem case insensitive?
+Returns `true` if case insensitive, `false` otherwise.
+
+### `isCaseSensitive()`
+Is the filesystem case sensitive?
+Returns `true` if case sensitive, `false` otherwise.
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/lib/fs-plus.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/lib/fs-plus.js
new file mode 100644 (file)
index 0000000..499cd64
--- /dev/null
@@ -0,0 +1,646 @@
+(function() {
+  var BINARY_EXTENSIONS, COMPRESSED_EXTENSIONS, IMAGE_EXTENSIONS, MARKDOWN_EXTENSIONS, Module, async, fs, fsPlus, isMoveTargetValid, isMoveTargetValidSync, isPathValid, lstatSyncNoException, mkdirp, path, rimraf, statSyncNoException, _,
+    __slice = [].slice;
+
+  fs = require('fs');
+
+  Module = require('module');
+
+  path = require('path');
+
+  _ = require('underscore-plus');
+
+  async = require('async');
+
+  mkdirp = require('mkdirp');
+
+  rimraf = require('rimraf');
+
+  fsPlus = {
+    getHomeDirectory: function() {
+      if (process.platform === 'win32') {
+        return process.env.USERPROFILE;
+      } else {
+        return process.env.HOME;
+      }
+    },
+    absolute: function(relativePath) {
+      var e, homeDir;
+      if (relativePath == null) {
+        return null;
+      }
+      homeDir = fsPlus.getHomeDirectory();
+      if (relativePath === '~') {
+        relativePath = homeDir;
+      } else if (relativePath.indexOf('~/') === 0) {
+        relativePath = "" + homeDir + (relativePath.substring(1));
+      }
+      try {
+        return fs.realpathSync(relativePath);
+      } catch (_error) {
+        e = _error;
+        return relativePath;
+      }
+    },
+    normalize: function(pathToNormalize) {
+      var home, normalizedPath;
+      if (pathToNormalize == null) {
+        return null;
+      }
+      normalizedPath = path.normalize(pathToNormalize.toString());
+      if (home = fsPlus.getHomeDirectory()) {
+        if (normalizedPath === '~') {
+          normalizedPath = home;
+        } else if (normalizedPath.indexOf("~" + path.sep) === 0) {
+          normalizedPath = "" + home + (normalizedPath.substring(1));
+        }
+      }
+      return normalizedPath;
+    },
+    getAppDataDirectory: function() {
+      switch (process.platform) {
+        case 'darwin':
+          return fsPlus.absolute('~/Library/Application Support');
+        case 'linux':
+          return '/var/lib';
+        case 'win32':
+          return process.env.APPDATA;
+        default:
+          return null;
+      }
+    },
+    isAbsolute: function(pathToCheck) {
+      if (pathToCheck == null) {
+        pathToCheck = '';
+      }
+      if (process.platform === 'win32') {
+        if (pathToCheck[1] === ':') {
+          return true;
+        }
+        if (pathToCheck[0] === '\\' && pathToCheck[1] === '\\') {
+          return true;
+        }
+      } else {
+        return pathToCheck[0] === '/';
+      }
+      return false;
+    },
+    existsSync: function(pathToCheck) {
+      return isPathValid(pathToCheck) && (statSyncNoException(pathToCheck) !== false);
+    },
+    isDirectorySync: function(directoryPath) {
+      var stat;
+      if (!isPathValid(directoryPath)) {
+        return false;
+      }
+      if (stat = statSyncNoException(directoryPath)) {
+        return stat.isDirectory();
+      } else {
+        return false;
+      }
+    },
+    isDirectory: function(directoryPath, done) {
+      if (!isPathValid(directoryPath)) {
+        return done(false);
+      }
+      return fs.stat(directoryPath, function(error, stat) {
+        if (error != null) {
+          return done(false);
+        } else {
+          return done(stat.isDirectory());
+        }
+      });
+    },
+    isFileSync: function(filePath) {
+      var stat;
+      if (!isPathValid(filePath)) {
+        return false;
+      }
+      if (stat = statSyncNoException(filePath)) {
+        return stat.isFile();
+      } else {
+        return false;
+      }
+    },
+    isSymbolicLinkSync: function(symlinkPath) {
+      var stat;
+      if (!isPathValid(symlinkPath)) {
+        return false;
+      }
+      if (stat = lstatSyncNoException(symlinkPath)) {
+        return stat.isSymbolicLink();
+      } else {
+        return false;
+      }
+    },
+    isSymbolicLink: function(symlinkPath, callback) {
+      if (isPathValid(symlinkPath)) {
+        return fs.lstat(symlinkPath, function(error, stat) {
+          return typeof callback === "function" ? callback((stat != null) && stat.isSymbolicLink()) : void 0;
+        });
+      } else {
+        return process.nextTick(function() {
+          return typeof callback === "function" ? callback(false) : void 0;
+        });
+      }
+    },
+    isExecutableSync: function(pathToCheck) {
+      var stat;
+      if (!isPathValid(pathToCheck)) {
+        return false;
+      }
+      if (stat = statSyncNoException(pathToCheck)) {
+        return (stat.mode & 0x1ff & 1) !== 0;
+      } else {
+        return false;
+      }
+    },
+    getSizeSync: function(pathToCheck) {
+      var _ref;
+      if (isPathValid(pathToCheck)) {
+        return (_ref = statSyncNoException(pathToCheck).size) != null ? _ref : -1;
+      } else {
+        return -1;
+      }
+    },
+    listSync: function(rootPath, extensions) {
+      var paths;
+      if (!fsPlus.isDirectorySync(rootPath)) {
+        return [];
+      }
+      paths = fs.readdirSync(rootPath);
+      if (extensions) {
+        paths = fsPlus.filterExtensions(paths, extensions);
+      }
+      paths = paths.sort(function(a, b) {
+        return a.toLowerCase().localeCompare(b.toLowerCase());
+      });
+      paths = paths.map(function(childPath) {
+        return path.join(rootPath, childPath);
+      });
+      return paths;
+    },
+    list: function() {
+      var done, extensions, rest, rootPath;
+      rootPath = arguments[0], rest = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      if (rest.length > 1) {
+        extensions = rest.shift();
+      }
+      done = rest.shift();
+      return fs.readdir(rootPath, function(error, paths) {
+        if (error != null) {
+          return done(error);
+        } else {
+          if (extensions) {
+            paths = fsPlus.filterExtensions(paths, extensions);
+          }
+          paths = paths.sort(function(a, b) {
+            return a.toLowerCase().localeCompare(b.toLowerCase());
+          });
+          paths = paths.map(function(childPath) {
+            return path.join(rootPath, childPath);
+          });
+          return done(null, paths);
+        }
+      });
+    },
+    filterExtensions: function(paths, extensions) {
+      extensions = extensions.map(function(ext) {
+        if (ext === '') {
+          return ext;
+        } else {
+          return '.' + ext.replace(/^\./, '');
+        }
+      });
+      return paths.filter(function(pathToCheck) {
+        return _.include(extensions, path.extname(pathToCheck));
+      });
+    },
+    listTreeSync: function(rootPath) {
+      var onPath, paths;
+      paths = [];
+      onPath = function(childPath) {
+        paths.push(childPath);
+        return true;
+      };
+      fsPlus.traverseTreeSync(rootPath, onPath, onPath);
+      return paths;
+    },
+    move: function(source, target, callback) {
+      return isMoveTargetValid(source, target, function(isMoveTargetValidErr, isTargetValid) {
+        var error, targetParentPath;
+        if (isMoveTargetValidErr) {
+          callback(isMoveTargetValidErr);
+          return;
+        }
+        if (!isTargetValid) {
+          error = new Error("'" + target + "' already exists.");
+          error.code = 'EEXIST';
+          callback(error);
+          return;
+        }
+        targetParentPath = path.dirname(target);
+        return fs.exists(targetParentPath, function(targetParentExists) {
+          if (targetParentExists) {
+            fs.rename(source, target, callback);
+            return;
+          }
+          return fsPlus.makeTree(targetParentPath, function(makeTreeErr) {
+            if (makeTreeErr) {
+              callback(makeTreeErr);
+              return;
+            }
+            return fs.rename(source, target, callback);
+          });
+        });
+      });
+    },
+    moveSync: function(source, target) {
+      var error, targetParentPath;
+      if (!isMoveTargetValidSync(source, target)) {
+        error = new Error("'" + target + "' already exists.");
+        error.code = 'EEXIST';
+        throw error;
+      }
+      targetParentPath = path.dirname(target);
+      if (!fs.existsSync(targetParentPath)) {
+        fsPlus.makeTreeSync(targetParentPath);
+      }
+      return fs.renameSync(source, target);
+    },
+    removeSync: function(pathToRemove) {
+      return rimraf.sync(pathToRemove);
+    },
+    remove: function(pathToRemove, callback) {
+      return rimraf(pathToRemove, callback);
+    },
+    writeFileSync: function(filePath, content, options) {
+      mkdirp.sync(path.dirname(filePath));
+      return fs.writeFileSync(filePath, content, options);
+    },
+    writeFile: function(filePath, content, options, callback) {
+      callback = _.last(arguments);
+      return mkdirp(path.dirname(filePath), function(error) {
+        if (error != null) {
+          return typeof callback === "function" ? callback(error) : void 0;
+        } else {
+          return fs.writeFile(filePath, content, options, callback);
+        }
+      });
+    },
+    copy: function(sourcePath, destinationPath, done) {
+      return mkdirp(path.dirname(destinationPath), function(error) {
+        var destinationStream, sourceStream;
+        if (error != null) {
+          if (typeof done === "function") {
+            done(error);
+          }
+          return;
+        }
+        sourceStream = fs.createReadStream(sourcePath);
+        sourceStream.on('error', function(error) {
+          if (typeof done === "function") {
+            done(error);
+          }
+          return done = null;
+        });
+        destinationStream = fs.createWriteStream(destinationPath);
+        destinationStream.on('error', function(error) {
+          if (typeof done === "function") {
+            done(error);
+          }
+          return done = null;
+        });
+        destinationStream.on('close', function() {
+          if (typeof done === "function") {
+            done();
+          }
+          return done = null;
+        });
+        return sourceStream.pipe(destinationStream);
+      });
+    },
+    copySync: function(sourcePath, destinationPath) {
+      var content, destinationFilePath, source, sourceFilePath, sources, _i, _len, _results;
+      sources = fs.readdirSync(sourcePath);
+      mkdirp.sync(destinationPath);
+      _results = [];
+      for (_i = 0, _len = sources.length; _i < _len; _i++) {
+        source = sources[_i];
+        sourceFilePath = path.join(sourcePath, source);
+        destinationFilePath = path.join(destinationPath, source);
+        if (fsPlus.isDirectorySync(sourceFilePath)) {
+          _results.push(fsPlus.copySync(sourceFilePath, destinationFilePath));
+        } else {
+          content = fs.readFileSync(sourceFilePath);
+          _results.push(fs.writeFileSync(destinationFilePath, content));
+        }
+      }
+      return _results;
+    },
+    makeTreeSync: function(directoryPath) {
+      if (!fsPlus.isDirectorySync(directoryPath)) {
+        return mkdirp.sync(directoryPath);
+      }
+    },
+    makeTree: function(directoryPath, callback) {
+      return fsPlus.isDirectory(directoryPath, function(exists) {
+        if (exists) {
+          return typeof callback === "function" ? callback() : void 0;
+        }
+        return mkdirp(directoryPath, function(error) {
+          return typeof callback === "function" ? callback(error) : void 0;
+        });
+      });
+    },
+    traverseTreeSync: function(rootPath, onFile, onDirectory) {
+      var traverse;
+      if (onDirectory == null) {
+        onDirectory = onFile;
+      }
+      if (!fsPlus.isDirectorySync(rootPath)) {
+        return;
+      }
+      traverse = function(directoryPath, onFile, onDirectory) {
+        var childPath, file, linkStats, stats, _i, _len, _ref;
+        _ref = fs.readdirSync(directoryPath);
+        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+          file = _ref[_i];
+          childPath = path.join(directoryPath, file);
+          stats = fs.lstatSync(childPath);
+          if (stats.isSymbolicLink()) {
+            if (linkStats = statSyncNoException(childPath)) {
+              stats = linkStats;
+            }
+          }
+          if (stats.isDirectory()) {
+            if (onDirectory(childPath)) {
+              traverse(childPath, onFile, onDirectory);
+            }
+          } else if (stats.isFile()) {
+            onFile(childPath);
+          }
+        }
+        return void 0;
+      };
+      return traverse(rootPath, onFile, onDirectory);
+    },
+    traverseTree: function(rootPath, onFile, onDirectory, onDone) {
+      return fs.readdir(rootPath, function(error, files) {
+        var file, queue, _i, _len, _results;
+        if (error) {
+          return typeof onDone === "function" ? onDone() : void 0;
+        } else {
+          queue = async.queue(function(childPath, callback) {
+            return fs.stat(childPath, function(error, stats) {
+              if (error) {
+                return callback(error);
+              } else if (stats.isFile()) {
+                onFile(childPath);
+                return callback();
+              } else if (stats.isDirectory()) {
+                if (onDirectory(childPath)) {
+                  return fs.readdir(childPath, function(error, files) {
+                    var file, _i, _len;
+                    if (error) {
+                      return callback(error);
+                    } else {
+                      for (_i = 0, _len = files.length; _i < _len; _i++) {
+                        file = files[_i];
+                        queue.unshift(path.join(childPath, file));
+                      }
+                      return callback();
+                    }
+                  });
+                } else {
+                  return callback();
+                }
+              } else {
+                return callback();
+              }
+            });
+          });
+          queue.concurrency = 1;
+          queue.drain = onDone;
+          _results = [];
+          for (_i = 0, _len = files.length; _i < _len; _i++) {
+            file = files[_i];
+            _results.push(queue.push(path.join(rootPath, file)));
+          }
+          return _results;
+        }
+      });
+    },
+    md5ForPath: function(pathToDigest) {
+      var contents;
+      contents = fs.readFileSync(pathToDigest);
+      return require('crypto').createHash('md5').update(contents).digest('hex');
+    },
+    resolve: function() {
+      var args, candidatePath, extensions, loadPath, loadPaths, pathToResolve, resolvedPath, _i, _len, _ref;
+      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+      if (_.isArray(_.last(args))) {
+        extensions = args.pop();
+      }
+      pathToResolve = (_ref = args.pop()) != null ? _ref.toString() : void 0;
+      loadPaths = args;
+      if (!pathToResolve) {
+        return void 0;
+      }
+      if (fsPlus.isAbsolute(pathToResolve)) {
+        if (extensions && (resolvedPath = fsPlus.resolveExtension(pathToResolve, extensions))) {
+          return resolvedPath;
+        } else {
+          if (fsPlus.existsSync(pathToResolve)) {
+            return pathToResolve;
+          }
+        }
+      }
+      for (_i = 0, _len = loadPaths.length; _i < _len; _i++) {
+        loadPath = loadPaths[_i];
+        candidatePath = path.join(loadPath, pathToResolve);
+        if (extensions) {
+          if (resolvedPath = fsPlus.resolveExtension(candidatePath, extensions)) {
+            return resolvedPath;
+          }
+        } else {
+          if (fsPlus.existsSync(candidatePath)) {
+            return fsPlus.absolute(candidatePath);
+          }
+        }
+      }
+      return void 0;
+    },
+    resolveOnLoadPath: function() {
+      var args, loadPaths;
+      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+      loadPaths = Module.globalPaths.concat(module.paths);
+      return fsPlus.resolve.apply(fsPlus, __slice.call(loadPaths).concat(__slice.call(args)));
+    },
+    resolveExtension: function(pathToResolve, extensions) {
+      var extension, pathWithExtension, _i, _len;
+      for (_i = 0, _len = extensions.length; _i < _len; _i++) {
+        extension = extensions[_i];
+        if (extension === "") {
+          if (fsPlus.existsSync(pathToResolve)) {
+            return fsPlus.absolute(pathToResolve);
+          }
+        } else {
+          pathWithExtension = pathToResolve + "." + extension.replace(/^\./, "");
+          if (fsPlus.existsSync(pathWithExtension)) {
+            return fsPlus.absolute(pathWithExtension);
+          }
+        }
+      }
+      return void 0;
+    },
+    isCompressedExtension: function(ext) {
+      return COMPRESSED_EXTENSIONS.hasOwnProperty(ext);
+    },
+    isImageExtension: function(ext) {
+      return IMAGE_EXTENSIONS.hasOwnProperty(ext);
+    },
+    isPdfExtension: function(ext) {
+      return ext === '.pdf';
+    },
+    isBinaryExtension: function(ext) {
+      return BINARY_EXTENSIONS.hasOwnProperty(ext);
+    },
+    isReadmePath: function(readmePath) {
+      var base, extension;
+      extension = path.extname(readmePath);
+      base = path.basename(readmePath, extension).toLowerCase();
+      return base === 'readme' && (extension === '' || fsPlus.isMarkdownExtension(extension));
+    },
+    isMarkdownExtension: function(ext) {
+      return MARKDOWN_EXTENSIONS.hasOwnProperty(ext);
+    },
+    isCaseInsensitive: function() {
+      var lowerCaseStat, upperCaseStat;
+      if (fsPlus.caseInsensitiveFs == null) {
+        lowerCaseStat = statSyncNoException(process.execPath.toLowerCase());
+        upperCaseStat = statSyncNoException(process.execPath.toUpperCase());
+        if (lowerCaseStat && upperCaseStat) {
+          fsPlus.caseInsensitiveFs = lowerCaseStat.dev === upperCaseStat.dev && lowerCaseStat.ino === upperCaseStat.ino;
+        } else {
+          fsPlus.caseInsensitiveFs = false;
+        }
+      }
+      return fsPlus.caseInsensitiveFs;
+    },
+    isCaseSensitive: function() {
+      return !fsPlus.isCaseInsensitive();
+    }
+  };
+
+  statSyncNoException = fs.statSyncNoException, lstatSyncNoException = fs.lstatSyncNoException;
+
+  if (statSyncNoException == null) {
+    statSyncNoException = function() {
+      var args, error;
+      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+      try {
+        return fs.statSync.apply(fs, args);
+      } catch (_error) {
+        error = _error;
+        return false;
+      }
+    };
+  }
+
+  if (lstatSyncNoException == null) {
+    lstatSyncNoException = function() {
+      var args, error;
+      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+      try {
+        return fs.lstatSync.apply(fs, args);
+      } catch (_error) {
+        error = _error;
+        return false;
+      }
+    };
+  }
+
+  BINARY_EXTENSIONS = {
+    '.DS_Store': true,
+    '.a': true,
+    '.exe': true,
+    '.o': true,
+    '.pyc': true,
+    '.pyo': true,
+    '.so': true,
+    '.woff': true
+  };
+
+  COMPRESSED_EXTENSIONS = {
+    '.bz2': true,
+    '.egg': true,
+    '.epub': true,
+    '.gz': true,
+    '.jar': true,
+    '.lz': true,
+    '.lzma': true,
+    '.lzo': true,
+    '.tar': true,
+    '.tgz': true,
+    '.war': true,
+    '.whl': true,
+    '.xpi': true,
+    '.xz': true,
+    '.z': true,
+    '.zip': true
+  };
+
+  IMAGE_EXTENSIONS = {
+    '.gif': true,
+    '.ico': true,
+    '.jpeg': true,
+    '.jpg': true,
+    '.png': true,
+    '.tiff': true,
+    '.webp': true
+  };
+
+  MARKDOWN_EXTENSIONS = {
+    '.markdown': true,
+    '.md': true,
+    '.mdown': true,
+    '.mkd': true,
+    '.mkdown': true,
+    '.rmd': true,
+    '.ron': true
+  };
+
+  isPathValid = function(pathToCheck) {
+    return (pathToCheck != null) && typeof pathToCheck === 'string' && pathToCheck.length > 0;
+  };
+
+  isMoveTargetValid = function(source, target, callback) {
+    return fs.stat(source, function(oldErr, oldStat) {
+      if (oldErr) {
+        callback(oldErr);
+        return;
+      }
+      return fs.stat(target, function(newErr, newStat) {
+        if (newErr && newErr.code === 'ENOENT') {
+          callback(void 0, true);
+          return;
+        }
+        return callback(void 0, source.toLowerCase() === target.toLowerCase() && oldStat.dev === newStat.dev && oldStat.ino === newStat.ino);
+      });
+    });
+  };
+
+  isMoveTargetValidSync = function(source, target) {
+    var newStat, oldStat;
+    oldStat = statSyncNoException(source);
+    newStat = statSyncNoException(target);
+    if (!(oldStat && newStat)) {
+      return true;
+    }
+    return source.toLowerCase() === target.toLowerCase() && oldStat.dev === newStat.dev && oldStat.ino === newStat.ino;
+  };
+
+  module.exports = _.extend({}, fs, fsPlus);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/.bin/rimraf b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/.bin/rimraf
new file mode 120000 (symlink)
index 0000000..4cd49a4
--- /dev/null
@@ -0,0 +1 @@
+../rimraf/bin.js
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/LICENSE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/LICENSE
new file mode 100644 (file)
index 0000000..b7f9d50
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (c) 2010 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/README.md
new file mode 100644 (file)
index 0000000..951f76e
--- /dev/null
@@ -0,0 +1,1425 @@
+# Async.js
+
+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), it can also be used directly in the
+browser. Also supports [component](https://github.com/component/component).
+
+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
+
+### 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](http://github.com/caolan/async).
+Alternatively, you can install using Node Package Manager (npm):
+
+    npm 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
+<script type="text/javascript" src="async.js"></script>
+<script type="text/javascript">
+
+    async.map(data, asyncProcess, function(err, results){
+        alert(results);
+    });
+
+</script>
+```
+
+## Documentation
+
+### Collections
+
+* [each](#each)
+* [eachSeries](#eachSeries)
+* [eachLimit](#eachLimit)
+* [map](#map)
+* [mapSeries](#mapSeries)
+* [mapLimit](#mapLimit)
+* [filter](#filter)
+* [filterSeries](#filterSeries)
+* [reject](#reject)
+* [rejectSeries](#rejectSeries)
+* [reduce](#reduce)
+* [reduceRight](#reduceRight)
+* [detect](#detect)
+* [detectSeries](#detectSeries)
+* [sortBy](#sortBy)
+* [some](#some)
+* [every](#every)
+* [concat](#concat)
+* [concatSeries](#concatSeries)
+
+### Control Flow
+
+* [series](#series)
+* [parallel](#parallel)
+* [parallelLimit](#parallellimittasks-limit-callback)
+* [whilst](#whilst)
+* [doWhilst](#doWhilst)
+* [until](#until)
+* [doUntil](#doUntil)
+* [forever](#forever)
+* [waterfall](#waterfall)
+* [compose](#compose)
+* [applyEach](#applyEach)
+* [applyEachSeries](#applyEachSeries)
+* [queue](#queue)
+* [cargo](#cargo)
+* [auto](#auto)
+* [iterator](#iterator)
+* [apply](#apply)
+* [nextTick](#nextTick)
+* [times](#times)
+* [timesSeries](#timesSeries)
+
+### Utils
+
+* [memoize](#memoize)
+* [unmemoize](#unmemoize)
+* [log](#log)
+* [dir](#dir)
+* [noConflict](#noConflict)
+
+
+## Collections
+
+<a name="forEach" />
+<a name="each" />
+### each(arr, iterator, callback)
+
+Applies an iterator function to each item in an array, 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 this callback, the main
+callback for the each 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.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* iterator(item, callback) - A function to apply to each item in the array.
+  The iterator is passed a callback(err) which must be called once it has 
+  completed. If no error has occured, the callback should be run without 
+  arguments or with an explicit null argument.
+* callback(err) - A callback which is called after all the iterator functions
+  have finished, or an error has occurred.
+
+__Example__
+
+```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
+});
+```
+
+---------------------------------------
+
+<a name="forEachSeries" />
+<a name="eachSeries" />
+### eachSeries(arr, iterator, callback)
+
+The same as each only the iterator is applied to each item in the array in
+series. The next iterator is only called once the current one has completed
+processing. This means the iterator functions will complete in order.
+
+
+---------------------------------------
+
+<a name="forEachLimit" />
+<a name="eachLimit" />
+### eachLimit(arr, limit, iterator, callback)
+
+The same as each only no more than "limit" iterators will be simultaneously 
+running at any time.
+
+Note that the items are not processed in batches, so there is no guarantee that
+ the first "limit" iterator functions will complete before any others are 
+started.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* limit - The maximum number of iterators to run at any time.
+* iterator(item, callback) - A function to apply to each item in the array.
+  The iterator is passed a callback(err) which must be called once it has 
+  completed. If no error has occured, the callback should be run without 
+  arguments or with an explicit null argument.
+* callback(err) - A callback which is called after all the iterator functions
+  have finished, or an error has occurred.
+
+__Example__
+
+```js
+// Assume documents is an array of JSON objects and requestApi is a
+// function that interacts with a rate-limited REST api.
+
+async.eachLimit(documents, 20, requestApi, function(err){
+    // if any of the saves produced an error, err would equal that error
+});
+```
+
+---------------------------------------
+
+<a name="map" />
+### map(arr, iterator, callback)
+
+Produces a new array of values by mapping each value in the given array through
+the iterator function. The iterator is called with an item from the array and a
+callback for when it has finished processing. The callback takes 2 arguments, 
+an error and the transformed item from the array. If the iterator passes an
+error to this 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 array.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* iterator(item, callback) - A function to apply to each item in the array.
+  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) - A callback which is called after all the iterator
+  functions have finished, or an error has occurred. Results is an array of the
+  transformed items from the original array.
+
+__Example__
+
+```js
+async.map(['file1','file2','file3'], fs.stat, function(err, results){
+    // results is now an array of stats for each file
+});
+```
+
+---------------------------------------
+
+<a name="mapSeries" />
+### mapSeries(arr, iterator, callback)
+
+The same as map only the iterator is applied to each item in the array in
+series. The next iterator is only called once the current one has completed
+processing. The results array will be in the same order as the original.
+
+
+---------------------------------------
+
+<a name="mapLimit" />
+### mapLimit(arr, limit, iterator, callback)
+
+The same as map only no more than "limit" iterators will be simultaneously 
+running at any time.
+
+Note that the items are not processed in batches, so there is no guarantee that
+ the first "limit" iterator functions will complete before any others are 
+started.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* limit - The maximum number of iterators to run at any time.
+* iterator(item, callback) - A function to apply to each item in the array.
+  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) - A callback which is called after all the iterator
+  functions have finished, or an error has occurred. Results is an array of the
+  transformed items from the original array.
+
+__Example__
+
+```js
+async.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){
+    // results is now an array of stats for each file
+});
+```
+
+---------------------------------------
+
+<a name="filter" />
+### filter(arr, iterator, callback)
+
+__Alias:__ select
+
+Returns a new array of all the values 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 the array.
+  The iterator is passed a callback(truthValue) which must be called with a 
+  boolean argument once it has completed.
+* callback(results) - 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
+});
+```
+
+---------------------------------------
+
+<a name="filterSeries" />
+### filterSeries(arr, iterator, callback)
+
+__alias:__ selectSeries
+
+The same as filter only the iterator is applied to each item in the array in
+series. The next iterator is only called once the current one has completed
+processing. The results array will be in the same order as the original.
+
+---------------------------------------
+
+<a name="reject" />
+### reject(arr, iterator, callback)
+
+The opposite of filter. Removes values that pass an async truth test.
+
+---------------------------------------
+
+<a name="rejectSeries" />
+### rejectSeries(arr, iterator, callback)
+
+The same as reject, only the iterator is applied to each item in the array
+in series.
+
+
+---------------------------------------
+
+<a name="reduce" />
+### reduce(arr, memo, iterator, callback)
+
+__aliases:__ inject, foldl
+
+Reduces a list of values 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, 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) - 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
+});
+```
+
+---------------------------------------
+
+<a name="reduceRight" />
+### reduceRight(arr, memo, iterator, callback)
+
+__Alias:__ foldr
+
+Same as reduce, only operates on the items in the array in reverse order.
+
+
+---------------------------------------
+
+<a name="detect" />
+### detect(arr, iterator, callback)
+
+Returns the first value in a list 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 array (in terms of order) that passes the test.
+
+If order within the original array is important then look at detectSeries.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* iterator(item, callback) - A truth test to apply to each item in the array.
+  The iterator is passed a callback(truthValue) which must be called with a 
+  boolean argument once it has completed.
+* callback(result) - 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.
+
+__Example__
+
+```js
+async.detect(['file1','file2','file3'], fs.exists, function(result){
+    // result now equals the first file in the list that exists
+});
+```
+
+---------------------------------------
+
+<a name="detectSeries" />
+### detectSeries(arr, iterator, callback)
+
+The same as detect, only the iterator is applied to each item in the array
+in series. This means the result is always the first in the original array (in
+terms of array order) that passes the truth test.
+
+
+---------------------------------------
+
+<a name="sortBy" />
+### sortBy(arr, iterator, callback)
+
+Sorts a list by the results of running each value through an async iterator.
+
+__Arguments__
+
+* arr - An array to iterate over.
+* iterator(item, callback) - A function to apply to each item in the array.
+  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) - A callback which is called after all the iterator
+  functions have finished, or an error has occurred. Results is the items from
+  the original array 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
+});
+```
+
+---------------------------------------
+
+<a name="some" />
+### some(arr, iterator, callback)
+
+__Alias:__ any
+
+Returns true if at least one element in the array 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.
+  The iterator is passed a callback(truthValue) which must be called with a 
+  boolean argument once it has completed.
+* callback(result) - 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.
+
+__Example__
+
+```js
+async.some(['file1','file2','file3'], fs.exists, function(result){
+    // if result is true then at least one of the files exists
+});
+```
+
+---------------------------------------
+
+<a name="every" />
+### every(arr, iterator, callback)
+
+__Alias:__ all
+
+Returns true if every element in the array 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.
+  The iterator is passed a callback(truthValue) which must be called with a 
+  boolean argument once it has completed.
+* callback(result) - 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.
+
+__Example__
+
+```js
+async.every(['file1','file2','file3'], fs.exists, function(result){
+    // if result is true then every file exists
+});
+```
+
+---------------------------------------
+
+<a name="concat" />
+### concat(arr, iterator, callback)
+
+Applies an iterator to each item in a list, concatenating the results. Returns the
+concatenated list. The iterators 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 the arguments passed to the iterator function.
+
+__Arguments__
+
+* arr - An array to iterate over
+* iterator(item, callback) - A function to apply to each item in the array.
+  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) - A callback which is called after all the iterator
+  functions have finished, or an error has occurred. 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
+});
+```
+
+---------------------------------------
+
+<a name="concatSeries" />
+### concatSeries(arr, iterator, callback)
+
+Same as async.concat, but executes in series instead of parallel.
+
+
+## Control Flow
+
+<a name="series" />
+### series(tasks, [callback])
+
+Run an array of functions 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 the callback for the series 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.
+
+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
+async.series.
+
+
+__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 (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}
+});
+```
+
+---------------------------------------
+
+<a name="parallel" />
+### parallel(tasks, [callback])
+
+Run an 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.
+
+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
+async.parallel.
+
+
+__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 (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}
+});
+```
+
+---------------------------------------
+
+<a name="parallel" />
+### parallelLimit(tasks, limit, [callback])
+
+The same as parallel only the tasks are executed in parallel with a maximum of "limit" 
+tasks executing at any time.
+
+Note that the tasks are not executed in batches, so there is no guarantee that 
+the first "limit" tasks will complete before any others are started.
+
+__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 (which can
+  be null) and an optional result value.
+* limit - The maximum number of tasks to run at any time.
+* 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.
+
+---------------------------------------
+
+<a name="whilst" />
+### whilst(test, fn, callback)
+
+Repeatedly call fn, while test returns true. Calls the callback when stopped,
+or an error occurs.
+
+__Arguments__
+
+* test() - synchronous truth test to perform before each execution of fn.
+* fn(callback) - A function to call each time the test passes. The function is
+  passed a callback(err) which must be called once it has completed with an 
+  optional error 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
+    }
+);
+```
+
+---------------------------------------
+
+<a name="doWhilst" />
+### doWhilst(fn, test, callback)
+
+The post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.
+
+---------------------------------------
+
+<a name="until" />
+### until(test, fn, callback)
+
+Repeatedly call fn, until test returns true. Calls the callback when stopped,
+or an error occurs.
+
+The inverse of async.whilst.
+
+---------------------------------------
+
+<a name="doUntil" />
+### doUntil(fn, test, callback)
+
+Like doWhilst except the test is inverted. Note the argument ordering differs from `until`.
+
+---------------------------------------
+
+<a name="forever" />
+### forever(fn, callback)
+
+Calls the asynchronous function 'fn' repeatedly, in series, indefinitely.
+If an error is passed to fn's callback then 'callback' is called with the
+error, otherwise it will never be called.
+
+---------------------------------------
+
+<a name="waterfall" />
+### waterfall(tasks, [callback])
+
+Runs an array of functions in series, each passing their results to the next in
+the array. However, if any of the functions pass an error to the 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){
+        callback(null, 'three');
+    },
+    function(arg1, callback){
+        // arg1 now equals 'three'
+        callback(null, 'done');
+    }
+], function (err, result) {
+   // result now equals 'done'    
+});
+```
+
+---------------------------------------
+<a name="compose" />
+### 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
+});
+```
+
+---------------------------------------
+<a name="applyEach" />
+### applyEach(fns, args..., callback)
+
+Applies the provided arguments to each function in the array, calling the
+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
+);
+```
+
+---------------------------------------
+
+<a name="applyEachSeries" />
+### applyEachSeries(arr, iterator, callback)
+
+The same as applyEach only the functions are applied in series.
+
+---------------------------------------
+
+<a name="queue" />
+### queue(worker, concurrency)
+
+Creates a queue object with the specified concurrency. Tasks added to the
+queue will be processed in parallel (up to the concurrency limit). If all
+workers are in progress, the task is queued until one is available. Once
+a worker has completed a task, the 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.
+* concurrency - An integer for determining how many worker functions should be
+  run in parallel.
+
+__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.
+* 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, 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.
+* 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 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
+
+__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 bar');
+});
+
+// add some items to the front of the queue
+
+q.unshift({name: 'bar'}, function (err) {
+    console.log('finished processing bar');
+});
+```
+
+---------------------------------------
+
+<a name="cargo" />
+### 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 is available. Once
+the worker has completed some tasks, each callback of those tasks is called.
+
+__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 error as an 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]) - add a new 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
+
+__Example__
+
+```js
+// create a cargo object with payload 2
+
+var cargo = async.cargo(function (tasks, callback) {
+    for(var i=0; i<tasks.length; i++){
+      console.log('hello ' + tasks[i].name);
+    }
+    callback();
+}, 2);
+
+
+// add some items
+
+cargo.push({name: 'foo'}, function (err) {
+    console.log('finished processing foo');
+});
+cargo.push({name: 'bar'}, function (err) {
+    console.log('finished processing bar');
+});
+cargo.push({name: 'baz'}, function (err) {
+    console.log('finished processing baz');
+});
+```
+
+---------------------------------------
+
+<a name="auto" />
+### auto(tasks, [callback])
+
+Determines the best order for running functions 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, that function will not complete
+(so any other functions depending on it will not run) and the main callback
+will be called immediately 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 literal containing named functions or an array of
+  requirements, with the function itself the last item in the array. The key
+  used for each function or array is used when specifying requirements. 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.
+* callback(err, results) - An optional callback which is called when all the
+  tasks have been completed. The callback will receive an error as an argument
+  if any tasks pass an error to their callback. Results will always be passed
+       but if an error occurred, no other tasks will be performed, and the results
+       object will only contain partial results.
+  
+
+__Example__
+
+```js
+async.auto({
+    get_data: function(callback){
+        // async code to get some data
+    },
+    make_folder: function(callback){
+        // async code to create a directory to store a file in
+        // this is run at the same time as getting the data
+    },
+    write_file: ['get_data', 'make_folder', function(callback){
+        // 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){
+        // once the file is written let's email a link to it...
+        // results.write_file contains the filename returned by write_file.
+    }]
+});
+```
+
+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){
+        // async code to get some data
+    },
+    function(callback){
+        // async code to create a directory to store a file in
+        // this is run at the same time as getting the data
+    }
+],
+function(err, results){
+    async.series([
+        function(callback){
+            // once there is some data and the directory exists,
+            // write the data to a file in the directory
+        },
+        function(callback){
+            // once the file is written let's email a link to it...
+        }
+    ]);
+});
+```
+
+For a complicated series of async tasks using the auto function makes adding
+new tasks much easier and makes the code more readable.
+
+
+---------------------------------------
+
+<a name="iterator" />
+### iterator(tasks)
+
+Creates an iterator function which calls the next function in the array,
+returning a continuation to call the next one after that. It's also possible to
+'peek' the next iterator by doing 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'
+```
+
+---------------------------------------
+
+<a name="apply" />
+### apply(function, arguments..)
+
+Creates a continuation function with some arguments already applied, a useful
+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
+```
+
+---------------------------------------
+
+<a name="nextTick" />
+### nextTick(callback)
+
+Calls the 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 the 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')
+```
+
+<a name="times" />
+### times(n, callback)
+
+Calls the callback n times and accumulates results in the same manner
+you would use with async.map.
+
+__Arguments__
+
+* n - The number of times to run the function.
+* callback - The function to call n times.
+
+__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
+});
+```
+
+<a name="timesSeries" />
+### timesSeries(n, callback)
+
+The same as times only the iterator is applied to each item in the array in
+series. The next iterator is only called once the current one has completed
+processing. The results array will be in the same order as the original.
+
+
+## Utils
+
+<a name="memoize" />
+### 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.
+
+The cache of results is exposed as the `memo` property of the function returned
+by `memoize`.
+
+__Arguments__
+
+* fn - the function you 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
+});
+```
+
+<a name="unmemoize" />
+### unmemoize(fn)
+
+Undoes a memoized function, reverting it to the original, unmemoized
+form. Comes handy in tests.
+
+__Arguments__
+
+* fn - the memoized function
+
+<a name="log" />
+### 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'
+```
+
+---------------------------------------
+
+<a name="dir" />
+### 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'}
+```
+
+---------------------------------------
+
+<a name="noConflict" />
+### noConflict()
+
+Changes the value of async back to its original value, returning a reference to the
+async object.
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/component.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/component.json
new file mode 100644 (file)
index 0000000..bbb0115
--- /dev/null
@@ -0,0 +1,11 @@
+{
+  "name": "async",
+  "repo": "caolan/async",
+  "description": "Higher-order functions and common patterns for asynchronous code",
+  "version": "0.1.23",
+  "keywords": [],
+  "dependencies": {},
+  "development": {},
+  "main": "lib/async.js",
+  "scripts": [ "lib/async.js" ]
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/lib/async.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/lib/async.js
new file mode 100755 (executable)
index 0000000..1eebb15
--- /dev/null
@@ -0,0 +1,958 @@
+/*global setImmediate: false, setTimeout: false, console: false */
+(function () {
+
+    var async = {};
+
+    // global on the server, window in the browser
+    var root, previous_async;
+
+    root = this;
+    if (root != null) {
+      previous_async = root.async;
+    }
+
+    async.noConflict = function () {
+        root.async = previous_async;
+        return async;
+    };
+
+    function only_once(fn) {
+        var called = false;
+        return function() {
+            if (called) throw new Error("Callback was already called.");
+            called = true;
+            fn.apply(root, arguments);
+        }
+    }
+
+    //// cross-browser compatiblity functions ////
+
+    var _each = function (arr, iterator) {
+        if (arr.forEach) {
+            return arr.forEach(iterator);
+        }
+        for (var i = 0; i < arr.length; i += 1) {
+            iterator(arr[i], i, arr);
+        }
+    };
+
+    var _map = function (arr, iterator) {
+        if (arr.map) {
+            return arr.map(iterator);
+        }
+        var results = [];
+        _each(arr, function (x, i, a) {
+            results.push(iterator(x, i, a));
+        });
+        return results;
+    };
+
+    var _reduce = function (arr, iterator, memo) {
+        if (arr.reduce) {
+            return arr.reduce(iterator, memo);
+        }
+        _each(arr, function (x, i, a) {
+            memo = iterator(memo, x, i, a);
+        });
+        return memo;
+    };
+
+    var _keys = function (obj) {
+        if (Object.keys) {
+            return Object.keys(obj);
+        }
+        var keys = [];
+        for (var k in obj) {
+            if (obj.hasOwnProperty(k)) {
+                keys.push(k);
+            }
+        }
+        return keys;
+    };
+
+    //// exported async module functions ////
+
+    //// nextTick implementation with browser-compatible fallback ////
+    if (typeof process === 'undefined' || !(process.nextTick)) {
+        if (typeof setImmediate === 'function') {
+            async.nextTick = function (fn) {
+                // not a direct alias for IE10 compatibility
+                setImmediate(fn);
+            };
+            async.setImmediate = async.nextTick;
+        }
+        else {
+            async.nextTick = function (fn) {
+                setTimeout(fn, 0);
+            };
+            async.setImmediate = async.nextTick;
+        }
+    }
+    else {
+        async.nextTick = process.nextTick;
+        if (typeof setImmediate !== 'undefined') {
+            async.setImmediate = function (fn) {
+              // not a direct alias for IE10 compatibility
+              setImmediate(fn);
+            };
+        }
+        else {
+            async.setImmediate = async.nextTick;
+        }
+    }
+
+    async.each = function (arr, iterator, callback) {
+        callback = callback || function () {};
+        if (!arr.length) {
+            return callback();
+        }
+        var completed = 0;
+        _each(arr, function (x) {
+            iterator(x, only_once(function (err) {
+                if (err) {
+                    callback(err);
+                    callback = function () {};
+                }
+                else {
+                    completed += 1;
+                    if (completed >= arr.length) {
+                        callback(null);
+                    }
+                }
+            }));
+        });
+    };
+    async.forEach = async.each;
+
+    async.eachSeries = function (arr, iterator, callback) {
+        callback = callback || function () {};
+        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();
+    };
+    async.forEachSeries = async.eachSeries;
+
+    async.eachLimit = function (arr, limit, iterator, callback) {
+        var fn = _eachLimit(limit);
+        fn.apply(null, [arr, iterator, callback]);
+    };
+    async.forEachLimit = async.eachLimit;
+
+    var _eachLimit = function (limit) {
+
+        return function (arr, iterator, callback) {
+            callback = callback || function () {};
+            if (!arr.length || limit <= 0) {
+                return callback();
+            }
+            var completed = 0;
+            var started = 0;
+            var running = 0;
+
+            (function replenish () {
+                if (completed >= arr.length) {
+                    return callback();
+                }
+
+                while (running < limit && started < arr.length) {
+                    started += 1;
+                    running += 1;
+                    iterator(arr[started - 1], function (err) {
+                        if (err) {
+                            callback(err);
+                            callback = function () {};
+                        }
+                        else {
+                            completed += 1;
+                            running -= 1;
+                            if (completed >= arr.length) {
+                                callback();
+                            }
+                            else {
+                                replenish();
+                            }
+                        }
+                    });
+                }
+            })();
+        };
+    };
+
+
+    var doParallel = function (fn) {
+        return function () {
+            var args = Array.prototype.slice.call(arguments);
+            return fn.apply(null, [async.each].concat(args));
+        };
+    };
+    var doParallelLimit = function(limit, fn) {
+        return function () {
+            var args = Array.prototype.slice.call(arguments);
+            return fn.apply(null, [_eachLimit(limit)].concat(args));
+        };
+    };
+    var doSeries = function (fn) {
+        return function () {
+            var args = Array.prototype.slice.call(arguments);
+            return fn.apply(null, [async.eachSeries].concat(args));
+        };
+    };
+
+
+    var _asyncMap = function (eachfn, arr, iterator, callback) {
+        var results = [];
+        arr = _map(arr, function (x, i) {
+            return {index: i, value: x};
+        });
+        eachfn(arr, function (x, callback) {
+            iterator(x.value, function (err, v) {
+                results[x.index] = v;
+                callback(err);
+            });
+        }, function (err) {
+            callback(err, results);
+        });
+    };
+    async.map = doParallel(_asyncMap);
+    async.mapSeries = doSeries(_asyncMap);
+    async.mapLimit = function (arr, limit, iterator, callback) {
+        return _mapLimit(limit)(arr, iterator, callback);
+    };
+
+    var _mapLimit = function(limit) {
+        return doParallelLimit(limit, _asyncMap);
+    };
+
+    // reduce only has a series version, as doing reduce in parallel won't
+    // work in many situations.
+    async.reduce = function (arr, memo, iterator, callback) {
+        async.eachSeries(arr, function (x, callback) {
+            iterator(memo, x, function (err, v) {
+                memo = v;
+                callback(err);
+            });
+        }, function (err) {
+            callback(err, memo);
+        });
+    };
+    // inject alias
+    async.inject = async.reduce;
+    // foldl alias
+    async.foldl = async.reduce;
+
+    async.reduceRight = function (arr, memo, iterator, callback) {
+        var reversed = _map(arr, function (x) {
+            return x;
+        }).reverse();
+        async.reduce(reversed, memo, iterator, callback);
+    };
+    // foldr alias
+    async.foldr = async.reduceRight;
+
+    var _filter = function (eachfn, arr, iterator, callback) {
+        var results = [];
+        arr = _map(arr, function (x, i) {
+            return {index: i, value: x};
+        });
+        eachfn(arr, function (x, callback) {
+            iterator(x.value, function (v) {
+                if (v) {
+                    results.push(x);
+                }
+                callback();
+            });
+        }, function (err) {
+            callback(_map(results.sort(function (a, b) {
+                return a.index - b.index;
+            }), function (x) {
+                return x.value;
+            }));
+        });
+    };
+    async.filter = doParallel(_filter);
+    async.filterSeries = doSeries(_filter);
+    // select alias
+    async.select = async.filter;
+    async.selectSeries = async.filterSeries;
+
+    var _reject = function (eachfn, arr, iterator, callback) {
+        var results = [];
+        arr = _map(arr, function (x, i) {
+            return {index: i, value: x};
+        });
+        eachfn(arr, function (x, callback) {
+            iterator(x.value, function (v) {
+                if (!v) {
+                    results.push(x);
+                }
+                callback();
+            });
+        }, function (err) {
+            callback(_map(results.sort(function (a, b) {
+                return a.index - b.index;
+            }), function (x) {
+                return x.value;
+            }));
+        });
+    };
+    async.reject = doParallel(_reject);
+    async.rejectSeries = doSeries(_reject);
+
+    var _detect = function (eachfn, arr, iterator, main_callback) {
+        eachfn(arr, function (x, callback) {
+            iterator(x, function (result) {
+                if (result) {
+                    main_callback(x);
+                    main_callback = function () {};
+                }
+                else {
+                    callback();
+                }
+            });
+        }, function (err) {
+            main_callback();
+        });
+    };
+    async.detect = doParallel(_detect);
+    async.detectSeries = doSeries(_detect);
+
+    async.some = function (arr, iterator, main_callback) {
+        async.each(arr, function (x, callback) {
+            iterator(x, function (v) {
+                if (v) {
+                    main_callback(true);
+                    main_callback = function () {};
+                }
+                callback();
+            });
+        }, function (err) {
+            main_callback(false);
+        });
+    };
+    // any alias
+    async.any = async.some;
+
+    async.every = function (arr, iterator, main_callback) {
+        async.each(arr, function (x, callback) {
+            iterator(x, function (v) {
+                if (!v) {
+                    main_callback(false);
+                    main_callback = function () {};
+                }
+                callback();
+            });
+        }, function (err) {
+            main_callback(true);
+        });
+    };
+    // all alias
+    async.all = async.every;
+
+    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 {
+                var fn = function (left, right) {
+                    var a = left.criteria, b = right.criteria;
+                    return a < b ? -1 : a > b ? 1 : 0;
+                };
+                callback(null, _map(results.sort(fn), function (x) {
+                    return x.value;
+                }));
+            }
+        });
+    };
+
+    async.auto = function (tasks, callback) {
+        callback = callback || function () {};
+        var keys = _keys(tasks);
+        if (!keys.length) {
+            return callback(null);
+        }
+
+        var results = {};
+
+        var listeners = [];
+        var addListener = function (fn) {
+            listeners.unshift(fn);
+        };
+        var removeListener = function (fn) {
+            for (var i = 0; i < listeners.length; i += 1) {
+                if (listeners[i] === fn) {
+                    listeners.splice(i, 1);
+                    return;
+                }
+            }
+        };
+        var taskComplete = function () {
+            _each(listeners.slice(0), function (fn) {
+                fn();
+            });
+        };
+
+        addListener(function () {
+            if (_keys(results).length === keys.length) {
+                callback(null, results);
+                callback = function () {};
+            }
+        });
+
+        _each(keys, function (k) {
+            var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k];
+            var taskCallback = function (err) {
+                var args = Array.prototype.slice.call(arguments, 1);
+                if (args.length <= 1) {
+                    args = args[0];
+                }
+                if (err) {
+                    var safeResults = {};
+                    _each(_keys(results), function(rkey) {
+                        safeResults[rkey] = results[rkey];
+                    });
+                    safeResults[k] = args;
+                    callback(err, safeResults);
+                    // stop subsequent errors hitting callback multiple times
+                    callback = function () {};
+                }
+                else {
+                    results[k] = args;
+                    async.setImmediate(taskComplete);
+                }
+            };
+            var requires = task.slice(0, Math.abs(task.length - 1)) || [];
+            var ready = function () {
+                return _reduce(requires, function (a, x) {
+                    return (a && results.hasOwnProperty(x));
+                }, true) && !results.hasOwnProperty(k);
+            };
+            if (ready()) {
+                task[task.length - 1](taskCallback, results);
+            }
+            else {
+                var listener = function () {
+                    if (ready()) {
+                        removeListener(listener);
+                        task[task.length - 1](taskCallback, results);
+                    }
+                };
+                addListener(listener);
+            }
+        });
+    };
+
+    async.waterfall = function (tasks, callback) {
+        callback = callback || function () {};
+        if (tasks.constructor !== Array) {
+          var err = new Error('First argument to waterfall must be an array of functions');
+          return callback(err);
+        }
+        if (!tasks.length) {
+            return callback();
+        }
+        var wrapIterator = function (iterator) {
+            return function (err) {
+                if (err) {
+                    callback.apply(null, arguments);
+                    callback = function () {};
+                }
+                else {
+                    var args = Array.prototype.slice.call(arguments, 1);
+                    var next = iterator.next();
+                    if (next) {
+                        args.push(wrapIterator(next));
+                    }
+                    else {
+                        args.push(callback);
+                    }
+                    async.setImmediate(function () {
+                        iterator.apply(null, args);
+                    });
+                }
+            };
+        };
+        wrapIterator(async.iterator(tasks))();
+    };
+
+    var _parallel = function(eachfn, tasks, callback) {
+        callback = callback || function () {};
+        if (tasks.constructor === Array) {
+            eachfn.map(tasks, function (fn, callback) {
+                if (fn) {
+                    fn(function (err) {
+                        var args = Array.prototype.slice.call(arguments, 1);
+                        if (args.length <= 1) {
+                            args = args[0];
+                        }
+                        callback.call(null, err, args);
+                    });
+                }
+            }, callback);
+        }
+        else {
+            var results = {};
+            eachfn.each(_keys(tasks), function (k, callback) {
+                tasks[k](function (err) {
+                    var args = Array.prototype.slice.call(arguments, 1);
+                    if (args.length <= 1) {
+                        args = args[0];
+                    }
+                    results[k] = args;
+                    callback(err);
+                });
+            }, function (err) {
+                callback(err, results);
+            });
+        }
+    };
+
+    async.parallel = function (tasks, callback) {
+        _parallel({ map: async.map, each: async.each }, tasks, callback);
+    };
+
+    async.parallelLimit = function(tasks, limit, callback) {
+        _parallel({ map: _mapLimit(limit), each: _eachLimit(limit) }, tasks, callback);
+    };
+
+    async.series = function (tasks, callback) {
+        callback = callback || function () {};
+        if (tasks.constructor === Array) {
+            async.mapSeries(tasks, function (fn, callback) {
+                if (fn) {
+                    fn(function (err) {
+                        var args = Array.prototype.slice.call(arguments, 1);
+                        if (args.length <= 1) {
+                            args = args[0];
+                        }
+                        callback.call(null, err, args);
+                    });
+                }
+            }, callback);
+        }
+        else {
+            var results = {};
+            async.eachSeries(_keys(tasks), function (k, callback) {
+                tasks[k](function (err) {
+                    var args = Array.prototype.slice.call(arguments, 1);
+                    if (args.length <= 1) {
+                        args = args[0];
+                    }
+                    results[k] = args;
+                    callback(err);
+                });
+            }, function (err) {
+                callback(err, results);
+            });
+        }
+    };
+
+    async.iterator = function (tasks) {
+        var makeCallback = function (index) {
+            var fn = function () {
+                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 = function (fn) {
+        var args = Array.prototype.slice.call(arguments, 1);
+        return function () {
+            return fn.apply(
+                null, args.concat(Array.prototype.slice.call(arguments))
+            );
+        };
+    };
+
+    var _concat = function (eachfn, arr, fn, callback) {
+        var r = [];
+        eachfn(arr, function (x, cb) {
+            fn(x, function (err, y) {
+                r = r.concat(y || []);
+                cb(err);
+            });
+        }, function (err) {
+            callback(err, r);
+        });
+    };
+    async.concat = doParallel(_concat);
+    async.concatSeries = doSeries(_concat);
+
+    async.whilst = function (test, iterator, callback) {
+        if (test()) {
+            iterator(function (err) {
+                if (err) {
+                    return callback(err);
+                }
+                async.whilst(test, iterator, callback);
+            });
+        }
+        else {
+            callback();
+        }
+    };
+
+    async.doWhilst = function (iterator, test, callback) {
+        iterator(function (err) {
+            if (err) {
+                return callback(err);
+            }
+            if (test()) {
+                async.doWhilst(iterator, test, callback);
+            }
+            else {
+                callback();
+            }
+        });
+    };
+
+    async.until = function (test, iterator, callback) {
+        if (!test()) {
+            iterator(function (err) {
+                if (err) {
+                    return callback(err);
+                }
+                async.until(test, iterator, callback);
+            });
+        }
+        else {
+            callback();
+        }
+    };
+
+    async.doUntil = function (iterator, test, callback) {
+        iterator(function (err) {
+            if (err) {
+                return callback(err);
+            }
+            if (!test()) {
+                async.doUntil(iterator, test, callback);
+            }
+            else {
+                callback();
+            }
+        });
+    };
+
+    async.queue = function (worker, concurrency) {
+        if (concurrency === undefined) {
+            concurrency = 1;
+        }
+        function _insert(q, data, pos, callback) {
+          if(data.constructor !== Array) {
+              data = [data];
+          }
+          _each(data, function(task) {
+              var item = {
+                  data: task,
+                  callback: typeof callback === 'function' ? callback : null
+              };
+
+              if (pos) {
+                q.tasks.unshift(item);
+              } else {
+                q.tasks.push(item);
+              }
+
+              if (q.saturated && q.tasks.length === concurrency) {
+                  q.saturated();
+              }
+              async.setImmediate(q.process);
+          });
+        }
+
+        var workers = 0;
+        var q = {
+            tasks: [],
+            concurrency: concurrency,
+            saturated: null,
+            empty: null,
+            drain: null,
+            push: function (data, callback) {
+              _insert(q, data, false, callback);
+            },
+            unshift: function (data, callback) {
+              _insert(q, data, true, callback);
+            },
+            process: function () {
+                if (workers < q.concurrency && q.tasks.length) {
+                    var task = q.tasks.shift();
+                    if (q.empty && q.tasks.length === 0) {
+                        q.empty();
+                    }
+                    workers += 1;
+                    var next = function () {
+                        workers -= 1;
+                        if (task.callback) {
+                            task.callback.apply(task, arguments);
+                        }
+                        if (q.drain && q.tasks.length + workers === 0) {
+                            q.drain();
+                        }
+                        q.process();
+                    };
+                    var cb = only_once(next);
+                    worker(task.data, cb);
+                }
+            },
+            length: function () {
+                return q.tasks.length;
+            },
+            running: function () {
+                return workers;
+            }
+        };
+        return q;
+    };
+
+    async.cargo = function (worker, payload) {
+        var working     = false,
+            tasks       = [];
+
+        var cargo = {
+            tasks: tasks,
+            payload: payload,
+            saturated: null,
+            empty: null,
+            drain: null,
+            push: function (data, callback) {
+                if(data.constructor !== Array) {
+                    data = [data];
+                }
+                _each(data, function(task) {
+                    tasks.push({
+                        data: task,
+                        callback: typeof callback === 'function' ? callback : null
+                    });
+                    if (cargo.saturated && tasks.length === payload) {
+                        cargo.saturated();
+                    }
+                });
+                async.setImmediate(cargo.process);
+            },
+            process: function process() {
+                if (working) return;
+                if (tasks.length === 0) {
+                    if(cargo.drain) cargo.drain();
+                    return;
+                }
+
+                var ts = typeof payload === 'number'
+                            ? tasks.splice(0, payload)
+                            : tasks.splice(0);
+
+                var ds = _map(ts, function (task) {
+                    return task.data;
+                });
+
+                if(cargo.empty) cargo.empty();
+                working = true;
+                worker(ds, function () {
+                    working = false;
+
+                    var args = arguments;
+                    _each(ts, function (data) {
+                        if (data.callback) {
+                            data.callback.apply(null, args);
+                        }
+                    });
+
+                    process();
+                });
+            },
+            length: function () {
+                return tasks.length;
+            },
+            running: function () {
+                return working;
+            }
+        };
+        return cargo;
+    };
+
+    var _console_fn = function (name) {
+        return function (fn) {
+            var args = Array.prototype.slice.call(arguments, 1);
+            fn.apply(null, args.concat([function (err) {
+                var args = Array.prototype.slice.call(arguments, 1);
+                if (typeof console !== 'undefined') {
+                    if (err) {
+                        if (console.error) {
+                            console.error(err);
+                        }
+                    }
+                    else if (console[name]) {
+                        _each(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 || function (x) {
+            return x;
+        };
+        var memoized = function () {
+            var args = Array.prototype.slice.call(arguments);
+            var callback = args.pop();
+            var key = hasher.apply(null, args);
+            if (key in memo) {
+                callback.apply(null, memo[key]);
+            }
+            else if (key in queues) {
+                queues[key].push(callback);
+            }
+            else {
+                queues[key] = [callback];
+                fn.apply(null, args.concat([function () {
+                    memo[key] = arguments;
+                    var q = queues[key];
+                    delete queues[key];
+                    for (var i = 0, l = q.length; i < l; i++) {
+                      q[i].apply(null, arguments);
+                    }
+                }]));
+            }
+        };
+        memoized.memo = memo;
+        memoized.unmemoized = fn;
+        return memoized;
+    };
+
+    async.unmemoize = function (fn) {
+      return function () {
+        return (fn.unmemoized || fn).apply(null, arguments);
+      };
+    };
+
+    async.times = function (count, iterator, callback) {
+        var counter = [];
+        for (var i = 0; i < count; i++) {
+            counter.push(i);
+        }
+        return async.map(counter, iterator, callback);
+    };
+
+    async.timesSeries = function (count, iterator, callback) {
+        var counter = [];
+        for (var i = 0; i < count; i++) {
+            counter.push(i);
+        }
+        return async.mapSeries(counter, iterator, callback);
+    };
+
+    async.compose = function (/* functions... */) {
+        var fns = Array.prototype.reverse.call(arguments);
+        return function () {
+            var that = this;
+            var args = Array.prototype.slice.call(arguments);
+            var callback = args.pop();
+            async.reduce(fns, args, function (newargs, fn, cb) {
+                fn.apply(that, newargs.concat([function () {
+                    var err = arguments[0];
+                    var nextargs = Array.prototype.slice.call(arguments, 1);
+                    cb(err, nextargs);
+                }]))
+            },
+            function (err, results) {
+                callback.apply(that, [err].concat(results));
+            });
+        };
+    };
+
+    var _applyEach = function (eachfn, fns /*args...*/) {
+        var go = function () {
+            var that = this;
+            var args = Array.prototype.slice.call(arguments);
+            var callback = args.pop();
+            return eachfn(fns, function (fn, cb) {
+                fn.apply(that, args.concat([cb]));
+            },
+            callback);
+        };
+        if (arguments.length > 2) {
+            var args = Array.prototype.slice.call(arguments, 2);
+            return go.apply(this, args);
+        }
+        else {
+            return go;
+        }
+    };
+    async.applyEach = doParallel(_applyEach);
+    async.applyEachSeries = doSeries(_applyEach);
+
+    async.forever = function (fn, callback) {
+        function next(err) {
+            if (err) {
+                if (callback) {
+                    return callback(err);
+                }
+                throw err;
+            }
+            fn(next);
+        }
+        next();
+    };
+
+    // AMD / RequireJS
+    if (typeof define !== 'undefined' && define.amd) {
+        define([], function () {
+            return async;
+        });
+    }
+    // Node.js
+    else if (typeof module !== 'undefined' && module.exports) {
+        module.exports = async;
+    }
+    // included directly via <script> tag
+    else {
+        root.async = async;
+    }
+
+}());
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/package.json
new file mode 100644 (file)
index 0000000..a212ddf
--- /dev/null
@@ -0,0 +1,58 @@
+{
+  "name": "async",
+  "description": "Higher-order functions and common patterns for asynchronous code",
+  "main": "./lib/async",
+  "author": {
+    "name": "Caolan McMahon"
+  },
+  "version": "0.2.10",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/caolan/async.git"
+  },
+  "bugs": {
+    "url": "https://github.com/caolan/async/issues"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "https://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"
+  },
+  "_id": "async@0.2.10",
+  "dist": {
+    "shasum": "b6bbe0b0674b9d719708ca38de8c237cb526c3d1",
+    "tarball": "http://registry.npmjs.org/async/-/async-0.2.10.tgz"
+  },
+  "_from": "async@>=0.2.9 <0.3.0",
+  "_npmVersion": "1.3.2",
+  "_npmUser": {
+    "name": "caolan",
+    "email": "caolan.mcmahon@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "caolan",
+      "email": "caolan@caolanmcmahon.com"
+    }
+  ],
+  "directories": {},
+  "_shasum": "b6bbe0b0674b9d719708ca38de8c237cb526c3d1",
+  "_resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/.npmignore b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/.npmignore
new file mode 100644 (file)
index 0000000..9303c34
--- /dev/null
@@ -0,0 +1,2 @@
+node_modules/
+npm-debug.log
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/.travis.yml b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/.travis.yml
new file mode 100644 (file)
index 0000000..84fd7ca
--- /dev/null
@@ -0,0 +1,5 @@
+language: node_js
+node_js:
+  - 0.6
+  - 0.8
+  - 0.9
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/LICENSE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/LICENSE
new file mode 100644 (file)
index 0000000..432d1ae
--- /dev/null
@@ -0,0 +1,21 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/examples/pow.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/examples/pow.js
new file mode 100644 (file)
index 0000000..e692421
--- /dev/null
@@ -0,0 +1,6 @@
+var mkdirp = require('mkdirp');
+
+mkdirp('/tmp/foo/bar/baz', function (err) {
+    if (err) console.error(err)
+    else console.log('pow!')
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/index.js
new file mode 100644 (file)
index 0000000..fda6de8
--- /dev/null
@@ -0,0 +1,82 @@
+var path = require('path');
+var fs = require('fs');
+
+module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
+
+function mkdirP (p, mode, f, made) {
+    if (typeof mode === 'function' || mode === undefined) {
+        f = mode;
+        mode = 0777 & (~process.umask());
+    }
+    if (!made) made = null;
+
+    var cb = f || function () {};
+    if (typeof mode === 'string') mode = parseInt(mode, 8);
+    p = path.resolve(p);
+
+    fs.mkdir(p, mode, function (er) {
+        if (!er) {
+            made = made || p;
+            return cb(null, made);
+        }
+        switch (er.code) {
+            case 'ENOENT':
+                mkdirP(path.dirname(p), mode, function (er, made) {
+                    if (er) cb(er, made);
+                    else mkdirP(p, mode, 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:
+                fs.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, mode, made) {
+    if (mode === undefined) {
+        mode = 0777 & (~process.umask());
+    }
+    if (!made) made = null;
+
+    if (typeof mode === 'string') mode = parseInt(mode, 8);
+    p = path.resolve(p);
+
+    try {
+        fs.mkdirSync(p, mode);
+        made = made || p;
+    }
+    catch (err0) {
+        switch (err0.code) {
+            case 'ENOENT' :
+                made = sync(path.dirname(p), mode, made);
+                sync(p, mode, 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 = fs.statSync(p);
+                }
+                catch (err1) {
+                    throw err0;
+                }
+                if (!stat.isDirectory()) throw err0;
+                break;
+        }
+    }
+
+    return made;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/package.json
new file mode 100644 (file)
index 0000000..cc7b329
--- /dev/null
@@ -0,0 +1,46 @@
+{
+  "name": "mkdirp",
+  "description": "Recursively mkdir, like `mkdir -p`",
+  "version": "0.3.5",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "main": "./index",
+  "keywords": [
+    "mkdir",
+    "directory"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "http://github.com/substack/node-mkdirp.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "devDependencies": {
+    "tap": "~0.4.0"
+  },
+  "license": "MIT",
+  "_id": "mkdirp@0.3.5",
+  "dist": {
+    "shasum": "de3e5f8961c88c787ee1368df849ac4413eca8d7",
+    "tarball": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"
+  },
+  "_from": "mkdirp@>=0.3.5 <0.4.0",
+  "_npmVersion": "1.2.2",
+  "_npmUser": {
+    "name": "substack",
+    "email": "mail@substack.net"
+  },
+  "maintainers": [
+    {
+      "name": "substack",
+      "email": "mail@substack.net"
+    }
+  ],
+  "directories": {},
+  "_shasum": "de3e5f8961c88c787ee1368df849ac4413eca8d7",
+  "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/readme.markdown b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/readme.markdown
new file mode 100644 (file)
index 0000000..83b0216
--- /dev/null
@@ -0,0 +1,63 @@
+# mkdirp
+
+Like `mkdir -p`, but in node.js!
+
+[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)
+
+# example
+
+## pow.js
+
+```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
+
+```js
+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())`.
+
+`cb(err, made)` fires with the error or the first directory `made`
+that had to be created, if any.
+
+## 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())`.
+
+Returns the first directory that had to be created, if any.
+
+# install
+
+With [npm](http://npmjs.org) do:
+
+```
+npm install mkdirp
+```
+
+# license
+
+MIT
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/chmod.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/chmod.js
new file mode 100644 (file)
index 0000000..520dcb8
--- /dev/null
@@ -0,0 +1,38 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/clobber.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/clobber.js
new file mode 100644 (file)
index 0000000..0eb7099
--- /dev/null
@@ -0,0 +1,37 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/mkdirp.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/mkdirp.js
new file mode 100644 (file)
index 0000000..b07cd70
--- /dev/null
@@ -0,0 +1,28 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/perm.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/perm.js
new file mode 100644 (file)
index 0000000..23a7abb
--- /dev/null
@@ -0,0 +1,32 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/perm_sync.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/perm_sync.js
new file mode 100644 (file)
index 0000000..f685f60
--- /dev/null
@@ -0,0 +1,39 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/race.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/race.js
new file mode 100644 (file)
index 0000000..96a0447
--- /dev/null
@@ -0,0 +1,41 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/rel.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/rel.js
new file mode 100644 (file)
index 0000000..7985824
--- /dev/null
@@ -0,0 +1,32 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/return.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/return.js
new file mode 100644 (file)
index 0000000..bce68e5
--- /dev/null
@@ -0,0 +1,25 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('return value', function (t) {
+    t.plan(4);
+    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('/');
+
+    // should return the first dir created.
+    // By this point, it would be profoundly surprising if /tmp didn't
+    // already exist, since every other test makes things in there.
+    mkdirp(file, function (err, made) {
+        t.ifError(err);
+        t.equal(made, '/tmp/' + x);
+        mkdirp(file, function (err, made) {
+          t.ifError(err);
+          t.equal(made, null);
+        });
+    });
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/return_sync.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/return_sync.js
new file mode 100644 (file)
index 0000000..7c222d3
--- /dev/null
@@ -0,0 +1,24 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('return value', 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('/');
+
+    // should return the first dir created.
+    // By this point, it would be profoundly surprising if /tmp didn't
+    // already exist, since every other test makes things in there.
+    // Note that this will throw on failure, which will fail the test.
+    var made = mkdirp.sync(file);
+    t.equal(made, '/tmp/' + x);
+
+    // making the same file again should have no effect.
+    made = mkdirp.sync(file);
+    t.equal(made, null);
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/root.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/root.js
new file mode 100644 (file)
index 0000000..97ad7a2
--- /dev/null
@@ -0,0 +1,18 @@
+var mkdirp = require('../');
+var path = require('path');
+var fs = require('fs');
+var test = require('tap').test;
+
+test('root', function (t) {
+    // '/' on unix, 'c:/' on windows.
+    var file = path.resolve('/');
+
+    mkdirp(file, 0755, function (err) {
+        if (err) throw err
+        fs.stat(file, function (er, stat) {
+            if (er) throw er
+            t.ok(stat.isDirectory(), 'target is a directory');
+            t.end();
+        })
+    });
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/sync.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/sync.js
new file mode 100644 (file)
index 0000000..7530cad
--- /dev/null
@@ -0,0 +1,32 @@
+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('/');
+
+    try {
+        mkdirp.sync(file, 0755);
+    } catch (err) {
+        t.fail(err);
+        return t.end();
+    }
+
+    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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/umask.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/umask.js
new file mode 100644 (file)
index 0000000..64ccafe
--- /dev/null
@@ -0,0 +1,28 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/umask_sync.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/test/umask_sync.js
new file mode 100644 (file)
index 0000000..35bd5cb
--- /dev/null
@@ -0,0 +1,32 @@
+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('/');
+
+    try {
+        mkdirp.sync(file);
+    } catch (err) {
+        t.fail(err);
+        return t.end();
+    }
+
+    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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/AUTHORS b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/AUTHORS
new file mode 100644 (file)
index 0000000..247b754
--- /dev/null
@@ -0,0 +1,6 @@
+# Authors sorted by whether or not they're me.
+Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)
+Wayne Larsen <wayne@larsen.st> (http://github.com/wvl)
+ritch <skawful@gmail.com>
+Marcel Laverdet
+Yosef Dinerstein <yosefd@microsoft.com>
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/LICENSE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/LICENSE
new file mode 100644 (file)
index 0000000..05a4010
--- /dev/null
@@ -0,0 +1,23 @@
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/README.md
new file mode 100644 (file)
index 0000000..cd123b6
--- /dev/null
@@ -0,0 +1,30 @@
+`rm -rf` for node.
+
+Install with `npm install rimraf`, or just drop rimraf.js somewhere.
+
+## API
+
+`rimraf(f, callback)`
+
+The callback will be called with an error if there is one.  Certain
+errors are handled for you:
+
+* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of
+  `opts.maxBusyTries` times before giving up.
+* `ENOENT` - If the file doesn't exist, rimraf will return
+  successfully, since your desired outcome is already the case.
+
+## rimraf.sync
+
+It can remove stuff synchronously, too.  But that's not so good.  Use
+the async API.  It's better.
+
+## CLI
+
+If installed with `npm install rimraf -g` it can be used as a global
+command `rimraf <path>` which is useful for cross platform support.
+
+## mkdirp
+
+If you need to create a directory recursively, check out
+[mkdirp](https://github.com/substack/node-mkdirp).
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/bin.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/bin.js
new file mode 100755 (executable)
index 0000000..29bfa8a
--- /dev/null
@@ -0,0 +1,33 @@
+#!/usr/bin/env node
+
+var rimraf = require('./')
+
+var help = false
+var dashdash = false
+var args = process.argv.slice(2).filter(function(arg) {
+  if (dashdash)
+    return !!arg
+  else if (arg === '--')
+    dashdash = true
+  else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/))
+    help = true
+  else
+    return !!arg
+});
+
+if (help || args.length === 0) {
+  // If they didn't ask for help, then this is not a "success"
+  var log = help ? console.log : console.error
+  log('Usage: rimraf <path>')
+  log('')
+  log('  Deletes all files and folders at "path" recursively.')
+  log('')
+  log('Options:')
+  log('')
+  log('  -h, --help    Display this usage info')
+  process.exit(help ? 0 : 1)
+} else {
+  args.forEach(function(arg) {
+    rimraf.sync(arg)
+  })
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/package.json
new file mode 100644 (file)
index 0000000..34093fa
--- /dev/null
@@ -0,0 +1,72 @@
+{
+  "name": "rimraf",
+  "version": "2.2.8",
+  "main": "rimraf.js",
+  "description": "A deep deletion module for node (like `rm -rf`)",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "license": {
+    "type": "MIT",
+    "url": "https://github.com/isaacs/rimraf/raw/master/LICENSE"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/rimraf.git"
+  },
+  "scripts": {
+    "test": "cd test && bash run.sh"
+  },
+  "bin": {
+    "rimraf": "./bin.js"
+  },
+  "contributors": [
+    {
+      "name": "Isaac Z. Schlueter",
+      "email": "i@izs.me",
+      "url": "http://blog.izs.me"
+    },
+    {
+      "name": "Wayne Larsen",
+      "email": "wayne@larsen.st",
+      "url": "http://github.com/wvl"
+    },
+    {
+      "name": "ritch",
+      "email": "skawful@gmail.com"
+    },
+    {
+      "name": "Marcel Laverdet"
+    },
+    {
+      "name": "Yosef Dinerstein",
+      "email": "yosefd@microsoft.com"
+    }
+  ],
+  "bugs": {
+    "url": "https://github.com/isaacs/rimraf/issues"
+  },
+  "homepage": "https://github.com/isaacs/rimraf",
+  "_id": "rimraf@2.2.8",
+  "_shasum": "e439be2aaee327321952730f99a8929e4fc50582",
+  "_from": "rimraf@>=2.2.2 <2.3.0",
+  "_npmVersion": "1.4.10",
+  "_npmUser": {
+    "name": "isaacs",
+    "email": "i@izs.me"
+  },
+  "maintainers": [
+    {
+      "name": "isaacs",
+      "email": "i@izs.me"
+    }
+  ],
+  "dist": {
+    "shasum": "e439be2aaee327321952730f99a8929e4fc50582",
+    "tarball": "http://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/rimraf.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/rimraf.js
new file mode 100644 (file)
index 0000000..eb96c46
--- /dev/null
@@ -0,0 +1,248 @@
+module.exports = rimraf
+rimraf.sync = rimrafSync
+
+var assert = require("assert")
+var path = require("path")
+var fs = require("fs")
+
+// for EMFILE handling
+var timeout = 0
+exports.EMFILE_MAX = 1000
+exports.BUSYTRIES_MAX = 3
+
+var isWindows = (process.platform === "win32")
+
+function defaults (options) {
+  var methods = [
+    'unlink',
+    'chmod',
+    'stat',
+    'rmdir',
+    'readdir'
+  ]
+  methods.forEach(function(m) {
+    options[m] = options[m] || fs[m]
+    m = m + 'Sync'
+    options[m] = options[m] || fs[m]
+  })
+}
+
+function rimraf (p, options, cb) {
+  if (typeof options === 'function') {
+    cb = options
+    options = {}
+  }
+  assert(p)
+  assert(options)
+  assert(typeof cb === 'function')
+
+  defaults(options)
+
+  if (!cb) throw new Error("No callback passed to rimraf()")
+
+  var busyTries = 0
+  rimraf_(p, options, function CB (er) {
+    if (er) {
+      if (isWindows && (er.code === "EBUSY" || er.code === "ENOTEMPTY") &&
+          busyTries < exports.BUSYTRIES_MAX) {
+        busyTries ++
+        var time = busyTries * 100
+        // try again, with the same exact callback as this one.
+        return setTimeout(function () {
+          rimraf_(p, options, CB)
+        }, time)
+      }
+
+      // this one won't happen if graceful-fs is used.
+      if (er.code === "EMFILE" && timeout < exports.EMFILE_MAX) {
+        return setTimeout(function () {
+          rimraf_(p, options, CB)
+        }, timeout ++)
+      }
+
+      // already gone
+      if (er.code === "ENOENT") er = null
+    }
+
+    timeout = 0
+    cb(er)
+  })
+}
+
+// Two possible strategies.
+// 1. Assume it's a file.  unlink it, then do the dir stuff on EPERM or EISDIR
+// 2. Assume it's a directory.  readdir, then do the file stuff on ENOTDIR
+//
+// Both result in an extra syscall when you guess wrong.  However, there
+// are likely far more normal files in the world than directories.  This
+// is based on the assumption that a the average number of files per
+// directory is >= 1.
+//
+// If anyone ever complains about this, then I guess the strategy could
+// be made configurable somehow.  But until then, YAGNI.
+function rimraf_ (p, options, cb) {
+  assert(p)
+  assert(options)
+  assert(typeof cb === 'function')
+
+  options.unlink(p, function (er) {
+    if (er) {
+      if (er.code === "ENOENT")
+        return cb(null)
+      if (er.code === "EPERM")
+        return (isWindows)
+          ? fixWinEPERM(p, options, er, cb)
+          : rmdir(p, options, er, cb)
+      if (er.code === "EISDIR")
+        return rmdir(p, options, er, cb)
+    }
+    return cb(er)
+  })
+}
+
+function fixWinEPERM (p, options, er, cb) {
+  assert(p)
+  assert(options)
+  assert(typeof cb === 'function')
+  if (er)
+    assert(er instanceof Error)
+
+  options.chmod(p, 666, function (er2) {
+    if (er2)
+      cb(er2.code === "ENOENT" ? null : er)
+    else
+      options.stat(p, function(er3, stats) {
+        if (er3)
+          cb(er3.code === "ENOENT" ? null : er)
+        else if (stats.isDirectory())
+          rmdir(p, options, er, cb)
+        else
+          options.unlink(p, cb)
+      })
+  })
+}
+
+function fixWinEPERMSync (p, options, er) {
+  assert(p)
+  assert(options)
+  if (er)
+    assert(er instanceof Error)
+
+  try {
+    options.chmodSync(p, 666)
+  } catch (er2) {
+    if (er2.code === "ENOENT")
+      return
+    else
+      throw er
+  }
+
+  try {
+    var stats = options.statSync(p)
+  } catch (er3) {
+    if (er3.code === "ENOENT")
+      return
+    else
+      throw er
+  }
+
+  if (stats.isDirectory())
+    rmdirSync(p, options, er)
+  else
+    options.unlinkSync(p)
+}
+
+function rmdir (p, options, originalEr, cb) {
+  assert(p)
+  assert(options)
+  if (originalEr)
+    assert(originalEr instanceof Error)
+  assert(typeof cb === 'function')
+
+  // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)
+  // if we guessed wrong, and it's not a directory, then
+  // raise the original error.
+  options.rmdir(p, function (er) {
+    if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM"))
+      rmkids(p, options, cb)
+    else if (er && er.code === "ENOTDIR")
+      cb(originalEr)
+    else
+      cb(er)
+  })
+}
+
+function rmkids(p, options, cb) {
+  assert(p)
+  assert(options)
+  assert(typeof cb === 'function')
+
+  options.readdir(p, function (er, files) {
+    if (er)
+      return cb(er)
+    var n = files.length
+    if (n === 0)
+      return options.rmdir(p, cb)
+    var errState
+    files.forEach(function (f) {
+      rimraf(path.join(p, f), options, function (er) {
+        if (errState)
+          return
+        if (er)
+          return cb(errState = er)
+        if (--n === 0)
+          options.rmdir(p, cb)
+      })
+    })
+  })
+}
+
+// this looks simpler, and is strictly *faster*, but will
+// tie up the JavaScript thread and fail on excessively
+// deep directory trees.
+function rimrafSync (p, options) {
+  options = options || {}
+  defaults(options)
+
+  assert(p)
+  assert(options)
+
+  try {
+    options.unlinkSync(p)
+  } catch (er) {
+    if (er.code === "ENOENT")
+      return
+    if (er.code === "EPERM")
+      return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)
+    if (er.code !== "EISDIR")
+      throw er
+    rmdirSync(p, options, er)
+  }
+}
+
+function rmdirSync (p, options, originalEr) {
+  assert(p)
+  assert(options)
+  if (originalEr)
+    assert(originalEr instanceof Error)
+
+  try {
+    options.rmdirSync(p)
+  } catch (er) {
+    if (er.code === "ENOENT")
+      return
+    if (er.code === "ENOTDIR")
+      throw originalEr
+    if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")
+      rmkidsSync(p, options)
+  }
+}
+
+function rmkidsSync (p, options) {
+  assert(p)
+  assert(options)
+  options.readdirSync(p).forEach(function (f) {
+    rimrafSync(path.join(p, f), options)
+  })
+  options.rmdirSync(p, options)
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/run.sh b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/run.sh
new file mode 100644 (file)
index 0000000..653ff9b
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/bash
+set -e
+code=0
+for i in test-*.js; do
+  echo -n $i ...
+  bash setup.sh
+  node $i
+  if [ -d target ]; then
+    echo "fail"
+    code=1
+  else
+    echo "pass"
+  fi
+done
+rm -rf target
+exit $code
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/setup.sh b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/setup.sh
new file mode 100644 (file)
index 0000000..2602e63
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+set -e
+
+files=10
+folders=2
+depth=4
+target="$PWD/target"
+
+rm -rf target
+
+fill () {
+  local depth=$1
+  local files=$2
+  local folders=$3
+  local target=$4
+
+  if ! [ -d $target ]; then
+    mkdir -p $target
+  fi
+
+  local f
+
+  f=$files
+  while [ $f -gt 0 ]; do
+    touch "$target/f-$depth-$f"
+    let f--
+  done
+
+  let depth--
+
+  if [ $depth -le 0 ]; then
+    return 0
+  fi
+
+  f=$folders
+  while [ $f -gt 0 ]; do
+    mkdir "$target/folder-$depth-$f"
+    fill $depth $files $folders "$target/d-$depth-$f"
+    let f--
+  done
+}
+
+fill $depth $files $folders $target
+
+# sanity assert
+[ -d $target ]
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/test-async.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/test-async.js
new file mode 100644 (file)
index 0000000..9c2e0b7
--- /dev/null
@@ -0,0 +1,5 @@
+var rimraf = require("../rimraf")
+  , path = require("path")
+rimraf(path.join(__dirname, "target"), function (er) {
+  if (er) throw er
+})
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/test-sync.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/test/test-sync.js
new file mode 100644 (file)
index 0000000..eb71f10
--- /dev/null
@@ -0,0 +1,3 @@
+var rimraf = require("../rimraf")
+  , path = require("path")
+rimraf.sync(path.join(__dirname, "target"))
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/package.json
new file mode 100644 (file)
index 0000000..76dbfe4
--- /dev/null
@@ -0,0 +1,76 @@
+{
+  "name": "fs-plus",
+  "version": "2.8.1",
+  "description": "node's fs with more helpers",
+  "main": "./lib/fs-plus.js",
+  "scripts": {
+    "prepublish": "grunt prepublish",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/fs-plus.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/fs-plus/issues"
+  },
+  "homepage": "http://atom.github.io/fs-plus",
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/fs-plus/raw/master/LICENSE.md"
+    }
+  ],
+  "keywords": [
+    "fs",
+    "filesystem"
+  ],
+  "devDependencies": {
+    "jasmine-focused": "1.x",
+    "grunt-contrib-coffee": "~0.9.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "temp": "~0.8.1"
+  },
+  "dependencies": {
+    "underscore-plus": "1.x",
+    "mkdirp": "~0.3.5",
+    "rimraf": "~2.2.2",
+    "async": "~0.2.9"
+  },
+  "gitHead": "eb4915c02f09427b1bb002b886a9cfc34a262e1f",
+  "_id": "fs-plus@2.8.1",
+  "_shasum": "60bcae0d2066f4bb4726f23add525dada80630f6",
+  "_from": "fs-plus@>=2.5.0 <3.0.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "mcolyer",
+      "email": "matt@colyer.name"
+    },
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "60bcae0d2066f4bb4726f23add525dada80630f6",
+    "tarball": "http://registry.npmjs.org/fs-plus/-/fs-plus-2.8.1.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/fs-plus/-/fs-plus-2.8.1.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/.npmignore b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/.npmignore
new file mode 100644 (file)
index 0000000..3dddf3f
--- /dev/null
@@ -0,0 +1,2 @@
+dist/*
+node_modules/*
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/.travis.yml b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/.travis.yml
new file mode 100644 (file)
index 0000000..ddc9c4f
--- /dev/null
@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+  - 0.8
+  - "0.10"
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/CHANGELOG.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/CHANGELOG.md
new file mode 100644 (file)
index 0000000..2e7ca5d
--- /dev/null
@@ -0,0 +1,194 @@
+# Change Log
+
+## 0.1.43
+
+* Performance improvements for `SourceMapGenerator` and `SourceNode`. See issue
+  #148 for some discussion and issues #150, #151, and #152 for implementations.
+
+## 0.1.42
+
+* Fix an issue where `SourceNode`s from different versions of the source-map
+  library couldn't be used in conjunction with each other. See issue #142.
+
+## 0.1.41
+
+* Fix a bug with getting the source content of relative sources with a "./"
+  prefix. See issue #145 and [Bug 1090768](bugzil.la/1090768).
+
+* Add the `SourceMapConsumer.prototype.computeColumnSpans` method to compute the
+  column span of each mapping.
+
+* Add the `SourceMapConsumer.prototype.allGeneratedPositionsFor` method to find
+  all generated positions associated with a given original source and line.
+
+## 0.1.40
+
+* Performance improvements for parsing source maps in SourceMapConsumer.
+
+## 0.1.39
+
+* Fix a bug where setting a source's contents to null before any source content
+  had been set before threw a TypeError. See issue #131.
+
+## 0.1.38
+
+* Fix a bug where finding relative paths from an empty path were creating
+  absolute paths. See issue #129.
+
+## 0.1.37
+
+* Fix a bug where if the source root was an empty string, relative source paths
+  would turn into absolute source paths. Issue #124.
+
+## 0.1.36
+
+* Allow the `names` mapping property to be an empty string. Issue #121.
+
+## 0.1.35
+
+* A third optional parameter was added to `SourceNode.fromStringWithSourceMap`
+  to specify a path that relative sources in the second parameter should be
+  relative to. Issue #105.
+
+* If no file property is given to a `SourceMapGenerator`, then the resulting
+  source map will no longer have a `null` file property. The property will
+  simply not exist. Issue #104.
+
+* Fixed a bug where consecutive newlines were ignored in `SourceNode`s.
+  Issue #116.
+
+## 0.1.34
+
+* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103.
+
+* Fix bug involving source contents and the
+  `SourceMapGenerator.prototype.applySourceMap`. Issue #100.
+
+## 0.1.33
+
+* Fix some edge cases surrounding path joining and URL resolution.
+
+* Add a third parameter for relative path to
+  `SourceMapGenerator.prototype.applySourceMap`.
+
+* Fix issues with mappings and EOLs.
+
+## 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 issue 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/LICENSE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/LICENSE
new file mode 100644 (file)
index 0000000..ed1b7cf
--- /dev/null
@@ -0,0 +1,28 @@
+
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/Makefile.dryice.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/Makefile.dryice.js
new file mode 100644 (file)
index 0000000..d6fc26a
--- /dev/null
@@ -0,0 +1,166 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/README.md
new file mode 100644 (file)
index 0000000..59767aa
--- /dev/null
@@ -0,0 +1,475 @@
+# 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`: Optional. The generated filename this source map is associated with.
+
+#### SourceMapConsumer.prototype.computeColumnSpans()
+
+Compute the last column for each generated mapping. The last column is
+inclusive.
+
+#### 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.allGeneratedPositionsFor(originalPosition)
+
+Returns all generated line and column information for the original source
+and line 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.
+
+and an array of objects is returned, each 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])
+
+You may pass an object with the following properties:
+
+* `file`: The filename of the generated source that this source map is
+  associated with.
+
+* `sourceRoot`: A root for all relative URLs in this source map.
+
+* `skipValidation`: Optional. When `true`, disables validation of mappings as
+  they are added. This can improve performance but should be used with
+  discretion, as a last resort. Even then, one should avoid using this flag when
+  running tests, if possible.
+
+#### 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[, sourceMapPath]])
+
+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, if it exists.
+  Otherwise an error will be thrown.
+
+* `sourceMapPath`: Optional. The dirname of the path to the SourceMap
+  to be applied. If relative, it is relative to the SourceMap.
+
+  This parameter is needed when the two SourceMaps aren't in the same
+  directory, and the SourceMap to be applied contains relative source
+  paths. If so, those relative source paths need to be rewritten
+  relative to the SourceMap.
+
+  If omitted, it is assumed that both SourceMaps are in the same directory,
+  thus not needing any rewriting. (Supplying `'.'` has the same effect.)
+
+#### 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; null if no filename is provided.
+
+* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see
+  below.
+
+* `name`: Optional. The original identifier.
+
+#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])
+
+Creates a SourceNode from generated code and a SourceMapConsumer.
+
+* `code`: The generated code
+
+* `sourceMapConsumer` The SourceMap for the generated code
+
+* `relativePath` The optional path that relative sources in `sourceMapConsumer`
+  should be relative to.
+
+#### 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-<your new test name>.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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/assert-shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/assert-shim.js
new file mode 100644 (file)
index 0000000..daa1a62
--- /dev/null
@@ -0,0 +1,56 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/mini-require.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/mini-require.js
new file mode 100644 (file)
index 0000000..0daf453
--- /dev/null
@@ -0,0 +1,152 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/prefix-source-map.jsm b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/prefix-source-map.jsm
new file mode 100644 (file)
index 0000000..ee2539d
--- /dev/null
@@ -0,0 +1,20 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/prefix-utils.jsm b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/prefix-utils.jsm
new file mode 100644 (file)
index 0000000..80341d4
--- /dev/null
@@ -0,0 +1,18 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/suffix-browser.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/suffix-browser.js
new file mode 100644 (file)
index 0000000..fb29ff5
--- /dev/null
@@ -0,0 +1,8 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/suffix-source-map.jsm b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/suffix-source-map.jsm
new file mode 100644 (file)
index 0000000..cf3c2d8
--- /dev/null
@@ -0,0 +1,6 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/suffix-utils.jsm b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/suffix-utils.jsm
new file mode 100644 (file)
index 0000000..b31b84c
--- /dev/null
@@ -0,0 +1,21 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/test-prefix.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/test-prefix.js
new file mode 100644 (file)
index 0000000..1b13f30
--- /dev/null
@@ -0,0 +1,8 @@
+/*
+ * 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/test-suffix.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/test-suffix.js
new file mode 100644 (file)
index 0000000..bec2de3
--- /dev/null
@@ -0,0 +1,3 @@
+function run_test() {
+  runSourceMapTests('{THIS_MODULE}', do_throw);
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map.js
new file mode 100644 (file)
index 0000000..121ad24
--- /dev/null
@@ -0,0 +1,8 @@
+/*
+ * 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/array-set.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/array-set.js
new file mode 100644 (file)
index 0000000..40f9a18
--- /dev/null
@@ -0,0 +1,97 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/base64-vlq.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/base64-vlq.js
new file mode 100644 (file)
index 0000000..e22dcae
--- /dev/null
@@ -0,0 +1,142 @@
+/* -*- 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
+   * 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
+   * 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 via the out parameter.
+   */
+  exports.decode = function base64VLQ_decode(aStr, aOutParam) {
+    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);
+
+    aOutParam.value = fromVLQSigned(result);
+    aOutParam.rest = aStr.slice(i);
+  };
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/base64.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/base64.js
new file mode 100644 (file)
index 0000000..863cc46
--- /dev/null
@@ -0,0 +1,42 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/binary-search.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/binary-search.js
new file mode 100644 (file)
index 0000000..e085f81
--- /dev/null
@@ -0,0 +1,80 @@
+/* -*- 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 index of
+    //      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 -1.
+    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 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 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 ? -1 : aLow;
+    }
+  }
+
+  /**
+   * This is an implementation of binary search which will always try and return
+   * the index of 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) {
+    if (aHaystack.length === 0) {
+      return -1;
+    }
+    return recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare)
+  };
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/mapping-list.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/mapping-list.js
new file mode 100644 (file)
index 0000000..2a4eb61
--- /dev/null
@@ -0,0 +1,86 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2014 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');
+
+  /**
+   * Determine whether mappingB is after mappingA with respect to generated
+   * position.
+   */
+  function generatedPositionAfter(mappingA, mappingB) {
+    // Optimized for most common case
+    var lineA = mappingA.generatedLine;
+    var lineB = mappingB.generatedLine;
+    var columnA = mappingA.generatedColumn;
+    var columnB = mappingB.generatedColumn;
+    return lineB > lineA || lineB == lineA && columnB >= columnA ||
+           util.compareByGeneratedPositions(mappingA, mappingB) <= 0;
+  }
+
+  /**
+   * A data structure to provide a sorted view of accumulated mappings in a
+   * performance conscious manner. It trades a neglibable overhead in general
+   * case for a large speedup in case of mappings being added in order.
+   */
+  function MappingList() {
+    this._array = [];
+    this._sorted = true;
+    // Serves as infimum
+    this._last = {generatedLine: -1, generatedColumn: 0};
+  }
+
+  /**
+   * Iterate through internal items. This method takes the same arguments that
+   * `Array.prototype.forEach` takes.
+   *
+   * NOTE: The order of the mappings is NOT guaranteed.
+   */
+  MappingList.prototype.unsortedForEach =
+    function MappingList_forEach(aCallback, aThisArg) {
+      this._array.forEach(aCallback, aThisArg);
+    };
+
+  /**
+   * Add the given source mapping.
+   *
+   * @param Object aMapping
+   */
+  MappingList.prototype.add = function MappingList_add(aMapping) {
+    var mapping;
+    if (generatedPositionAfter(this._last, aMapping)) {
+      this._last = aMapping;
+      this._array.push(aMapping);
+    } else {
+      this._sorted = false;
+      this._array.push(aMapping);
+    }
+  };
+
+  /**
+   * Returns the flat, sorted array of mappings. The mappings are sorted by
+   * generated position.
+   *
+   * WARNING: This method returns internal data without copying, for
+   * performance. The return value must NOT be mutated, and should be treated as
+   * an immutable borrow. If you want to take ownership, you must make your own
+   * copy.
+   */
+  MappingList.prototype.toArray = function MappingList_toArray() {
+    if (!this._sorted) {
+      this._array.sort(util.compareByGeneratedPositions);
+      this._sorted = true;
+    }
+    return this._array;
+  };
+
+  exports.MappingList = MappingList;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-map-consumer.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-map-consumer.js
new file mode 100644 (file)
index 0000000..cfaa299
--- /dev/null
@@ -0,0 +1,575 @@
+/* -*- 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: Optional. 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);
+    }
+
+    // Some source maps produce relative source paths like "./foo.js" instead of
+    // "foo.js".  Normalize these first so that future comparisons will succeed.
+    // See bugzil.la/1090768.
+    sources = sources.map(util.normalize);
+
+    // 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.toArray().slice();
+      smc.__originalMappings = aSourceMap._mappings.toArray().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 != null ? 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;
+    }
+  });
+
+  SourceMapConsumer.prototype._nextCharIsMappingSeparator =
+    function SourceMapConsumer_nextCharIsMappingSeparator(aStr) {
+      var c = aStr.charAt(0);
+      return c === ";" || c === ",";
+    };
+
+  /**
+   * 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 str = aStr;
+      var temp = {};
+      var mapping;
+
+      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.
+          base64VLQ.decode(str, temp);
+          mapping.generatedColumn = previousGeneratedColumn + temp.value;
+          previousGeneratedColumn = mapping.generatedColumn;
+          str = temp.rest;
+
+          if (str.length > 0 && !this._nextCharIsMappingSeparator(str)) {
+            // Original source.
+            base64VLQ.decode(str, temp);
+            mapping.source = this._sources.at(previousSource + temp.value);
+            previousSource += temp.value;
+            str = temp.rest;
+            if (str.length === 0 || this._nextCharIsMappingSeparator(str)) {
+              throw new Error('Found a source, but no line and column');
+            }
+
+            // Original line.
+            base64VLQ.decode(str, temp);
+            mapping.originalLine = previousOriginalLine + temp.value;
+            previousOriginalLine = mapping.originalLine;
+            // Lines are stored 0-based
+            mapping.originalLine += 1;
+            str = temp.rest;
+            if (str.length === 0 || this._nextCharIsMappingSeparator(str)) {
+              throw new Error('Found a source and line, but no column');
+            }
+
+            // Original column.
+            base64VLQ.decode(str, temp);
+            mapping.originalColumn = previousOriginalColumn + temp.value;
+            previousOriginalColumn = mapping.originalColumn;
+            str = temp.rest;
+
+            if (str.length > 0 && !this._nextCharIsMappingSeparator(str)) {
+              // Original name.
+              base64VLQ.decode(str, temp);
+              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);
+    };
+
+  /**
+   * Compute the last column for each generated mapping. The last column is
+   * inclusive.
+   */
+  SourceMapConsumer.prototype.computeColumnSpans =
+    function SourceMapConsumer_computeColumnSpans() {
+      for (var index = 0; index < this._generatedMappings.length; ++index) {
+        var mapping = this._generatedMappings[index];
+
+        // Mappings do not contain a field for the last generated columnt. We
+        // can come up with an optimistic estimate, however, by assuming that
+        // mappings are contiguous (i.e. given two consecutive mappings, the
+        // first mapping ends where the second one starts).
+        if (index + 1 < this._generatedMappings.length) {
+          var nextMapping = this._generatedMappings[index + 1];
+
+          if (mapping.generatedLine === nextMapping.generatedLine) {
+            mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+            continue;
+          }
+        }
+
+        // The last mapping for each line spans the entire line.
+        mapping.lastGeneratedColumn = Infinity;
+      }
+    };
+
+  /**
+   * 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 index = this._findMapping(needle,
+                                    this._generatedMappings,
+                                    "generatedLine",
+                                    "generatedColumn",
+                                    util.compareByGeneratedPositions);
+
+      if (index >= 0) {
+        var mapping = this._generatedMappings[index];
+
+        if (mapping.generatedLine === needle.generatedLine) {
+          var source = util.getArg(mapping, 'source', null);
+          if (source != null && this.sourceRoot != null) {
+            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 != null) {
+        aSource = util.relative(this.sourceRoot, aSource);
+      }
+
+      if (this._sources.has(aSource)) {
+        return this.sourcesContent[this._sources.indexOf(aSource)];
+      }
+
+      var url;
+      if (this.sourceRoot != null
+          && (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 != null) {
+        needle.source = util.relative(this.sourceRoot, needle.source);
+      }
+
+      var index = this._findMapping(needle,
+                                    this._originalMappings,
+                                    "originalLine",
+                                    "originalColumn",
+                                    util.compareByOriginalPositions);
+
+      if (index >= 0) {
+        var mapping = this._originalMappings[index];
+
+        return {
+          line: util.getArg(mapping, 'generatedLine', null),
+          column: util.getArg(mapping, 'generatedColumn', null),
+          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+        };
+      }
+
+      return {
+        line: null,
+        column: null,
+        lastColumn: null
+      };
+    };
+
+  /**
+   * Returns all generated line and column information for the original source
+   * and line 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.
+   *
+   * and an array of objects is returned, each 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.allGeneratedPositionsFor =
+    function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+      // When there is no exact match, SourceMapConsumer.prototype._findMapping
+      // returns the index of the closest mapping less than the needle. By
+      // setting needle.originalColumn to Infinity, we thus find the last
+      // mapping for the given line, provided such a mapping exists.
+      var needle = {
+        source: util.getArg(aArgs, 'source'),
+        originalLine: util.getArg(aArgs, 'line'),
+        originalColumn: Infinity
+      };
+
+      if (this.sourceRoot != null) {
+        needle.source = util.relative(this.sourceRoot, needle.source);
+      }
+
+      var mappings = [];
+
+      var index = this._findMapping(needle,
+                                    this._originalMappings,
+                                    "originalLine",
+                                    "originalColumn",
+                                    util.compareByOriginalPositions);
+      if (index >= 0) {
+        var mapping = this._originalMappings[index];
+
+        while (mapping && mapping.originalLine === needle.originalLine) {
+          mappings.push({
+            line: util.getArg(mapping, 'generatedLine', null),
+            column: util.getArg(mapping, 'generatedColumn', null),
+            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+          });
+
+          mapping = this._originalMappings[--index];
+        }
+      }
+
+      return mappings.reverse();
+    };
+
+  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 != null && sourceRoot != null) {
+          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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-map-generator.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-map-generator.js
new file mode 100644 (file)
index 0000000..1ab7a47
--- /dev/null
@@ -0,0 +1,400 @@
+/* -*- 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;
+  var MappingList = require('./mapping-list').MappingList;
+
+  /**
+   * An instance of the SourceMapGenerator represents a source map which is
+   * being built incrementally. You may pass an object with the following
+   * properties:
+   *
+   *   - file: The filename of the generated source.
+   *   - sourceRoot: A root for all relative URLs in this source map.
+   */
+  function SourceMapGenerator(aArgs) {
+    if (!aArgs) {
+      aArgs = {};
+    }
+    this._file = util.getArg(aArgs, 'file', null);
+    this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+    this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+    this._sources = new ArraySet();
+    this._names = new ArraySet();
+    this._mappings = new MappingList();
+    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 != null) {
+          newMapping.source = mapping.source;
+          if (sourceRoot != null) {
+            newMapping.source = util.relative(sourceRoot, newMapping.source);
+          }
+
+          newMapping.original = {
+            line: mapping.originalLine,
+            column: mapping.originalColumn
+          };
+
+          if (mapping.name != null) {
+            newMapping.name = mapping.name;
+          }
+        }
+
+        generator.addMapping(newMapping);
+      });
+      aSourceMapConsumer.sources.forEach(function (sourceFile) {
+        var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+        if (content != null) {
+          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);
+
+      if (!this._skipValidation) {
+        this._validateMapping(generated, original, source, name);
+      }
+
+      if (source != null && !this._sources.has(source)) {
+        this._sources.add(source);
+      }
+
+      if (name != null && !this._names.has(name)) {
+        this._names.add(name);
+      }
+
+      this._mappings.add({
+        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 != null) {
+        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 if (this._sourcesContents) {
+        // 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.
+   * @param aSourceMapPath Optional. The dirname of the path to the source map
+   *        to be applied. If relative, it is relative to the SourceMapConsumer.
+   *        This parameter is needed when the two source maps aren't in the same
+   *        directory, and the source map to be applied contains relative source
+   *        paths. If so, those relative source paths need to be rewritten
+   *        relative to the SourceMapGenerator.
+   */
+  SourceMapGenerator.prototype.applySourceMap =
+    function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+      var sourceFile = aSourceFile;
+      // If aSourceFile is omitted, we will use the file property of the SourceMap
+      if (aSourceFile == null) {
+        if (aSourceMapConsumer.file == null) {
+          throw new Error(
+            'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+            'or the source map\'s "file" property. Both were omitted.'
+          );
+        }
+        sourceFile = aSourceMapConsumer.file;
+      }
+      var sourceRoot = this._sourceRoot;
+      // Make "sourceFile" relative if an absolute Url is passed.
+      if (sourceRoot != null) {
+        sourceFile = util.relative(sourceRoot, sourceFile);
+      }
+      // 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 "sourceFile"
+      this._mappings.unsortedForEach(function (mapping) {
+        if (mapping.source === sourceFile && mapping.originalLine != null) {
+          // 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
+            mapping.source = original.source;
+            if (aSourceMapPath != null) {
+              mapping.source = util.join(aSourceMapPath, mapping.source)
+            }
+            if (sourceRoot != null) {
+              mapping.source = util.relative(sourceRoot, mapping.source);
+            }
+            mapping.originalLine = original.line;
+            mapping.originalColumn = original.column;
+            if (original.name != null) {
+              mapping.name = original.name;
+            }
+          }
+        }
+
+        var source = mapping.source;
+        if (source != null && !newSources.has(source)) {
+          newSources.add(source);
+        }
+
+        var name = mapping.name;
+        if (name != null && !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 != null) {
+          if (aSourceMapPath != null) {
+            sourceFile = util.join(aSourceMapPath, sourceFile);
+          }
+          if (sourceRoot != null) {
+            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;
+
+      var mappings = this._mappings.toArray();
+
+      for (var i = 0, len = mappings.length; i < len; i++) {
+        mapping = mappings[i];
+
+        if (mapping.generatedLine !== previousGeneratedLine) {
+          previousGeneratedColumn = 0;
+          while (mapping.generatedLine !== previousGeneratedLine) {
+            result += ';';
+            previousGeneratedLine++;
+          }
+        }
+        else {
+          if (i > 0) {
+            if (!util.compareByGeneratedPositions(mapping, mappings[i - 1])) {
+              continue;
+            }
+            result += ',';
+          }
+        }
+
+        result += base64VLQ.encode(mapping.generatedColumn
+                                   - previousGeneratedColumn);
+        previousGeneratedColumn = mapping.generatedColumn;
+
+        if (mapping.source != null) {
+          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 != null) {
+            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 != null) {
+          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,
+        sources: this._sources.toArray(),
+        names: this._names.toArray(),
+        mappings: this._serializeMappings()
+      };
+      if (this._file != null) {
+        map.file = this._file;
+      }
+      if (this._sourceRoot != null) {
+        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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-node.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-node.js
new file mode 100644 (file)
index 0000000..9ee90bd
--- /dev/null
@@ -0,0 +1,414 @@
+/* -*- 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');
+
+  // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+  // operating systems these days (capturing the result).
+  var REGEX_NEWLINE = /(\r?\n)/;
+
+  // Newline character code for charCodeAt() comparisons
+  var NEWLINE_CODE = 10;
+
+  // Private symbol for identifying `SourceNode`s when multiple versions of
+  // the source-map library are loaded. This MUST NOT CHANGE across
+  // versions!
+  var isSourceNode = "$$$isSourceNode$$$";
+
+  /**
+   * 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 == null ? null : aLine;
+    this.column = aColumn == null ? null : aColumn;
+    this.source = aSource == null ? null : aSource;
+    this.name = aName == null ? null : aName;
+    this[isSourceNode] = true;
+    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
+   * @param aRelativePath Optional. The path that relative sources in the
+   *        SourceMapConsumer should be relative to.
+   */
+  SourceNode.fromStringWithSourceMap =
+    function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+      // The SourceNode we want to fill with the generated code
+      // and the SourceMap
+      var node = new SourceNode();
+
+      // All even indices of this array are one line of the generated code,
+      // while all odd indices are the newlines between two adjacent lines
+      // (since `REGEX_NEWLINE` captures its match).
+      // Processed fragments are removed from this array, by calling `shiftNextLine`.
+      var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+      var shiftNextLine = function() {
+        var lineContents = remainingLines.shift();
+        // The last line of a file might not have a newline.
+        var newLine = remainingLines.shift() || "";
+        return lineContents + newLine;
+      };
+
+      // 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 code from "lastMapping" to "mapping":
+          // First check if there is a new line in between.
+          if (lastGeneratedLine < mapping.generatedLine) {
+            var code = "";
+            // Associate first line with "lastMapping"
+            addMappingWithCode(lastMapping, shiftNextLine());
+            lastGeneratedLine++;
+            lastGeneratedColumn = 0;
+            // The remaining code is added without mapping
+          } 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);
+            // No more remaining code, continue
+            lastMapping = mapping;
+            return;
+          }
+        }
+        // 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(shiftNextLine());
+          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;
+        }
+        lastMapping = mapping;
+      }, this);
+      // We have processed all mappings.
+      if (remainingLines.length > 0) {
+        if (lastMapping) {
+          // Associate the remaining code in the current line with "lastMapping"
+          addMappingWithCode(lastMapping, shiftNextLine());
+        }
+        // and add the remaining lines without any mapping
+        node.add(remainingLines.join(""));
+      }
+
+      // Copy sourcesContent into SourceNode
+      aSourceMapConsumer.sources.forEach(function (sourceFile) {
+        var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+        if (content != null) {
+          if (aRelativePath != null) {
+            sourceFile = util.join(aRelativePath, sourceFile);
+          }
+          node.setSourceContent(sourceFile, content);
+        }
+      });
+
+      return node;
+
+      function addMappingWithCode(mapping, code) {
+        if (mapping === null || mapping.source === undefined) {
+          node.add(code);
+        } else {
+          var source = aRelativePath
+            ? util.join(aRelativePath, mapping.source)
+            : mapping.source;
+          node.add(new SourceNode(mapping.originalLine,
+                                  mapping.originalColumn,
+                                  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[isSourceNode] || 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[isSourceNode] || 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[isSourceNode]) {
+        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[isSourceNode]) {
+      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][isSourceNode]) {
+          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;
+      }
+      for (var idx = 0, length = chunk.length; idx < length; idx++) {
+        if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+          generated.line++;
+          generated.column = 0;
+          // Mappings end at eol
+          if (idx + 1 === length) {
+            lastOriginalSource = null;
+            sourceMappingActive = false;
+          } else if (sourceMappingActive) {
+            map.addMapping({
+              source: original.source,
+              original: {
+                line: original.line,
+                column: original.column
+              },
+              generated: {
+                line: generated.line,
+                column: generated.column
+              },
+              name: original.name
+            });
+          }
+        } else {
+          generated.column++;
+        }
+      }
+    });
+    this.walkSourceContents(function (sourceFile, sourceContent) {
+      map.setSourceContent(sourceFile, sourceContent);
+    });
+
+    return { code: generated.code, map: map };
+  };
+
+  exports.SourceNode = SourceNode;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/util.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/util.js
new file mode 100644 (file)
index 0000000..976f6ca
--- /dev/null
@@ -0,0 +1,319 @@
+/* -*- 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[2],
+      host: match[3],
+      port: match[4],
+      path: match[5]
+    };
+  }
+  exports.urlParse = urlParse;
+
+  function urlGenerate(aParsedUrl) {
+    var url = '';
+    if (aParsedUrl.scheme) {
+      url += aParsedUrl.scheme + ':';
+    }
+    url += '//';
+    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;
+
+  /**
+   * Normalizes a path, or the path portion of a URL:
+   *
+   * - Replaces consequtive slashes with one slash.
+   * - Removes unnecessary '.' parts.
+   * - Removes unnecessary '<dir>/..' parts.
+   *
+   * Based on code in the Node.js 'path' core module.
+   *
+   * @param aPath The path or url to normalize.
+   */
+  function normalize(aPath) {
+    var path = aPath;
+    var url = urlParse(aPath);
+    if (url) {
+      if (!url.path) {
+        return aPath;
+      }
+      path = url.path;
+    }
+    var isAbsolute = (path.charAt(0) === '/');
+
+    var parts = path.split(/\/+/);
+    for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+      part = parts[i];
+      if (part === '.') {
+        parts.splice(i, 1);
+      } else if (part === '..') {
+        up++;
+      } else if (up > 0) {
+        if (part === '') {
+          // The first part is blank if the path is absolute. Trying to go
+          // above the root is a no-op. Therefore we can remove all '..' parts
+          // directly after the root.
+          parts.splice(i + 1, up);
+          up = 0;
+        } else {
+          parts.splice(i, 2);
+          up--;
+        }
+      }
+    }
+    path = parts.join('/');
+
+    if (path === '') {
+      path = isAbsolute ? '/' : '.';
+    }
+
+    if (url) {
+      url.path = path;
+      return urlGenerate(url);
+    }
+    return path;
+  }
+  exports.normalize = normalize;
+
+  /**
+   * Joins two paths/URLs.
+   *
+   * @param aRoot The root path or URL.
+   * @param aPath The path or URL to be joined with the root.
+   *
+   * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+   *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+   *   first.
+   * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+   *   is updated with the result and aRoot is returned. Otherwise the result
+   *   is returned.
+   *   - If aPath is absolute, the result is aPath.
+   *   - Otherwise the two paths are joined with a slash.
+   * - Joining for example 'http://' and 'www.example.com' is also supported.
+   */
+  function join(aRoot, aPath) {
+    if (aRoot === "") {
+      aRoot = ".";
+    }
+    if (aPath === "") {
+      aPath = ".";
+    }
+    var aPathUrl = urlParse(aPath);
+    var aRootUrl = urlParse(aRoot);
+    if (aRootUrl) {
+      aRoot = aRootUrl.path || '/';
+    }
+
+    // `join(foo, '//www.example.org')`
+    if (aPathUrl && !aPathUrl.scheme) {
+      if (aRootUrl) {
+        aPathUrl.scheme = aRootUrl.scheme;
+      }
+      return urlGenerate(aPathUrl);
+    }
+
+    if (aPathUrl || aPath.match(dataUrlRegexp)) {
+      return aPath;
+    }
+
+    // `join('http://', 'www.example.com')`
+    if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+      aRootUrl.host = aPath;
+      return urlGenerate(aRootUrl);
+    }
+
+    var joined = aPath.charAt(0) === '/'
+      ? aPath
+      : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+    if (aRootUrl) {
+      aRootUrl.path = joined;
+      return urlGenerate(aRootUrl);
+    }
+    return joined;
+  }
+  exports.join = join;
+
+  /**
+   * Make a path relative to a URL or another path.
+   *
+   * @param aRoot The root path or URL.
+   * @param aPath The path or URL to be made relative to aRoot.
+   */
+  function relative(aRoot, aPath) {
+    if (aRoot === "") {
+      aRoot = ".";
+    }
+
+    aRoot = aRoot.replace(/\/$/, '');
+
+    // XXX: It is possible to remove this block, and the tests still pass!
+    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;
+
+  /**
+   * 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 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/LICENSE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/LICENSE
new file mode 100644 (file)
index 0000000..f33d665
--- /dev/null
@@ -0,0 +1,58 @@
+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, 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, 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/README.md
new file mode 100644 (file)
index 0000000..037a6e8
--- /dev/null
@@ -0,0 +1,171 @@
+# 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. <a name="optimizer"></name>
+
+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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/amdefine.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/amdefine.js
new file mode 100644 (file)
index 0000000..93f140e
--- /dev/null
@@ -0,0 +1,301 @@
+/** vim: et:ts=4:sw=4:sts=4
+ * @license amdefine 0.1.0 Copyright (c) 2011, 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/intercept.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/intercept.js
new file mode 100644 (file)
index 0000000..771a983
--- /dev/null
@@ -0,0 +1,36 @@
+/*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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/package.json
new file mode 100644 (file)
index 0000000..d7fead3
--- /dev/null
@@ -0,0 +1,45 @@
+{
+  "name": "amdefine",
+  "description": "Provide AMD's define() API for declaring modules in the AMD format",
+  "version": "0.1.1",
+  "homepage": "http://github.com/jrburke/amdefine",
+  "author": {
+    "name": "James Burke",
+    "email": "jrburke@gmail.com",
+    "url": "http://github.com/jrburke"
+  },
+  "license": "BSD-3-Clause AND MIT",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/jrburke/amdefine.git"
+  },
+  "main": "./amdefine.js",
+  "engines": {
+    "node": ">=0.4.2"
+  },
+  "gitHead": "fcadcc8080f47084b973bac3b3c4b3dd3e0f957d",
+  "bugs": {
+    "url": "https://github.com/jrburke/amdefine/issues"
+  },
+  "_id": "amdefine@0.1.1",
+  "scripts": {},
+  "_shasum": "b5c75c532052dccd6a39c0064c772c8d57a06cd2",
+  "_from": "amdefine@>=0.0.4",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "jrburke",
+    "email": "jrburke@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "jrburke",
+      "email": "jrburke@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "b5c75c532052dccd6a39c0064c772c8d57a06cd2",
+    "tarball": "http://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/package.json
new file mode 100644 (file)
index 0000000..b840ac5
--- /dev/null
@@ -0,0 +1,185 @@
+{
+  "name": "source-map",
+  "description": "Generates and consumes source maps",
+  "version": "0.1.43",
+  "homepage": "https://github.com/mozilla/source-map",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    }
+  ],
+  "repository": {
+    "type": "git",
+    "url": "http://github.com/mozilla/source-map.git"
+  },
+  "directories": {
+    "lib": "./lib"
+  },
+  "main": "./lib/source-map.js",
+  "engines": {
+    "node": ">=0.8.0"
+  },
+  "licenses": [
+    {
+      "type": "BSD",
+      "url": "http://opensource.org/licenses/BSD-3-Clause"
+    }
+  ],
+  "dependencies": {
+    "amdefine": ">=0.0.4"
+  },
+  "devDependencies": {
+    "dryice": ">=0.4.8"
+  },
+  "scripts": {
+    "test": "node test/run-tests.js",
+    "build": "node Makefile.dryice.js"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "_id": "source-map@0.1.43",
+  "_shasum": "c24bc146ca517c1471f5dacbe2571b2b7f9e3346",
+  "_from": "source-map@>=0.1.43 <0.2.0",
+  "_npmVersion": "1.4.9",
+  "_npmUser": {
+    "name": "nickfitzgerald",
+    "email": "fitzgen@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "mozilla-devtools",
+      "email": "mozilla-developer-tools@googlegroups.com"
+    },
+    {
+      "name": "mozilla",
+      "email": "dherman@mozilla.com"
+    },
+    {
+      "name": "nickfitzgerald",
+      "email": "fitzgen@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "c24bc146ca517c1471f5dacbe2571b2b7f9e3346",
+    "tarball": "http://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz"
+  },
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/run-tests.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/run-tests.js
new file mode 100755 (executable)
index 0000000..64a7c3a
--- /dev/null
@@ -0,0 +1,62 @@
+#!/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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-api.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-api.js
new file mode 100644 (file)
index 0000000..3801233
--- /dev/null
@@ -0,0 +1,26 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-array-set.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-array-set.js
new file mode 100644 (file)
index 0000000..b5797ed
--- /dev/null
@@ -0,0 +1,104 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-base64-vlq.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-base64-vlq.js
new file mode 100644 (file)
index 0000000..6fd0d99
--- /dev/null
@@ -0,0 +1,23 @@
+/* -*- 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++) {
+      base64VLQ.decode(base64VLQ.encode(i), result);
+      assert.equal(result.value, i);
+      assert.equal(result.rest, "");
+    }
+  };
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-base64.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-base64.js
new file mode 100644 (file)
index 0000000..ff3a244
--- /dev/null
@@ -0,0 +1,35 @@
+/* -*- 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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-binary-search.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-binary-search.js
new file mode 100644 (file)
index 0000000..f1c9e0f
--- /dev/null
@@ -0,0 +1,54 @@
+/* -*- 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(haystack[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), -1);
+  };
+
+  exports['test exact search'] = function (assert, util) {
+    var needle = 4;
+    var haystack = [2,4,6,8,10,12,14,16,18,20];
+
+    assert.equal(haystack[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(haystack[binarySearch.search(needle, haystack, numberCompare)], 18);
+  };
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-dog-fooding.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-dog-fooding.js
new file mode 100644 (file)
index 0000000..26757b2
--- /dev/null
@@ -0,0 +1,84 @@
+/* -*- 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 }
+    });
+
+    smg.addMapping({
+      source: 'gza.coffee',
+      original: { line: 5, column: 10 },
+      generated: { line: 6, column: 12 }
+    });
+
+    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);
+    util.assertMapping(6, 12, '/wu/tang/gza.coffee', 5, 10, null, smc, assert);
+
+    // Fuzzy
+
+    // Generated to original
+    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, null, null, null, null, smc, assert, true);
+    util.assertMapping(3, 9, '/wu/tang/gza.coffee', 2, 0, null, smc, assert, true);
+    util.assertMapping(4, 0, null, null, null, null, smc, assert, true);
+    util.assertMapping(4, 9, '/wu/tang/gza.coffee', 3, 0, null, smc, assert, true);
+    util.assertMapping(5, 0, null, null, null, null, smc, assert, true);
+    util.assertMapping(5, 9, '/wu/tang/gza.coffee', 4, 0, null, smc, assert, true);
+    util.assertMapping(6, 0, null, null, null, null, smc, assert, true);
+    util.assertMapping(6, 9, null, null, null, null, smc, assert, true);
+    util.assertMapping(6, 13, '/wu/tang/gza.coffee', 5, 10, null, smc, assert, true);
+
+    // Original to generated
+    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);
+    util.assertMapping(5, 2, '/wu/tang/gza.coffee', 5, 9, null, smc, assert, null, true);
+    util.assertMapping(6, 12, '/wu/tang/gza.coffee', 6, 19, null, smc, assert, null, true);
+  };
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-source-map-consumer.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-source-map-consumer.js
new file mode 100644 (file)
index 0000000..c714943
--- /dev/null
@@ -0,0 +1,702 @@
+/* -*- 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 object'] = 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;
+    var sources;
+
+    map = new SourceMapConsumer(util.testMap);
+    sources = map.sources;
+    assert.equal(sources[0], '/the/root/one.js');
+    assert.equal(sources[1], '/the/root/two.js');
+    assert.equal(sources.length, 2);
+
+    map = new SourceMapConsumer(util.testMapNoSourceRoot);
+    sources = map.sources;
+    assert.equal(sources[0], 'one.js');
+    assert.equal(sources[1], 'two.js');
+    assert.equal(sources.length, 2);
+
+    map = new SourceMapConsumer(util.testMapEmptySourceRoot);
+    sources = map.sources;
+    assert.equal(sources[0], 'one.js');
+    assert.equal(sources[1], '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;
+    var mapping;
+
+    map = new SourceMapConsumer(util.testMap);
+
+    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');
+
+
+    map = new SourceMapConsumer(util.testMapNoSourceRoot);
+
+    mapping = map.originalPositionFor({
+      line: 2,
+      column: 1
+    });
+    assert.equal(mapping.source, 'two.js');
+
+    mapping = map.originalPositionFor({
+      line: 1,
+      column: 1
+    });
+    assert.equal(mapping.source, 'one.js');
+
+
+    map = new SourceMapConsumer(util.testMapEmptySourceRoot);
+
+    mapping = map.originalPositionFor({
+      line: 2,
+      column: 1
+    });
+    assert.equal(mapping.source, 'two.js');
+
+    mapping = map.originalPositionFor({
+      line: 1,
+      column: 1
+    });
+    assert.equal(mapping.source, '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 mappings and end of lines'] = function (assert, util) {
+    var smg = new SourceMapGenerator({
+      file: 'foo.js'
+    });
+    smg.addMapping({
+      original: { line: 1, column: 1 },
+      generated: { line: 1, column: 1 },
+      source: 'bar.js'
+    });
+    smg.addMapping({
+      original: { line: 2, column: 2 },
+      generated: { line: 2, column: 2 },
+      source: 'bar.js'
+    });
+
+    var map = SourceMapConsumer.fromSourceMap(smg);
+
+    // When finding original positions, mappings end at the end of the line.
+    util.assertMapping(2, 1, null, null, null, null, map, assert, true)
+
+    // When finding generated positions, mappings do not end at the end of the line.
+    util.assertMapping(1, 1, 'bar.js', 2, 1, 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;
+
+    map = new SourceMapConsumer(util.testMap);
+    var previousLine = -Infinity;
+    var previousColumn = -Infinity;
+    map.eachMapping(function (mapping) {
+      assert.ok(mapping.generatedLine >= previousLine);
+
+      assert.ok(mapping.source === '/the/root/one.js' || mapping.source === '/the/root/two.js');
+
+      if (mapping.generatedLine === previousLine) {
+        assert.ok(mapping.generatedColumn >= previousColumn);
+        previousColumn = mapping.generatedColumn;
+      }
+      else {
+        previousLine = mapping.generatedLine;
+        previousColumn = -Infinity;
+      }
+    });
+
+    map = new SourceMapConsumer(util.testMapNoSourceRoot);
+    map.eachMapping(function (mapping) {
+      assert.ok(mapping.source === 'one.js' || mapping.source === 'two.js');
+    });
+
+    map = new SourceMapConsumer(util.testMapEmptySourceRoot);
+    map.eachMapping(function (mapping) {
+      assert.ok(mapping.source === 'one.js' || mapping.source === 'two.js');
+    });
+  };
+
+  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 that we can get the original source content with relative source paths'] = function (assert, util) {
+    var map = new SourceMapConsumer(util.testMapRelativeSources);
+    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 allGeneratedPositionsFor'] = function (assert, util) {
+    var map = new SourceMapGenerator({
+      file: 'generated.js'
+    });
+    map.addMapping({
+      original: { line: 1, column: 1 },
+      generated: { line: 2, column: 2 },
+      source: 'foo.coffee'
+    });
+    map.addMapping({
+      original: { line: 1, column: 1 },
+      generated: { line: 2, column: 2 },
+      source: 'bar.coffee'
+    });
+    map.addMapping({
+      original: { line: 2, column: 1 },
+      generated: { line: 3, column: 2 },
+      source: 'bar.coffee'
+    });
+    map.addMapping({
+      original: { line: 2, column: 2 },
+      generated: { line: 3, column: 3 },
+      source: 'bar.coffee'
+    });
+    map.addMapping({
+      original: { line: 3, column: 1 },
+      generated: { line: 4, column: 2 },
+      source: 'bar.coffee'
+    });
+    map = new SourceMapConsumer(map.toString());
+
+    var mappings = map.allGeneratedPositionsFor({
+      line: 2,
+      source: 'bar.coffee'
+    });
+
+    assert.equal(mappings.length, 2);
+    assert.equal(mappings[0].line, 3);
+    assert.equal(mappings[0].column, 2);
+    assert.equal(mappings[1].line, 3);
+    assert.equal(mappings[1].column, 3);
+  };
+
+  exports['test allGeneratedPositionsFor for line with no mappings'] = function (assert, util) {
+    var map = new SourceMapGenerator({
+      file: 'generated.js'
+    });
+    map.addMapping({
+      original: { line: 1, column: 1 },
+      generated: { line: 2, column: 2 },
+      source: 'foo.coffee'
+    });
+    map.addMapping({
+      original: { line: 1, column: 1 },
+      generated: { line: 2, column: 2 },
+      source: 'bar.coffee'
+    });
+    map.addMapping({
+      original: { line: 3, column: 1 },
+      generated: { line: 4, column: 2 },
+      source: 'bar.coffee'
+    });
+    map = new SourceMapConsumer(map.toString());
+
+    var mappings = map.allGeneratedPositionsFor({
+      line: 2,
+      source: 'bar.coffee'
+    });
+
+    assert.equal(mappings.length, 0);
+  };
+
+  exports['test allGeneratedPositionsFor source map with no mappings'] = function (assert, util) {
+    var map = new SourceMapGenerator({
+      file: 'generated.js'
+    });
+    map = new SourceMapConsumer(map.toString());
+
+    var mappings = map.allGeneratedPositionsFor({
+      line: 2,
+      source: 'bar.coffee'
+    });
+
+    assert.equal(mappings.length, 0);
+  };
+
+  exports['test computeColumnSpans'] = function (assert, util) {
+    var map = new SourceMapGenerator({
+      file: 'generated.js'
+    });
+    map.addMapping({
+      original: { line: 1, column: 1 },
+      generated: { line: 1, column: 1 },
+      source: 'foo.coffee'
+    });
+    map.addMapping({
+      original: { line: 2, column: 1 },
+      generated: { line: 2, column: 1 },
+      source: 'foo.coffee'
+    });
+    map.addMapping({
+      original: { line: 2, column: 2 },
+      generated: { line: 2, column: 10 },
+      source: 'foo.coffee'
+    });
+    map.addMapping({
+      original: { line: 2, column: 3 },
+      generated: { line: 2, column: 20 },
+      source: 'foo.coffee'
+    });
+    map.addMapping({
+      original: { line: 3, column: 1 },
+      generated: { line: 3, column: 1 },
+      source: 'foo.coffee'
+    });
+    map.addMapping({
+      original: { line: 3, column: 2 },
+      generated: { line: 3, column: 2 },
+      source: 'foo.coffee'
+    });
+    map = new SourceMapConsumer(map.toString());
+
+    map.computeColumnSpans();
+
+    var mappings = map.allGeneratedPositionsFor({
+      line: 1,
+      source: 'foo.coffee'
+    });
+
+    assert.equal(mappings.length, 1);
+    assert.equal(mappings[0].lastColumn, Infinity);
+
+    var mappings = map.allGeneratedPositionsFor({
+      line: 2,
+      source: 'foo.coffee'
+    });
+
+    assert.equal(mappings.length, 3);
+    assert.equal(mappings[0].lastColumn, 9);
+    assert.equal(mappings[1].lastColumn, 19);
+    assert.equal(mappings[2].lastColumn, Infinity);
+
+    var mappings = map.allGeneratedPositionsFor({
+      line: 3,
+      source: 'foo.coffee'
+    });
+
+    assert.equal(mappings.length, 2);
+    assert.equal(mappings[0].lastColumn, 1);
+    assert.equal(mappings[1].lastColumn, Infinity);
+  };
+
+  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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-source-map-generator.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-source-map-generator.js
new file mode 100644 (file)
index 0000000..d748bb1
--- /dev/null
@@ -0,0 +1,679 @@
+/* -*- 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);
+
+    var map = new SourceMapGenerator().toJSON();
+    assert.ok(!('file' in map));
+    assert.ok(!('sourceRoot' in map));
+  };
+
+  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 adding mappings with skipValidation'] = function (assert, util) {
+    var map = new SourceMapGenerator({
+      file: 'generated-foo.js',
+      sourceRoot: '.',
+      skipValidation: true
+    });
+
+    // Not enough info, caught by `util.getArgs`
+    assert.throws(function () {
+      map.addMapping({});
+    });
+
+    // Original file position, but no source. Not checked.
+    assert.doesNotThrow(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 adding a mapping with an empty string name does not break generation'] = function (assert, util) {
+    var map = new SourceMapGenerator({
+      file: 'generated-foo.js',
+      sourceRoot: '.'
+    });
+
+    map.addMapping({
+      generated: { line: 1, column: 1 },
+      source: 'bar.js',
+      original: { line: 1, column: 1 },
+      name: ''
+    });
+
+    assert.doesNotThrow(function () {
+      JSON.parse(map.toString());
+    });
+  };
+
+  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 applySourceMap throws when file is missing'] = function (assert, util) {
+    var map = new SourceMapGenerator({
+      file: 'test.js'
+    });
+    var map2 = new SourceMapGenerator();
+    assert.throws(function() {
+      map.applySourceMap(new SourceMapConsumer(map2.toJSON()));
+    });
+  };
+
+  exports['test the two additional parameters of applySourceMap'] = function (assert, util) {
+    // Assume the following directory structure:
+    //
+    // http://foo.org/
+    //   bar.coffee
+    //   app/
+    //     coffee/
+    //       foo.coffee
+    //     temp/
+    //       bundle.js
+    //       temp_maps/
+    //         bundle.js.map
+    //     public/
+    //       bundle.min.js
+    //       bundle.min.js.map
+    //
+    // http://www.example.com/
+    //   baz.coffee
+
+    var bundleMap = new SourceMapGenerator({
+      file: 'bundle.js'
+    });
+    bundleMap.addMapping({
+      generated: { line: 3, column: 3 },
+      original: { line: 2, column: 2 },
+      source: '../../coffee/foo.coffee'
+    });
+    bundleMap.setSourceContent('../../coffee/foo.coffee', 'foo coffee');
+    bundleMap.addMapping({
+      generated: { line: 13, column: 13 },
+      original: { line: 12, column: 12 },
+      source: '/bar.coffee'
+    });
+    bundleMap.setSourceContent('/bar.coffee', 'bar coffee');
+    bundleMap.addMapping({
+      generated: { line: 23, column: 23 },
+      original: { line: 22, column: 22 },
+      source: 'http://www.example.com/baz.coffee'
+    });
+    bundleMap.setSourceContent(
+      'http://www.example.com/baz.coffee',
+      'baz coffee'
+    );
+    bundleMap = new SourceMapConsumer(bundleMap.toJSON());
+
+    var minifiedMap = new SourceMapGenerator({
+      file: 'bundle.min.js',
+      sourceRoot: '..'
+    });
+    minifiedMap.addMapping({
+      generated: { line: 1, column: 1 },
+      original: { line: 3, column: 3 },
+      source: 'temp/bundle.js'
+    });
+    minifiedMap.addMapping({
+      generated: { line: 11, column: 11 },
+      original: { line: 13, column: 13 },
+      source: 'temp/bundle.js'
+    });
+    minifiedMap.addMapping({
+      generated: { line: 21, column: 21 },
+      original: { line: 23, column: 23 },
+      source: 'temp/bundle.js'
+    });
+    minifiedMap = new SourceMapConsumer(minifiedMap.toJSON());
+
+    var expectedMap = function (sources) {
+      var map = new SourceMapGenerator({
+        file: 'bundle.min.js',
+        sourceRoot: '..'
+      });
+      map.addMapping({
+        generated: { line: 1, column: 1 },
+        original: { line: 2, column: 2 },
+        source: sources[0]
+      });
+      map.setSourceContent(sources[0], 'foo coffee');
+      map.addMapping({
+        generated: { line: 11, column: 11 },
+        original: { line: 12, column: 12 },
+        source: sources[1]
+      });
+      map.setSourceContent(sources[1], 'bar coffee');
+      map.addMapping({
+        generated: { line: 21, column: 21 },
+        original: { line: 22, column: 22 },
+        source: sources[2]
+      });
+      map.setSourceContent(sources[2], 'baz coffee');
+      return map.toJSON();
+    }
+
+    var actualMap = function (aSourceMapPath) {
+      var map = SourceMapGenerator.fromSourceMap(minifiedMap);
+      // Note that relying on `bundleMap.file` (which is simply 'bundle.js')
+      // instead of supplying the second parameter wouldn't work here.
+      map.applySourceMap(bundleMap, '../temp/bundle.js', aSourceMapPath);
+      return map.toJSON();
+    }
+
+    util.assertEqualMaps(assert, actualMap('../temp/temp_maps'), expectedMap([
+      'coffee/foo.coffee',
+      '/bar.coffee',
+      'http://www.example.com/baz.coffee'
+    ]));
+
+    util.assertEqualMaps(assert, actualMap('/app/temp/temp_maps'), expectedMap([
+      '/app/coffee/foo.coffee',
+      '/bar.coffee',
+      'http://www.example.com/baz.coffee'
+    ]));
+
+    util.assertEqualMaps(assert, actualMap('http://foo.org/app/temp/temp_maps'), expectedMap([
+      'http://foo.org/app/coffee/foo.coffee',
+      'http://foo.org/bar.coffee',
+      'http://www.example.com/baz.coffee'
+    ]));
+
+    // If the third parameter is omitted or set to the current working
+    // directory we get incorrect source paths:
+
+    util.assertEqualMaps(assert, actualMap(), expectedMap([
+      '../coffee/foo.coffee',
+      '/bar.coffee',
+      'http://www.example.com/baz.coffee'
+    ]));
+
+    util.assertEqualMaps(assert, actualMap(''), expectedMap([
+      '../coffee/foo.coffee',
+      '/bar.coffee',
+      'http://www.example.com/baz.coffee'
+    ]));
+
+    util.assertEqualMaps(assert, actualMap('.'), expectedMap([
+      '../coffee/foo.coffee',
+      '/bar.coffee',
+      'http://www.example.com/baz.coffee'
+    ]));
+
+    util.assertEqualMaps(assert, actualMap('./'), expectedMap([
+      '../coffee/foo.coffee',
+      '/bar.coffee',
+      'http://www.example.com/baz.coffee'
+    ]));
+  };
+
+  exports['test applySourceMap name handling'] = function (assert, util) {
+    // Imagine some CoffeeScript code being compiled into JavaScript and then
+    // minified.
+
+    var assertName = function(coffeeName, jsName, expectedName) {
+      var minifiedMap = new SourceMapGenerator({
+        file: 'test.js.min'
+      });
+      minifiedMap.addMapping({
+        generated: { line: 1, column: 4 },
+        original: { line: 1, column: 4 },
+        source: 'test.js',
+        name: jsName
+      });
+
+      var coffeeMap = new SourceMapGenerator({
+        file: 'test.js'
+      });
+      coffeeMap.addMapping({
+        generated: { line: 1, column: 4 },
+        original: { line: 1, column: 0 },
+        source: 'test.coffee',
+        name: coffeeName
+      });
+
+      minifiedMap.applySourceMap(new SourceMapConsumer(coffeeMap.toJSON()));
+
+      new SourceMapConsumer(minifiedMap.toJSON()).eachMapping(function(mapping) {
+        assert.equal(mapping.name, expectedName);
+      });
+    };
+
+    // `foo = 1` -> `var foo = 1;` -> `var a=1`
+    // CoffeeScript doesn’t rename variables, so there’s no need for it to
+    // provide names in its source maps. Minifiers do rename variables and
+    // therefore do provide names in their source maps. So that name should be
+    // retained if the original map lacks names.
+    assertName(null, 'foo', 'foo');
+
+    // `foo = 1` -> `var coffee$foo = 1;` -> `var a=1`
+    // Imagine that CoffeeScript prefixed all variables with `coffee$`. Even
+    // though the minifier then also provides a name, the original name is
+    // what corresponds to the source.
+    assertName('foo', 'coffee$foo', 'foo');
+
+    // `foo = 1` -> `var coffee$foo = 1;` -> `var coffee$foo=1`
+    // Minifiers can turn off variable mangling. Then there’s no need to
+    // provide names in the source map, but the names from the original map are
+    // still needed.
+    assertName('foo', null, 'foo');
+
+    // `foo = 1` -> `var foo = 1;` -> `var foo=1`
+    // No renaming at all.
+    assertName(null, null, null);
+  };
+
+  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'
+    });
+  };
+
+  exports['test setting sourcesContent to null when already null'] = function (assert, util) {
+    var smg = new SourceMapGenerator({ file: "foo.js" });
+    assert.doesNotThrow(function() {
+      smg.setSourceContent("bar.js", null);
+    });
+  };
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-source-node.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-source-node.js
new file mode 100644 (file)
index 0000000..139af4e
--- /dev/null
@@ -0,0 +1,612 @@
+/* -*- 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;
+
+  function forEachNewline(fn) {
+    return function (assert, util) {
+      ['\n', '\r\n'].forEach(fn.bind(null, assert, util));
+    }
+  }
+
+  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()'] = forEachNewline(function (assert, util, nl) {
+    var node = new SourceNode(null, null, null,
+                              ['(function () {' + nl,
+                               '  ',
+                                 new SourceNode(1, 0, 'a.js', 'someCall', 'originalCall'),
+                                 new SourceNode(1, 8, 'a.js', '()'),
+                                 ';' + nl,
+                               '  ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';' + nl,
+                               '}());']);
+    var result = node.toStringWithSourceMap({
+      file: 'foo.js'
+    });
+
+    assert.equal(result.code, [
+      '(function () {',
+      '  someCall();',
+      '  if (foo) bar();',
+      '}());'
+    ].join(nl));
+
+    var map = result.map;
+    var mapWithoutOptions = node.toStringWithSourceMap().map;
+
+    assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator');
+    assert.ok(mapWithoutOptions instanceof SourceMapGenerator, 'mapWithoutOptions instanceof SourceMapGenerator');
+    assert.ok(!('file' in mapWithoutOptions));
+    mapWithoutOptions._file = 'foo.js';
+    util.assertEqualMaps(assert, map.toJSON(), mapWithoutOptions.toJSON());
+
+    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()'] = forEachNewline(function (assert, util, nl) {
+    var testCode = util.testGeneratedCode.replace(/\n/g, nl);
+    var node = SourceNode.fromStringWithSourceMap(
+                              testCode,
+                              new SourceMapConsumer(util.testMap));
+
+    var result = node.toStringWithSourceMap({
+      file: 'min.js'
+    });
+    var map = result.map;
+    var code = result.code;
+
+    assert.equal(code, testCode);
+    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'] = forEachNewline(function (assert, util, nl) {
+    var node = SourceNode.fromStringWithSourceMap(
+                              util.testGeneratedCode.replace(/\n/g, nl),
+                              new SourceMapConsumer(util.emptyMap));
+    var result = node.toStringWithSourceMap({
+      file: 'min.js'
+    });
+    var map = result.map;
+    var code = result.code;
+
+    assert.equal(code, util.testGeneratedCode.replace(/\n/g, nl));
+    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'] = forEachNewline(function (assert, util, nl) {
+    var input = new SourceNode(null, null, null, [
+      "(function() {" + nl,
+        "  var Test = {};" + nl,
+        "  ", new SourceNode(1, 0, "a.js", "Test.A = { value: 1234 };" + nl),
+        "  ", new SourceNode(2, 0, "a.js", "Test.A.x = 'xyz';"), nl,
+        "}());" + nl,
+        "/* 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() third argument'] = function (assert, util) {
+    // Assume the following directory structure:
+    //
+    // http://foo.org/
+    //   bar.coffee
+    //   app/
+    //     coffee/
+    //       foo.coffee
+    //       coffeeBundle.js # Made from {foo,bar,baz}.coffee
+    //       maps/
+    //         coffeeBundle.js.map
+    //     js/
+    //       foo.js
+    //     public/
+    //       app.js # Made from {foo,coffeeBundle}.js
+    //       app.js.map
+    //
+    // http://www.example.com/
+    //   baz.coffee
+
+    var coffeeBundle = new SourceNode(1, 0, 'foo.coffee', 'foo(coffee);\n');
+    coffeeBundle.setSourceContent('foo.coffee', 'foo coffee');
+    coffeeBundle.add(new SourceNode(2, 0, '/bar.coffee', 'bar(coffee);\n'));
+    coffeeBundle.add(new SourceNode(3, 0, 'http://www.example.com/baz.coffee', 'baz(coffee);'));
+    coffeeBundle = coffeeBundle.toStringWithSourceMap({
+      file: 'foo.js',
+      sourceRoot: '..'
+    });
+
+    var foo = new SourceNode(1, 0, 'foo.js', 'foo(js);');
+
+    var test = function(relativePath, expectedSources) {
+      var app = new SourceNode();
+      app.add(SourceNode.fromStringWithSourceMap(
+                                coffeeBundle.code,
+                                new SourceMapConsumer(coffeeBundle.map.toString()),
+                                relativePath));
+      app.add(foo);
+      var i = 0;
+      app.walk(function (chunk, loc) {
+        assert.equal(loc.source, expectedSources[i]);
+        i++;
+      });
+      app.walkSourceContents(function (sourceFile, sourceContent) {
+        assert.equal(sourceFile, expectedSources[0]);
+        assert.equal(sourceContent, 'foo coffee');
+      })
+    };
+
+    test('../coffee/maps', [
+      '../coffee/foo.coffee',
+      '/bar.coffee',
+      'http://www.example.com/baz.coffee',
+      'foo.js'
+    ]);
+
+    // If the third parameter is omitted or set to the current working
+    // directory we get incorrect source paths:
+
+    test(undefined, [
+      '../foo.coffee',
+      '/bar.coffee',
+      'http://www.example.com/baz.coffee',
+      'foo.js'
+    ]);
+
+    test('', [
+      '../foo.coffee',
+      '/bar.coffee',
+      'http://www.example.com/baz.coffee',
+      'foo.js'
+    ]);
+
+    test('.', [
+      '../foo.coffee',
+      '/bar.coffee',
+      'http://www.example.com/baz.coffee',
+      'foo.js'
+    ]);
+
+    test('./', [
+      '../foo.coffee',
+      '/bar.coffee',
+      'http://www.example.com/baz.coffee',
+      'foo.js'
+    ]);
+  };
+
+  exports['test .toStringWithSourceMap() merging duplicate mappings'] = forEachNewline(function (assert, util, nl) {
+    var input = new SourceNode(null, null, null, [
+      new SourceNode(1, 0, "a.js", "(function"),
+      new SourceNode(1, 0, "a.js", "() {" + nl),
+      "  ",
+      new SourceNode(1, 0, "a.js", "var Test = "),
+      new SourceNode(1, 0, "b.js", "{};" + nl),
+      new SourceNode(2, 0, "b.js", "Test"),
+      new SourceNode(2, 0, "b.js", ".A", "A"),
+      new SourceNode(2, 20, "b.js", " = { value: ", "A"),
+      "1234",
+      new SourceNode(2, 40, "b.js", " };" + nl, "A"),
+      "}());" + nl,
+      "/* Generated Source */"
+    ]);
+    input = input.toStringWithSourceMap({
+      file: 'foo.js'
+    });
+
+    assert.equal(input.code, [
+      "(function() {",
+      "  var Test = {};",
+      "Test.A = { value: 1234 };",
+      "}());",
+      "/* Generated Source */"
+    ].join(nl))
+
+    var correctMap = new SourceMapGenerator({
+      file: 'foo.js'
+    });
+    correctMap.addMapping({
+      generated: { line: 1, column: 0 },
+      source: 'a.js',
+      original: { line: 1, column: 0 }
+    });
+    // Here is no need for a empty mapping,
+    // because mappings ends at eol
+    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 }
+    });
+    // This empty mapping is required,
+    // because there is a hole in the middle of the line
+    correctMap.addMapping({
+      generated: { line: 3, column: 18 }
+    });
+    correctMap.addMapping({
+      generated: { line: 3, column: 22 },
+      source: 'b.js',
+      name: 'A',
+      original: { line: 2, column: 40 }
+    });
+    // Here is no need for a empty mapping,
+    // because mappings ends at eol
+
+    var inputMap = input.map.toJSON();
+    correctMap = correctMap.toJSON();
+    util.assertEqualMaps(assert, inputMap, correctMap);
+  });
+
+  exports['test .toStringWithSourceMap() multi-line SourceNodes'] = forEachNewline(function (assert, util, nl) {
+    var input = new SourceNode(null, null, null, [
+      new SourceNode(1, 0, "a.js", "(function() {" + nl + "var nextLine = 1;" + nl + "anotherLine();" + nl),
+      new SourceNode(2, 2, "b.js", "Test.call(this, 123);" + nl),
+      new SourceNode(2, 2, "b.js", "this['stuff'] = 'v';" + nl),
+      new SourceNode(2, 2, "b.js", "anotherLine();" + nl),
+      "/*" + nl + "Generated" + nl + "Source" + nl + "*/" + nl,
+      new SourceNode(3, 4, "c.js", "anotherLine();" + nl),
+      "/*" + nl + "Generated" + nl + "Source" + nl + "*/"
+    ]);
+    input = input.toStringWithSourceMap({
+      file: 'foo.js'
+    });
+
+    assert.equal(input.code, [
+      "(function() {",
+      "var nextLine = 1;",
+      "anotherLine();",
+      "Test.call(this, 123);",
+      "this['stuff'] = 'v';",
+      "anotherLine();",
+      "/*",
+      "Generated",
+      "Source",
+      "*/",
+      "anotherLine();",
+      "/*",
+      "Generated",
+      "Source",
+      "*/"
+    ].join(nl));
+
+    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 },
+      source: 'a.js',
+      original: { line: 1, column: 0 }
+    });
+    correctMap.addMapping({
+      generated: { line: 3, column: 0 },
+      source: 'a.js',
+      original: { line: 1, column: 0 }
+    });
+    correctMap.addMapping({
+      generated: { line: 4, column: 0 },
+      source: 'b.js',
+      original: { line: 2, column: 2 }
+    });
+    correctMap.addMapping({
+      generated: { line: 5, column: 0 },
+      source: 'b.js',
+      original: { line: 2, column: 2 }
+    });
+    correctMap.addMapping({
+      generated: { line: 6, column: 0 },
+      source: 'b.js',
+      original: { line: 2, column: 2 }
+    });
+    correctMap.addMapping({
+      generated: { line: 11, column: 0 },
+      source: 'c.js',
+      original: { line: 3, column: 4 }
+    });
+
+    var inputMap = input.map.toJSON();
+    correctMap = correctMap.toJSON();
+    util.assertEqualMaps(assert, inputMap, correctMap);
+  });
+
+  exports['test .toStringWithSourceMap() with empty string'] = function (assert, util) {
+    var node = new SourceNode(1, 0, 'empty.js', '');
+    var result = node.toStringWithSourceMap();
+    assert.equal(result.code, '');
+  };
+
+  exports['test .toStringWithSourceMap() with consecutive newlines'] = forEachNewline(function (assert, util, nl) {
+    var input = new SourceNode(null, null, null, [
+      "/***/" + nl + nl,
+      new SourceNode(1, 0, "a.js", "'use strict';" + nl),
+      new SourceNode(2, 0, "a.js", "a();"),
+    ]);
+    input = input.toStringWithSourceMap({
+      file: 'foo.js'
+    });
+
+    assert.equal(input.code, [
+      "/***/",
+      "",
+      "'use strict';",
+      "a();",
+    ].join(nl));
+
+    var correctMap = new SourceMapGenerator({
+      file: 'foo.js'
+    });
+    correctMap.addMapping({
+      generated: { line: 3, column: 0 },
+      source: 'a.js',
+      original: { line: 1, column: 0 }
+    });
+    correctMap.addMapping({
+      generated: { line: 4, column: 0 },
+      source: 'a.js',
+      original: { line: 2, column: 0 }
+    });
+
+    var inputMap = input.map.toJSON();
+    correctMap = correctMap.toJSON();
+    util.assertEqualMaps(assert, inputMap, correctMap);
+  });
+
+  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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-util.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/test-util.js
new file mode 100644 (file)
index 0000000..997d1a2
--- /dev/null
@@ -0,0 +1,216 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2014 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 libUtil = require('../../lib/source-map/util');
+
+  exports['test urls'] = function (assert, util) {
+    var assertUrl = function (url) {
+      assert.equal(url, libUtil.urlGenerate(libUtil.urlParse(url)));
+    };
+    assertUrl('http://');
+    assertUrl('http://www.example.com');
+    assertUrl('http://user:pass@www.example.com');
+    assertUrl('http://www.example.com:80');
+    assertUrl('http://www.example.com/');
+    assertUrl('http://www.example.com/foo/bar');
+    assertUrl('http://www.example.com/foo/bar/');
+    assertUrl('http://user:pass@www.example.com:80/foo/bar/');
+
+    assertUrl('//');
+    assertUrl('//www.example.com');
+    assertUrl('file:///www.example.com');
+
+    assert.equal(libUtil.urlParse(''), null);
+    assert.equal(libUtil.urlParse('.'), null);
+    assert.equal(libUtil.urlParse('..'), null);
+    assert.equal(libUtil.urlParse('a'), null);
+    assert.equal(libUtil.urlParse('a/b'), null);
+    assert.equal(libUtil.urlParse('a//b'), null);
+    assert.equal(libUtil.urlParse('/a'), null);
+    assert.equal(libUtil.urlParse('data:foo,bar'), null);
+  };
+
+  exports['test normalize()'] = function (assert, util) {
+    assert.equal(libUtil.normalize('/..'), '/');
+    assert.equal(libUtil.normalize('/../'), '/');
+    assert.equal(libUtil.normalize('/../../../..'), '/');
+    assert.equal(libUtil.normalize('/../../../../a/b/c'), '/a/b/c');
+    assert.equal(libUtil.normalize('/a/b/c/../../../d/../../e'), '/e');
+
+    assert.equal(libUtil.normalize('..'), '..');
+    assert.equal(libUtil.normalize('../'), '../');
+    assert.equal(libUtil.normalize('../../a/'), '../../a/');
+    assert.equal(libUtil.normalize('a/..'), '.');
+    assert.equal(libUtil.normalize('a/../../..'), '../..');
+
+    assert.equal(libUtil.normalize('/.'), '/');
+    assert.equal(libUtil.normalize('/./'), '/');
+    assert.equal(libUtil.normalize('/./././.'), '/');
+    assert.equal(libUtil.normalize('/././././a/b/c'), '/a/b/c');
+    assert.equal(libUtil.normalize('/a/b/c/./././d/././e'), '/a/b/c/d/e');
+
+    assert.equal(libUtil.normalize(''), '.');
+    assert.equal(libUtil.normalize('.'), '.');
+    assert.equal(libUtil.normalize('./'), '.');
+    assert.equal(libUtil.normalize('././a'), 'a');
+    assert.equal(libUtil.normalize('a/./'), 'a/');
+    assert.equal(libUtil.normalize('a/././.'), 'a');
+
+    assert.equal(libUtil.normalize('/a/b//c////d/////'), '/a/b/c/d/');
+    assert.equal(libUtil.normalize('///a/b//c////d/////'), '///a/b/c/d/');
+    assert.equal(libUtil.normalize('a/b//c////d'), 'a/b/c/d');
+
+    assert.equal(libUtil.normalize('.///.././../a/b//./..'), '../../a')
+
+    assert.equal(libUtil.normalize('http://www.example.com'), 'http://www.example.com');
+    assert.equal(libUtil.normalize('http://www.example.com/'), 'http://www.example.com/');
+    assert.equal(libUtil.normalize('http://www.example.com/./..//a/b/c/.././d//'), 'http://www.example.com/a/b/d/');
+  };
+
+  exports['test join()'] = function (assert, util) {
+    assert.equal(libUtil.join('a', 'b'), 'a/b');
+    assert.equal(libUtil.join('a/', 'b'), 'a/b');
+    assert.equal(libUtil.join('a//', 'b'), 'a/b');
+    assert.equal(libUtil.join('a', 'b/'), 'a/b/');
+    assert.equal(libUtil.join('a', 'b//'), 'a/b/');
+    assert.equal(libUtil.join('a/', '/b'), '/b');
+    assert.equal(libUtil.join('a//', '//b'), '//b');
+
+    assert.equal(libUtil.join('a', '..'), '.');
+    assert.equal(libUtil.join('a', '../b'), 'b');
+    assert.equal(libUtil.join('a/b', '../c'), 'a/c');
+
+    assert.equal(libUtil.join('a', '.'), 'a');
+    assert.equal(libUtil.join('a', './b'), 'a/b');
+    assert.equal(libUtil.join('a/b', './c'), 'a/b/c');
+
+    assert.equal(libUtil.join('a', 'http://www.example.com'), 'http://www.example.com');
+    assert.equal(libUtil.join('a', 'data:foo,bar'), 'data:foo,bar');
+
+
+    assert.equal(libUtil.join('', 'b'), 'b');
+    assert.equal(libUtil.join('.', 'b'), 'b');
+    assert.equal(libUtil.join('', 'b/'), 'b/');
+    assert.equal(libUtil.join('.', 'b/'), 'b/');
+    assert.equal(libUtil.join('', 'b//'), 'b/');
+    assert.equal(libUtil.join('.', 'b//'), 'b/');
+
+    assert.equal(libUtil.join('', '..'), '..');
+    assert.equal(libUtil.join('.', '..'), '..');
+    assert.equal(libUtil.join('', '../b'), '../b');
+    assert.equal(libUtil.join('.', '../b'), '../b');
+
+    assert.equal(libUtil.join('', '.'), '.');
+    assert.equal(libUtil.join('.', '.'), '.');
+    assert.equal(libUtil.join('', './b'), 'b');
+    assert.equal(libUtil.join('.', './b'), 'b');
+
+    assert.equal(libUtil.join('', 'http://www.example.com'), 'http://www.example.com');
+    assert.equal(libUtil.join('.', 'http://www.example.com'), 'http://www.example.com');
+    assert.equal(libUtil.join('', 'data:foo,bar'), 'data:foo,bar');
+    assert.equal(libUtil.join('.', 'data:foo,bar'), 'data:foo,bar');
+
+
+    assert.equal(libUtil.join('..', 'b'), '../b');
+    assert.equal(libUtil.join('..', 'b/'), '../b/');
+    assert.equal(libUtil.join('..', 'b//'), '../b/');
+
+    assert.equal(libUtil.join('..', '..'), '../..');
+    assert.equal(libUtil.join('..', '../b'), '../../b');
+
+    assert.equal(libUtil.join('..', '.'), '..');
+    assert.equal(libUtil.join('..', './b'), '../b');
+
+    assert.equal(libUtil.join('..', 'http://www.example.com'), 'http://www.example.com');
+    assert.equal(libUtil.join('..', 'data:foo,bar'), 'data:foo,bar');
+
+
+    assert.equal(libUtil.join('a', ''), 'a');
+    assert.equal(libUtil.join('a', '.'), 'a');
+    assert.equal(libUtil.join('a/', ''), 'a');
+    assert.equal(libUtil.join('a/', '.'), 'a');
+    assert.equal(libUtil.join('a//', ''), 'a');
+    assert.equal(libUtil.join('a//', '.'), 'a');
+    assert.equal(libUtil.join('/a', ''), '/a');
+    assert.equal(libUtil.join('/a', '.'), '/a');
+    assert.equal(libUtil.join('', ''), '.');
+    assert.equal(libUtil.join('.', ''), '.');
+    assert.equal(libUtil.join('.', ''), '.');
+    assert.equal(libUtil.join('.', '.'), '.');
+    assert.equal(libUtil.join('..', ''), '..');
+    assert.equal(libUtil.join('..', '.'), '..');
+    assert.equal(libUtil.join('http://foo.org/a', ''), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org/a', '.'), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org/a/', ''), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org/a/', '.'), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org/a//', ''), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org/a//', '.'), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org', ''), 'http://foo.org/');
+    assert.equal(libUtil.join('http://foo.org', '.'), 'http://foo.org/');
+    assert.equal(libUtil.join('http://foo.org/', ''), 'http://foo.org/');
+    assert.equal(libUtil.join('http://foo.org/', '.'), 'http://foo.org/');
+    assert.equal(libUtil.join('http://foo.org//', ''), 'http://foo.org/');
+    assert.equal(libUtil.join('http://foo.org//', '.'), 'http://foo.org/');
+    assert.equal(libUtil.join('//www.example.com', ''), '//www.example.com/');
+    assert.equal(libUtil.join('//www.example.com', '.'), '//www.example.com/');
+
+
+    assert.equal(libUtil.join('http://foo.org/a', 'b'), 'http://foo.org/a/b');
+    assert.equal(libUtil.join('http://foo.org/a/', 'b'), 'http://foo.org/a/b');
+    assert.equal(libUtil.join('http://foo.org/a//', 'b'), 'http://foo.org/a/b');
+    assert.equal(libUtil.join('http://foo.org/a', 'b/'), 'http://foo.org/a/b/');
+    assert.equal(libUtil.join('http://foo.org/a', 'b//'), 'http://foo.org/a/b/');
+    assert.equal(libUtil.join('http://foo.org/a/', '/b'), 'http://foo.org/b');
+    assert.equal(libUtil.join('http://foo.org/a//', '//b'), 'http://b');
+
+    assert.equal(libUtil.join('http://foo.org/a', '..'), 'http://foo.org/');
+    assert.equal(libUtil.join('http://foo.org/a', '../b'), 'http://foo.org/b');
+    assert.equal(libUtil.join('http://foo.org/a/b', '../c'), 'http://foo.org/a/c');
+
+    assert.equal(libUtil.join('http://foo.org/a', '.'), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org/a', './b'), 'http://foo.org/a/b');
+    assert.equal(libUtil.join('http://foo.org/a/b', './c'), 'http://foo.org/a/b/c');
+
+    assert.equal(libUtil.join('http://foo.org/a', 'http://www.example.com'), 'http://www.example.com');
+    assert.equal(libUtil.join('http://foo.org/a', 'data:foo,bar'), 'data:foo,bar');
+
+
+    assert.equal(libUtil.join('http://foo.org', 'a'), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org/', 'a'), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org//', 'a'), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org', '/a'), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org/', '/a'), 'http://foo.org/a');
+    assert.equal(libUtil.join('http://foo.org//', '/a'), 'http://foo.org/a');
+
+
+    assert.equal(libUtil.join('http://', 'www.example.com'), 'http://www.example.com');
+    assert.equal(libUtil.join('file:///', 'www.example.com'), 'file:///www.example.com');
+    assert.equal(libUtil.join('http://', 'ftp://example.com'), 'ftp://example.com');
+
+    assert.equal(libUtil.join('http://www.example.com', '//foo.org/bar'), 'http://foo.org/bar');
+    assert.equal(libUtil.join('//www.example.com', '//foo.org/bar'), '//foo.org/bar');
+  };
+
+  // TODO Issue #128: Define and test this function properly.
+  exports['test relative()'] = function (assert, util) {
+    assert.equal(libUtil.relative('/the/root', '/the/root/one.js'), 'one.js');
+    assert.equal(libUtil.relative('/the/root', '/the/rootone.js'), '/the/rootone.js');
+
+    assert.equal(libUtil.relative('', '/the/root/one.js'), '/the/root/one.js');
+    assert.equal(libUtil.relative('.', '/the/root/one.js'), '/the/root/one.js');
+    assert.equal(libUtil.relative('', 'the/root/one.js'), 'the/root/one.js');
+    assert.equal(libUtil.relative('.', 'the/root/one.js'), 'the/root/one.js');
+
+    assert.equal(libUtil.relative('/', '/the/root/one.js'), 'the/root/one.js');
+    assert.equal(libUtil.relative('/', 'the/root/one.js'), 'the/root/one.js');
+  };
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/util.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map/util.js
new file mode 100644 (file)
index 0000000..56bbe2c
--- /dev/null
@@ -0,0 +1,192 @@
+/* -*- 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.testMapNoSourceRoot = {
+    version: 3,
+    file: 'min.js',
+    names: ['bar', 'baz', 'n'],
+    sources: ['one.js', 'two.js'],
+    mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'
+  };
+  exports.testMapEmptySourceRoot = {
+    version: 3,
+    file: 'min.js',
+    names: ['bar', 'baz', 'n'],
+    sources: ['one.js', 'two.js'],
+    sourceRoot: '',
+    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.testMapRelativeSources = {
+    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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/coffeestack/package.json
new file mode 100644 (file)
index 0000000..82a9de4
--- /dev/null
@@ -0,0 +1,67 @@
+{
+  "name": "coffeestack",
+  "version": "1.1.2",
+  "description": "CoffeeScript stack trace converter",
+  "main": "./index.js",
+  "scripts": {
+    "prepublish": "grunt clean lint coffee",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/kevinsawicki/coffeestack.git"
+  },
+  "keywords": [
+    "CoffeeScript",
+    "JavaScript",
+    "stack",
+    "stacktrace",
+    "trace",
+    "source maps"
+  ],
+  "author": {
+    "name": "Kevin Sawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "license": "BSD",
+  "bugs": {
+    "url": "https://github.com/kevinsawicki/coffeestack/issues"
+  },
+  "dependencies": {
+    "coffee-script": "~1.8.0",
+    "fs-plus": "^2.5.0",
+    "source-map": "~0.1.43"
+  },
+  "devDependencies": {
+    "grunt": "~0.4.1",
+    "grunt-cli": "~0.1.9",
+    "grunt-coffeelint": "0.0.7",
+    "grunt-contrib-coffee": "~0.7.0",
+    "grunt-shell": "~0.3.0",
+    "jasmine-focused": "1.x",
+    "rimraf": "~2.2.0",
+    "temp": "^0.8.1"
+  },
+  "gitHead": "8484218a00e59526d9f064b64441df788526fa04",
+  "homepage": "https://github.com/kevinsawicki/coffeestack",
+  "_id": "coffeestack@1.1.2",
+  "_shasum": "35278f3beb9ce6f5d0ada1fb6e087852b657ce98",
+  "_from": "coffeestack@>=1.0.0 <2.0.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "35278f3beb9ce6f5d0ada1fb6e087852b657ce98",
+    "tarball": "http://registry.npmjs.org/coffeestack/-/coffeestack-1.1.2.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/coffeestack/-/coffeestack-1.1.2.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/LICENSE.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/README.md
new file mode 100644 (file)
index 0000000..9415c13
--- /dev/null
@@ -0,0 +1,49 @@
+# Emissary – Mixins for Events [![Build Status](https://travis-ci.org/atom/emissary.svg?branch=master)](https://travis-ci.org/atom/emissary)
+
+**Achtung!** This library is currently used in Atom and various Atom dependencies, but our long-term plan is to transition away from it in favor of the simpler [event-kit](https://github.com/atom/event-kit) library. Don't depend on supporting this library forever.
+
+**Achtung Again!** The Subscriber mixin requires ES6 Harmony WeakMaps. To enable them, run your program with the  `node --harmony_collections` flag. If you're using it in a node framework such as jasmine, run its script with the flag enabled as follows: `node --harmony-collections .bin/jasmine-node specs`.
+
+## Emitter
+
+Emitter is backward-compatible with Node's event emitter, but offers more functionality. You can construct standalone `Emitter` instances or use it as a mixin.
+
+* `Emitter.extend(object)`
+  Turns the given object into an emitter by adding the appropriate methods.
+
+* `Emitter.includeInto(class)`
+  Turns the class into an emitter by extending its prototype.
+
+* `::on(eventNames, handler)`
+  Subscribe to one or more events. Events names are separated by spaces, and can optionally be namespaced with a dot-suffix. E.g. `event1 event2.namespace`.
+
+* `::once(eventName, handler)`
+  Like `::on`, but only fires the handler once before unsubscribing automatically.
+
+* `::off(eventNames[, handler])`
+  Unsubscribe to one or more events. Event names are separated by spaces. Passing a non-namespaced event name unsubscribes from every namespace for that event. Passing only a namespace unsubscribes from that entire namespace. Passing a handler removes only a subscription corresponding to the given event name(s) and that handler.
+
+* `::emit(eventName[, data...])`
+  Emit an event with the given name. If the event name is namespaced, only calls handlers for the event associated with the namespace, otherwise it fires all handlers. Handlers are called with zero or more data arguments provided after the event name.
+
+* `::pauseEvents()`
+  Buffers events instead of emitting them until `::resumeEvents` is called.
+
+* `::resumeEvents()`
+  Emits all events buffered since pausing and resumes normal emitting behavior.
+
+* `::getSubscriptionCount()`
+  Get the total number of handlers registered on the emitter.
+
+## Subscriber
+
+Subscriber works in partnership with an emitter or any object supporting subscription cancellation with `.off`. This includes standard Node event emitters and jQuery objects.
+
+* `::subscribe(object, eventNames, handler)`
+  Subscribe to the given event name(s) on the given object.
+
+* `::subscribeWith(object, methodName, eventNames, handler)`
+  Subscribe to the given object with a method other than `.on`.
+
+* `::unsubscribe([object])`
+  Cancel subscriptions previously registered with `::subscribe`. If an object is given, only unsubscribe from that object. If called without an object, unsubscribe from everything.
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/behavior.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/behavior.js
new file mode 100644 (file)
index 0000000..863c2f2
--- /dev/null
@@ -0,0 +1,120 @@
+(function() {
+  var Behavior, PropertyAccessors, Signal, helpers, isEqual,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  isEqual = require('underscore-plus').isEqual;
+
+  PropertyAccessors = require('property-accessors');
+
+  Signal = require('./signal');
+
+  module.exports = Behavior = (function(_super) {
+    __extends(Behavior, _super);
+
+    PropertyAccessors.includeInto(Behavior);
+
+    function Behavior() {
+      var args, subscribeCallback, _ref;
+      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+      if (typeof ((_ref = args[0]) != null ? _ref.call : void 0) !== 'function') {
+        this.value = args.shift();
+      }
+      Behavior.__super__.constructor.call(this, subscribeCallback = args.shift());
+    }
+
+    Behavior.prototype.retained = function() {
+      var _this = this;
+      this.subscribe(this, 'value-internal', function(value) {
+        return _this.value = value;
+      });
+      this.subscribe(this, 'value-subscription-added', function(handler) {
+        return handler(_this.value);
+      });
+      return typeof this.subscribeCallback === "function" ? this.subscribeCallback() : void 0;
+    };
+
+    Behavior.prototype.emit = function() {
+      var args, name;
+      name = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      if (name === 'value') {
+        this.emit.apply(this, ['value-internal'].concat(__slice.call(args)));
+      }
+      return Behavior.__super__.emit.apply(this, arguments);
+    };
+
+    Behavior.prototype.getValue = function() {
+      if (!(this.retainCount > 0)) {
+        throw new Error("Subscribe to or retain this behavior before calling getValue");
+      }
+      return this.value;
+    };
+
+    Behavior.prototype.and = function(right) {
+      return helpers.combine(this, right, (function(leftValue, rightValue) {
+        return leftValue && rightValue;
+      })).distinctUntilChanged();
+    };
+
+    Behavior.prototype.or = function(right) {
+      return helpers.combine(this, right, (function(leftValue, rightValue) {
+        return leftValue || rightValue;
+      })).distinctUntilChanged();
+    };
+
+    Behavior.prototype.toBehavior = function() {
+      return this;
+    };
+
+    Behavior.prototype.lazyAccessor('changes', function() {
+      var source;
+      source = this;
+      return new Signal(function() {
+        var gotFirst,
+          _this = this;
+        gotFirst = false;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          if (gotFirst) {
+            _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+          }
+          return gotFirst = true;
+        });
+      });
+    });
+
+    Behavior.prototype.becomes = function(predicateOrTargetValue) {
+      var predicate, targetValue;
+      if (typeof predicateOrTargetValue !== 'function') {
+        targetValue = predicateOrTargetValue;
+        return this.becomes(function(value) {
+          return isEqual(value, targetValue);
+        });
+      }
+      predicate = predicateOrTargetValue;
+      return this.map(function(value) {
+        return !!predicate(value);
+      }).distinctUntilChanged().changes;
+    };
+
+    Behavior.prototype.becomesLessThan = function(targetValue) {
+      return this.becomes(function(value) {
+        return value < targetValue;
+      });
+    };
+
+    Behavior.prototype.becomesGreaterThan = function(targetValue) {
+      return this.becomes(function(value) {
+        return value > targetValue;
+      });
+    };
+
+    return Behavior;
+
+  })(Signal);
+
+  helpers = require('./helpers');
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/emissary.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/emissary.js
new file mode 100644 (file)
index 0000000..9ba21f4
--- /dev/null
@@ -0,0 +1,14 @@
+(function() {
+  var combine;
+
+  combine = require('./helpers').combine;
+
+  module.exports = {
+    Emitter: require('./emitter'),
+    Subscriber: require('./subscriber'),
+    Signal: require('./signal'),
+    Behavior: require('./behavior'),
+    combine: combine
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/emitter.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/emitter.js
new file mode 100644 (file)
index 0000000..0e999db
--- /dev/null
@@ -0,0 +1,384 @@
+(function() {
+  var Emitter, Mixin, Signal, Subscription, removeFromArray, subscriptionRemovedPattern, _ref,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  Mixin = require('mixto');
+
+  Signal = null;
+
+  Subscription = null;
+
+  subscriptionRemovedPattern = /^(last-)?.+-subscription-removed$/;
+
+  module.exports = Emitter = (function(_super) {
+    __extends(Emitter, _super);
+
+    function Emitter() {
+      _ref = Emitter.__super__.constructor.apply(this, arguments);
+      return _ref;
+    }
+
+    Emitter.prototype.eventHandlersByEventName = null;
+
+    Emitter.prototype.eventHandlersByNamespace = null;
+
+    Emitter.prototype.subscriptionCounts = null;
+
+    Emitter.prototype.pauseCountsByEventName = null;
+
+    Emitter.prototype.queuedEventsByEventName = null;
+
+    Emitter.prototype.globalPauseCount = null;
+
+    Emitter.prototype.globalQueuedEvents = null;
+
+    Emitter.prototype.signalsByEventName = null;
+
+    Emitter.prototype.on = function(eventNames, handler) {
+      var eventName, namespace, _base, _base1, _base2, _i, _len, _ref1, _ref2;
+      _ref1 = eventNames.split(/\s+/);
+      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+        eventName = _ref1[_i];
+        if (!(eventName !== '')) {
+          continue;
+        }
+        _ref2 = eventName.split('.'), eventName = _ref2[0], namespace = _ref2[1];
+        this.emit("" + eventName + "-subscription-will-be-added", handler);
+        if (this.incrementSubscriptionCount(eventName) === 1) {
+          this.emit("first-" + eventName + "-subscription-will-be-added", handler);
+        }
+        if (this.eventHandlersByEventName == null) {
+          this.eventHandlersByEventName = {};
+        }
+        if ((_base = this.eventHandlersByEventName)[eventName] == null) {
+          _base[eventName] = [];
+        }
+        this.eventHandlersByEventName[eventName].push(handler);
+        if (namespace) {
+          if (this.eventHandlersByNamespace == null) {
+            this.eventHandlersByNamespace = {};
+          }
+          if ((_base1 = this.eventHandlersByNamespace)[namespace] == null) {
+            _base1[namespace] = {};
+          }
+          if ((_base2 = this.eventHandlersByNamespace[namespace])[eventName] == null) {
+            _base2[eventName] = [];
+          }
+          this.eventHandlersByNamespace[namespace][eventName].push(handler);
+        }
+        this.emit("" + eventName + "-subscription-added", handler);
+      }
+      if (Subscription == null) {
+        Subscription = require('./subscription');
+      }
+      return new Subscription(this, eventNames, handler);
+    };
+
+    Emitter.prototype.once = function(eventName, handler) {
+      var subscription;
+      return subscription = this.on(eventName, function() {
+        var args;
+        args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+        subscription.off();
+        return handler.apply(null, args);
+      });
+    };
+
+    Emitter.prototype.signal = function(eventName) {
+      var _base;
+      if (Signal == null) {
+        Signal = require('./signal');
+      }
+      if (this.signalsByEventName == null) {
+        this.signalsByEventName = {};
+      }
+      return (_base = this.signalsByEventName)[eventName] != null ? (_base = this.signalsByEventName)[eventName] : _base[eventName] = Signal.fromEmitter(this, eventName);
+    };
+
+    Emitter.prototype.behavior = function(eventName, initialValue) {
+      return this.signal(eventName).toBehavior(initialValue);
+    };
+
+    Emitter.prototype.emit = function(eventName, payload) {
+      var handler, handlers, queuedEvents, _i, _len, _ref1, _ref2, _ref3;
+      if (arguments.length > 2 || /\s|\./.test(eventName)) {
+        return this.emitSlow.apply(this, arguments);
+      } else {
+        if (this.globalQueuedEvents != null) {
+          return this.globalQueuedEvents.push([eventName, payload]);
+        } else {
+          if (queuedEvents = (_ref1 = this.queuedEventsByEventName) != null ? _ref1[eventName] : void 0) {
+            return queuedEvents.push([eventName, payload]);
+          } else if (handlers = (_ref2 = this.eventHandlersByEventName) != null ? _ref2[eventName] : void 0) {
+            _ref3 = handlers.slice();
+            for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
+              handler = _ref3[_i];
+              handler(payload);
+            }
+            return this.emit("after-" + eventName, payload);
+          }
+        }
+      }
+    };
+
+    Emitter.prototype.emitSlow = function() {
+      var args, eventName, handlers, namespace, queuedEvents, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6;
+      eventName = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      if (this.globalQueuedEvents) {
+        return this.globalQueuedEvents.push([eventName].concat(__slice.call(args)));
+      } else {
+        _ref1 = eventName.split('.'), eventName = _ref1[0], namespace = _ref1[1];
+        if (namespace) {
+          if (queuedEvents = (_ref2 = this.queuedEventsByEventName) != null ? _ref2[eventName] : void 0) {
+            return queuedEvents.push(["" + eventName + "." + namespace].concat(__slice.call(args)));
+          } else if (handlers = (_ref3 = this.eventHandlersByNamespace) != null ? (_ref4 = _ref3[namespace]) != null ? _ref4[eventName] : void 0 : void 0) {
+            (function(func, args, ctor) {
+              ctor.prototype = func.prototype;
+              var child = new ctor, result = func.apply(child, args);
+              return Object(result) === result ? result : child;
+            })(Array, handlers, function(){}).forEach(function(handler) {
+              return handler.apply(null, args);
+            });
+            return this.emit.apply(this, ["after-" + eventName].concat(__slice.call(args)));
+          }
+        } else {
+          if (queuedEvents = (_ref5 = this.queuedEventsByEventName) != null ? _ref5[eventName] : void 0) {
+            return queuedEvents.push([eventName].concat(__slice.call(args)));
+          } else if (handlers = (_ref6 = this.eventHandlersByEventName) != null ? _ref6[eventName] : void 0) {
+            (function(func, args, ctor) {
+              ctor.prototype = func.prototype;
+              var child = new ctor, result = func.apply(child, args);
+              return Object(result) === result ? result : child;
+            })(Array, handlers, function(){}).forEach(function(handler) {
+              return handler.apply(null, args);
+            });
+            return this.emit.apply(this, ["after-" + eventName].concat(__slice.call(args)));
+          }
+        }
+      }
+    };
+
+    Emitter.prototype.off = function(eventNames, handler) {
+      var eventHandlers, eventName, handlers, namespace, namespaceHandlers, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref1, _ref10, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9;
+      if (eventNames) {
+        _ref1 = eventNames.split(/\s+/);
+        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+          eventName = _ref1[_i];
+          if (!(eventName !== '')) {
+            continue;
+          }
+          _ref2 = eventName.split('.'), eventName = _ref2[0], namespace = _ref2[1];
+          if (eventName === '') {
+            eventName = void 0;
+          }
+          if (namespace) {
+            if (eventName) {
+              handlers = (_ref3 = (_ref4 = this.eventHandlersByNamespace) != null ? (_ref5 = _ref4[namespace]) != null ? _ref5[eventName] : void 0 : void 0) != null ? _ref3 : [];
+              if (handler != null) {
+                removeFromArray(handlers, handler);
+                this.off(eventName, handler);
+              } else {
+                _ref6 = (function(func, args, ctor) {
+                  ctor.prototype = func.prototype;
+                  var child = new ctor, result = func.apply(child, args);
+                  return Object(result) === result ? result : child;
+                })(Array, handlers, function(){});
+                for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
+                  handler = _ref6[_j];
+                  removeFromArray(handlers, handler);
+                  this.off(eventName, handler);
+                }
+              }
+            } else {
+              namespaceHandlers = (_ref7 = (_ref8 = this.eventHandlersByNamespace) != null ? _ref8[namespace] : void 0) != null ? _ref7 : {};
+              if (handler != null) {
+                for (eventName in namespaceHandlers) {
+                  handlers = namespaceHandlers[eventName];
+                  removeFromArray(handlers, handler);
+                  this.off(eventName, handler);
+                }
+              } else {
+                for (eventName in namespaceHandlers) {
+                  handlers = namespaceHandlers[eventName];
+                  _ref9 = (function(func, args, ctor) {
+                    ctor.prototype = func.prototype;
+                    var child = new ctor, result = func.apply(child, args);
+                    return Object(result) === result ? result : child;
+                  })(Array, handlers, function(){});
+                  for (_k = 0, _len2 = _ref9.length; _k < _len2; _k++) {
+                    handler = _ref9[_k];
+                    removeFromArray(handlers, handler);
+                    this.off(eventName, handler);
+                  }
+                }
+              }
+            }
+          } else {
+            eventHandlers = (_ref10 = this.eventHandlersByEventName) != null ? _ref10[eventName] : void 0;
+            if (eventHandlers == null) {
+              return;
+            }
+            if (handler == null) {
+              for (_l = 0, _len3 = eventHandlers.length; _l < _len3; _l++) {
+                handler = eventHandlers[_l];
+                this.off(eventName, handler);
+              }
+              return;
+            }
+            if (removeFromArray(eventHandlers, handler)) {
+              this.decrementSubscriptionCount(eventName);
+              this.emit("" + eventName + "-subscription-removed", handler);
+              if (this.getSubscriptionCount(eventName) === 0) {
+                this.emit("last-" + eventName + "-subscription-removed", handler);
+                delete this.eventHandlersByEventName[eventName];
+              }
+            }
+          }
+        }
+      } else {
+        for (eventName in this.eventHandlersByEventName) {
+          if (!subscriptionRemovedPattern.test(eventName)) {
+            this.off(eventName);
+          }
+        }
+        for (eventName in this.eventHandlersByEventName) {
+          this.off(eventName);
+        }
+        return this.eventHandlersByNamespace = {};
+      }
+    };
+
+    Emitter.prototype.pauseEvents = function(eventNames) {
+      var eventName, _base, _base1, _i, _len, _ref1, _results;
+      if (eventNames) {
+        _ref1 = eventNames.split(/\s+/);
+        _results = [];
+        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+          eventName = _ref1[_i];
+          if (!(eventName !== '')) {
+            continue;
+          }
+          if (this.pauseCountsByEventName == null) {
+            this.pauseCountsByEventName = {};
+          }
+          if (this.queuedEventsByEventName == null) {
+            this.queuedEventsByEventName = {};
+          }
+          if ((_base = this.pauseCountsByEventName)[eventName] == null) {
+            _base[eventName] = 0;
+          }
+          this.pauseCountsByEventName[eventName]++;
+          _results.push((_base1 = this.queuedEventsByEventName)[eventName] != null ? (_base1 = this.queuedEventsByEventName)[eventName] : _base1[eventName] = []);
+        }
+        return _results;
+      } else {
+        if (this.globalPauseCount == null) {
+          this.globalPauseCount = 0;
+        }
+        if (this.globalQueuedEvents == null) {
+          this.globalQueuedEvents = [];
+        }
+        return this.globalPauseCount++;
+      }
+    };
+
+    Emitter.prototype.resumeEvents = function(eventNames) {
+      var event, eventName, queuedEvents, _i, _j, _len, _len1, _ref1, _ref2, _results, _results1;
+      if (eventNames) {
+        _ref1 = eventNames.split(/\s+/);
+        _results = [];
+        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+          eventName = _ref1[_i];
+          if (eventName !== '') {
+            if (((_ref2 = this.pauseCountsByEventName) != null ? _ref2[eventName] : void 0) > 0 && --this.pauseCountsByEventName[eventName] === 0) {
+              queuedEvents = this.queuedEventsByEventName[eventName];
+              this.queuedEventsByEventName[eventName] = null;
+              _results.push((function() {
+                var _j, _len1, _results1;
+                _results1 = [];
+                for (_j = 0, _len1 = queuedEvents.length; _j < _len1; _j++) {
+                  event = queuedEvents[_j];
+                  _results1.push(this.emit.apply(this, event));
+                }
+                return _results1;
+              }).call(this));
+            } else {
+              _results.push(void 0);
+            }
+          }
+        }
+        return _results;
+      } else {
+        for (eventName in this.pauseCountsByEventName) {
+          this.resumeEvents(eventName);
+        }
+        if (this.globalPauseCount > 0 && --this.globalPauseCount === 0) {
+          queuedEvents = this.globalQueuedEvents;
+          this.globalQueuedEvents = null;
+          _results1 = [];
+          for (_j = 0, _len1 = queuedEvents.length; _j < _len1; _j++) {
+            event = queuedEvents[_j];
+            _results1.push(this.emit.apply(this, event));
+          }
+          return _results1;
+        }
+      }
+    };
+
+    Emitter.prototype.incrementSubscriptionCount = function(eventName) {
+      var _base;
+      if (this.subscriptionCounts == null) {
+        this.subscriptionCounts = {};
+      }
+      if ((_base = this.subscriptionCounts)[eventName] == null) {
+        _base[eventName] = 0;
+      }
+      return ++this.subscriptionCounts[eventName];
+    };
+
+    Emitter.prototype.decrementSubscriptionCount = function(eventName) {
+      var count;
+      count = --this.subscriptionCounts[eventName];
+      if (count === 0) {
+        delete this.subscriptionCounts[eventName];
+      }
+      return count;
+    };
+
+    Emitter.prototype.getSubscriptionCount = function(eventName) {
+      var count, name, total, _ref1, _ref2, _ref3;
+      if (eventName != null) {
+        return (_ref1 = (_ref2 = this.subscriptionCounts) != null ? _ref2[eventName] : void 0) != null ? _ref1 : 0;
+      } else {
+        total = 0;
+        _ref3 = this.subscriptionCounts;
+        for (name in _ref3) {
+          count = _ref3[name];
+          total += count;
+        }
+        return total;
+      }
+    };
+
+    Emitter.prototype.hasSubscriptions = function(eventName) {
+      return this.getSubscriptionCount(eventName) > 0;
+    };
+
+    return Emitter;
+
+  })(Mixin);
+
+  removeFromArray = function(array, element) {
+    var index;
+    index = array.indexOf(element);
+    if (index > -1) {
+      array.splice(index, 1);
+      return true;
+    } else {
+      return false;
+    }
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/helpers.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/helpers.js
new file mode 100644 (file)
index 0000000..89df58c
--- /dev/null
@@ -0,0 +1,55 @@
+(function() {
+  var Behavior, combineArray, combineWithFunction,
+    __slice = [].slice;
+
+  Behavior = require('./behavior');
+
+  exports.combine = function() {
+    var args;
+    args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+    if (args.length === 1 && Array.isArray(args[0])) {
+      return combineArray(args[0]);
+    } else if (typeof args[args.length - 1] === 'function') {
+      return combineWithFunction(args);
+    } else {
+      throw new Error("Invalid object type");
+    }
+  };
+
+  combineArray = function(array) {
+    var behavior;
+    return behavior = new Behavior(function() {
+      var element, i, outputArray, ready, _i, _len,
+        _this = this;
+      outputArray = array.slice();
+      ready = false;
+      for (i = _i = 0, _len = array.length; _i < _len; i = ++_i) {
+        element = array[i];
+        if (element.constructor.name === 'Behavior') {
+          (function(element, i) {
+            return _this.subscribe(element.onValue(function(value, metadata) {
+              if (ready) {
+                outputArray = outputArray.slice();
+              }
+              outputArray[i] = value;
+              if (ready) {
+                return _this.emitValue(outputArray, metadata);
+              }
+            }));
+          })(element, i);
+        }
+      }
+      ready = true;
+      return this.emitValue(outputArray);
+    });
+  };
+
+  combineWithFunction = function(args) {
+    var fn;
+    fn = args.pop();
+    return combineArray(args).map(function(argsArray) {
+      return fn.apply(null, argsArray);
+    });
+  };
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/signal.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/signal.js
new file mode 100644 (file)
index 0000000..368f63a
--- /dev/null
@@ -0,0 +1,292 @@
+(function() {
+  var Behavior, Emitter, Signal, Subscriber, isEqual,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  isEqual = require('underscore-plus').isEqual;
+
+  Emitter = require('./emitter');
+
+  Subscriber = require('./subscriber');
+
+  Behavior = null;
+
+  module.exports = Signal = (function(_super) {
+    __extends(Signal, _super);
+
+    Subscriber.includeInto(Signal);
+
+    Signal.fromEmitter = function(emitter, eventName) {
+      return new Signal(function() {
+        var _this = this;
+        return this.subscribe(emitter, eventName, function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    function Signal(subscribeCallback) {
+      var _this = this;
+      this.subscribeCallback = subscribeCallback;
+      this.retainCount = 0;
+      this.on('value-subscription-will-be-added', function() {
+        return _this.retain();
+      });
+      this.on('value-subscription-removed', function() {
+        return _this.release();
+      });
+    }
+
+    Signal.prototype.isSignal = true;
+
+    Signal.prototype.retained = function() {
+      return typeof this.subscribeCallback === "function" ? this.subscribeCallback() : void 0;
+    };
+
+    Signal.prototype.released = function() {
+      return this.unsubscribe();
+    };
+
+    Signal.prototype.retain = function() {
+      if (++this.retainCount === 1) {
+        if (typeof this.retained === "function") {
+          this.retained();
+        }
+      }
+      return this;
+    };
+
+    Signal.prototype.release = function() {
+      if (--this.retainCount === 0) {
+        if (typeof this.released === "function") {
+          this.released();
+        }
+      }
+      return this;
+    };
+
+    Signal.prototype.onValue = function(handler) {
+      return this.on('value', handler);
+    };
+
+    Signal.prototype.emitValue = function(value, metadata) {
+      if (metadata == null) {
+        metadata = {};
+      }
+      if (metadata.source == null) {
+        metadata.source = this;
+      }
+      return this.emit('value', value, metadata);
+    };
+
+    Signal.prototype.toBehavior = function(initialValue) {
+      var source;
+      source = this;
+      return this.buildBehavior(initialValue, function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype.changes = function() {
+      return this;
+    };
+
+    Signal.prototype.injectMetadata = function(fn) {
+      var source;
+      source = this;
+      return new this.constructor(function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function(value, metadata) {
+          var k, newMetadata, v;
+          newMetadata = fn(value, metadata);
+          for (k in newMetadata) {
+            v = newMetadata[k];
+            metadata[k] = v;
+          }
+          return _this.emitValue(value, metadata);
+        });
+      });
+    };
+
+    Signal.prototype.filter = function(predicate) {
+      var source;
+      source = this;
+      return new this.constructor(function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          if (predicate.call(value, value)) {
+            return _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+          }
+        });
+      });
+    };
+
+    Signal.prototype.filterDefined = function() {
+      return this.filter(function(value) {
+        return value != null;
+      });
+    };
+
+    Signal.prototype.map = function(fn) {
+      var property, source;
+      if (typeof fn === 'string') {
+        property = fn;
+        fn = function(value) {
+          return value != null ? value[property] : void 0;
+        };
+      }
+      source = this;
+      return new this.constructor(function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [fn.call(value, value)].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype["switch"] = function(fn) {
+      var source;
+      source = this.map(fn);
+      return new this.constructor(function() {
+        var currentSignal,
+          _this = this;
+        currentSignal = null;
+        return this.subscribe(source, 'value', function(newSignal, outerMetadata) {
+          if (currentSignal != null) {
+            _this.unsubscribe(currentSignal);
+          }
+          currentSignal = newSignal;
+          if (currentSignal != null) {
+            return _this.subscribe(currentSignal, 'value', function(value, innerMetadata) {
+              return _this.emitValue(value, innerMetadata);
+            });
+          } else {
+            return _this.emitValue(void 0, outerMetadata);
+          }
+        });
+      });
+    };
+
+    Signal.prototype.skipUntil = function(predicateOrTargetValue) {
+      var doneSkipping, predicate, targetValue;
+      if (typeof predicateOrTargetValue !== 'function') {
+        targetValue = predicateOrTargetValue;
+        return this.skipUntil(function(value) {
+          return isEqual(value, targetValue);
+        });
+      }
+      predicate = predicateOrTargetValue;
+      doneSkipping = false;
+      return this.filter(function(value) {
+        if (doneSkipping) {
+          return true;
+        }
+        if (predicate(value)) {
+          return doneSkipping = true;
+        } else {
+          return false;
+        }
+      });
+    };
+
+    Signal.prototype.scan = function(initialValue, fn) {
+      var source;
+      source = this;
+      return this.buildBehavior(initialValue, function() {
+        var oldValue,
+          _this = this;
+        oldValue = initialValue;
+        return this.subscribe(source, 'value', function() {
+          var metadata, newValue;
+          newValue = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [(oldValue = fn(oldValue, newValue))].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype.diff = function(initialValue, fn) {
+      var source;
+      source = this;
+      return this.buildBehavior(function() {
+        var oldValue,
+          _this = this;
+        oldValue = initialValue;
+        return this.subscribe(source, 'value', function() {
+          var fnOldValue, metadata, newValue;
+          newValue = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          fnOldValue = oldValue;
+          oldValue = newValue;
+          return _this.emitValue.apply(_this, [fn(fnOldValue, newValue)].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype.distinctUntilChanged = function() {
+      var source;
+      source = this;
+      return new this.constructor(function() {
+        var oldValue, receivedValue,
+          _this = this;
+        receivedValue = false;
+        oldValue = void 0;
+        return this.subscribe(source, 'value', function() {
+          var metadata, newValue;
+          newValue = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          if (receivedValue) {
+            if (isEqual(oldValue, newValue)) {
+              return oldValue = newValue;
+            } else {
+              oldValue = newValue;
+              return _this.emitValue.apply(_this, [newValue].concat(__slice.call(metadata)));
+            }
+          } else {
+            receivedValue = true;
+            oldValue = newValue;
+            return _this.emitValue.apply(_this, [newValue].concat(__slice.call(metadata)));
+          }
+        });
+      });
+    };
+
+    Signal.prototype.equals = function(expected) {
+      return this.map(function(actual) {
+        return isEqual(actual, expected);
+      }).distinctUntilChanged();
+    };
+
+    Signal.prototype.isDefined = function() {
+      return this.map(function(value) {
+        return value != null;
+      }).distinctUntilChanged();
+    };
+
+    Signal.prototype.buildBehavior = function() {
+      var args;
+      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+      if (Behavior == null) {
+        Behavior = require('./behavior');
+      }
+      return (function(func, args, ctor) {
+        ctor.prototype = func.prototype;
+        var child = new ctor, result = func.apply(child, args);
+        return Object(result) === result ? result : child;
+      })(Behavior, args, function(){});
+    };
+
+    return Signal;
+
+  })(Emitter);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/subscriber.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/subscriber.js
new file mode 100644 (file)
index 0000000..25016be
--- /dev/null
@@ -0,0 +1,109 @@
+(function() {
+  var Mixin, Signal, Subscriber, Subscription, WeakMap, _ref, _ref1,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  Mixin = require('mixto');
+
+  Signal = null;
+
+  WeakMap = (_ref = global.WeakMap) != null ? _ref : require('es6-weak-map');
+
+  Subscription = require('./subscription');
+
+  module.exports = Subscriber = (function(_super) {
+    __extends(Subscriber, _super);
+
+    function Subscriber() {
+      _ref1 = Subscriber.__super__.constructor.apply(this, arguments);
+      return _ref1;
+    }
+
+    Subscriber.prototype.subscribeWith = function(eventEmitter, methodName, args) {
+      var callback, eventNames;
+      if (eventEmitter[methodName] == null) {
+        throw new Error("Object does not have method '" + methodName + "' with which to subscribe");
+      }
+      eventEmitter[methodName].apply(eventEmitter, args);
+      eventNames = args[0];
+      callback = args[args.length - 1];
+      return this.addSubscription(new Subscription(eventEmitter, eventNames, callback));
+    };
+
+    Subscriber.prototype.addSubscription = function(subscription) {
+      var emitter;
+      if (this._subscriptions == null) {
+        this._subscriptions = [];
+      }
+      this._subscriptions.push(subscription);
+      emitter = subscription.emitter;
+      if (emitter != null) {
+        if (this._subscriptionsByObject == null) {
+          this._subscriptionsByObject = new WeakMap;
+        }
+        if (this._subscriptionsByObject.has(emitter)) {
+          this._subscriptionsByObject.get(emitter).push(subscription);
+        } else {
+          this._subscriptionsByObject.set(emitter, [subscription]);
+        }
+      }
+      return subscription;
+    };
+
+    Subscriber.prototype.subscribe = function() {
+      var args, eventEmitterOrSubscription;
+      eventEmitterOrSubscription = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      if (args.length === 0) {
+        return this.addSubscription(eventEmitterOrSubscription);
+      } else {
+        if (args.length === 1 && eventEmitterOrSubscription.isSignal) {
+          args.unshift('value');
+        }
+        return this.subscribeWith(eventEmitterOrSubscription, 'on', args);
+      }
+    };
+
+    Subscriber.prototype.subscribeToCommand = function() {
+      var args, eventEmitter;
+      eventEmitter = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      return this.subscribeWith(eventEmitter, 'command', args);
+    };
+
+    Subscriber.prototype.unsubscribe = function(object) {
+      var index, subscription, _i, _j, _len, _len1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7;
+      if (object != null) {
+        _ref4 = (_ref2 = (_ref3 = this._subscriptionsByObject) != null ? _ref3.get(object) : void 0) != null ? _ref2 : [];
+        for (_i = 0, _len = _ref4.length; _i < _len; _i++) {
+          subscription = _ref4[_i];
+          if (typeof subscription.dispose === 'function') {
+            subscription.dispose();
+          } else {
+            subscription.off();
+          }
+          index = this._subscriptions.indexOf(subscription);
+          if (index >= 0) {
+            this._subscriptions.splice(index, 1);
+          }
+        }
+        return (_ref5 = this._subscriptionsByObject) != null ? _ref5["delete"](object) : void 0;
+      } else {
+        _ref7 = (_ref6 = this._subscriptions) != null ? _ref6 : [];
+        for (_j = 0, _len1 = _ref7.length; _j < _len1; _j++) {
+          subscription = _ref7[_j];
+          if (typeof subscription.dispose === 'function') {
+            subscription.dispose();
+          } else {
+            subscription.off();
+          }
+        }
+        this._subscriptions = null;
+        return this._subscriptionsByObject = null;
+      }
+    };
+
+    return Subscriber;
+
+  })(Mixin);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/subscription.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/subscription.js
new file mode 100644 (file)
index 0000000..b1d749f
--- /dev/null
@@ -0,0 +1,40 @@
+(function() {
+  var Emitter, Subscription,
+    __hasProp = {}.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; };
+
+  Emitter = require('./emitter');
+
+  module.exports = Subscription = (function(_super) {
+    __extends(Subscription, _super);
+
+    Subscription.prototype.cancelled = false;
+
+    function Subscription(emitter, eventNames, handler) {
+      this.emitter = emitter;
+      this.eventNames = eventNames;
+      this.handler = handler;
+    }
+
+    Subscription.prototype.off = function() {
+      return this.dispose();
+    };
+
+    Subscription.prototype.dispose = function() {
+      var unsubscribe, _ref;
+      if (this.cancelled) {
+        return;
+      }
+      unsubscribe = (_ref = this.emitter.off) != null ? _ref : this.emitter.removeListener;
+      unsubscribe.call(this.emitter, this.eventNames, this.handler);
+      this.emitter = null;
+      this.handler = null;
+      this.cancelled = true;
+      return this.emit('cancelled');
+    };
+
+    return Subscription;
+
+  })(Emitter);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.lint b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.lint
new file mode 100644 (file)
index 0000000..cf54d81
--- /dev/null
@@ -0,0 +1,11 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.npmignore b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.travis.yml b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.travis.yml
new file mode 100644 (file)
index 0000000..08f04a1
--- /dev/null
@@ -0,0 +1,10 @@
+sudo: false # use faster docker infrastructure
+language: node_js
+node_js:
+  - 0.10
+  - 0.12
+  - iojs
+
+notifications:
+  email:
+    - medikoo+es6-weak-map@medikoo.com
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/CHANGES b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/CHANGES
new file mode 100644 (file)
index 0000000..3394408
--- /dev/null
@@ -0,0 +1,24 @@
+v0.1.4  --  2015.04.13
+* Republish v0.1.2 as v0.1.4 due to breaking changes
+  (v0.1.3 should have been published as next major)
+
+v0.1.3  --  2015.04.12
+* Update up to changes in specification (require new, remove clear method)
+* Improve native implementation validation
+* Configure lint scripts
+* Rename LICENCE to LICENSE
+
+v0.1.2  --  2014.09.01
+* Use internal random and unique id generator instead of external (time-uuid based).
+  Global uniqueness is not needed in scope of this module. Fixes #1
+
+v0.1.1  --  2014.05.15
+* Improve valid WeakMap detection
+
+v0.1.0  --  2014.04.29
+* Assure to depend only npm hosted dependencies
+* Update to use latest versions of dependencies
+* Use ES6 symbols internally
+
+v0.0.0  --  2013.10.24
+Initial (dev version)
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/LICENCE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/LICENCE
new file mode 100644 (file)
index 0000000..aaf3528
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013 Mariusz Nowak (www.medikoo.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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/README.md
new file mode 100644 (file)
index 0000000..dd91b46
--- /dev/null
@@ -0,0 +1,65 @@
+# es6-weak-map
+## WeakMap collection as specified in ECMAScript6
+
+_Roughly inspired by Mark Miller's and Kris Kowal's [WeakMap implementation](https://github.com/drses/weak-map)_.
+
+Differences are:
+- Assumes compliant ES5 environment (no weird ES3 workarounds or hacks)
+- Well modularized CJS style
+- Based on one solution.
+
+### Limitations
+
+- Will fail on non extensible objects provided as keys
+- While `clear` method is provided, it's not perfectly spec compliant. If some objects were saved as _values_, they need to be removed via `delete`. Otherwise they'll remain infinitely attached to _key_ object (that means, they'll be free for GC only if _key_ object was collected as well).
+
+### Installation
+
+       $ npm install es6-weak-map
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+### Usage
+
+If you want to make sure your environment implements `WeakMap`, do:
+
+```javascript
+require('es6-weak-map/implement');
+```
+
+If you'd like to use native version when it exists and fallback to polyfill if it doesn't, but without implementing `WeakMap` on global scope, do:
+
+```javascript
+var WeakMap = require('es6-weak-map');
+```
+
+If you strictly want to use polyfill even if native `WeakMap` exists, do:
+
+```javascript
+var WeakMap = require('es6-weak-map/polyfill');
+```
+
+#### API
+
+Best is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-weakmap-objects). Still if you want quick look, follow example:
+
+```javascript
+var WeakMap = require('es6-weak-map');
+
+var map = new WeakMap();
+var obj = {};
+
+map.set(obj, 'foo'); // map
+map.get(obj);        // 'foo'
+map.has(obj);        // true
+map.delete(obj);     // true
+map.get(obj);        // undefined
+map.has(obj);        // false
+map.set(obj, 'bar'); // map
+map.clear();         // undefined
+map.has(obj);        // false
+```
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/es6-weak-map.png)](https://travis-ci.org/medikoo/es6-weak-map)
+
+       $ npm test
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js
new file mode 100644 (file)
index 0000000..6c3f306
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(require('es5-ext/global'), 'WeakMap',
+               { value: require('./polyfill'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js
new file mode 100644 (file)
index 0000000..5edc4cc
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               WeakMap : require('./polyfill');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js
new file mode 100644 (file)
index 0000000..455ff81
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function () {
+       var map;
+       if (typeof WeakMap !== 'function') return false;
+       map = new WeakMap();
+       if (typeof map.set !== 'function') return false;
+       if (map.set({}, 1) !== map) return false;
+       if (typeof map.clear !== 'function') return false;
+       if (typeof map.delete !== 'function') return false;
+       if (typeof map.has !== 'function') return false;
+
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js
new file mode 100644 (file)
index 0000000..b3fe5a5
--- /dev/null
@@ -0,0 +1,10 @@
+// Exports true if environment provides native `WeakMap` implementation,
+// whatever that is.
+
+'use strict';
+
+module.exports = (function () {
+       if (typeof WeakMap === 'undefined') return false;
+       return (Object.prototype.toString.call(WeakMap.prototype) ===
+                       '[object WeakMap]');
+}());
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js
new file mode 100644 (file)
index 0000000..10bb2a1
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var toStringTagSymbol = require('es6-symbol').toStringTag
+
+  , toString = Object.prototype.toString
+  , id = '[object WeakMap]'
+  , Global = (typeof WeakMap === 'undefined') ? null : WeakMap;
+
+module.exports = function (x) {
+       return (x && ((Global && (x instanceof Global)) ||
+                       (toString.call(x) === id) || (x[toStringTagSymbol] === 'WeakMap'))) ||
+                       false;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.lint b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.lint
new file mode 100644 (file)
index 0000000..858b753
--- /dev/null
@@ -0,0 +1,12 @@
+@root
+
+es5
+module
+
+tabs
+indent 2
+maxlen 80
+
+ass
+nomen
+plusplus
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.npmignore b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.travis.yml b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.travis.yml
new file mode 100644 (file)
index 0000000..50008b2
--- /dev/null
@@ -0,0 +1,9 @@
+language: node_js
+node_js:
+  - 0.8
+  - 0.10
+  - 0.11
+
+notifications:
+  email:
+    - medikoo+d@medikoo.com
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/CHANGES b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/CHANGES
new file mode 100644 (file)
index 0000000..45233f7
--- /dev/null
@@ -0,0 +1,7 @@
+v0.1.1  --  2014.04.24
+- Add `autoBind` and `lazy` utilities
+- Allow to pass other options to be merged onto created descriptor.
+  Useful when used with other custom utilties
+
+v0.1.0  --  2013.06.20
+Initial (derived from es5-ext project)
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/LICENCE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/LICENCE
new file mode 100644 (file)
index 0000000..aaf3528
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013 Mariusz Nowak (www.medikoo.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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/README.md
new file mode 100644 (file)
index 0000000..872d493
--- /dev/null
@@ -0,0 +1,108 @@
+# D - Property descriptor factory
+
+_Originally derived from [es5-ext](https://github.com/medikoo/es5-ext) package._
+
+Defining properties with descriptors is very verbose:
+
+```javascript
+var Account = function () {};
+Object.defineProperties(Account.prototype, {
+  deposit: { value: function () {
+      /* ... */
+    }, configurable: true, enumerable: false, writable: true },
+  whithdraw: { value: function () {
+      /* ... */
+    }, configurable: true, enumerable: false, writable: true },
+  balance: { get: function () {
+      /* ... */
+    }, configurable: true, enumerable: false }
+});
+```
+
+D cuts that to:
+
+```javascript
+var d = require('d');
+
+var Account = function () {};
+Object.defineProperties(Account.prototype, {
+  deposit: d(function () {
+    /* ... */
+  }),
+  whithdraw: d(function () {
+    /* ... */
+  }),
+  balance: d.gs(function () {
+    /* ... */
+  })
+});
+```
+
+By default, created descriptor follow characteristics of native ES5 properties, and defines values as:
+
+```javascript
+{ configurable: true, enumerable: false, writable: true }
+```
+
+You can overwrite it by preceding _value_ argument with instruction:
+```javascript
+d('c', value); // { configurable: true, enumerable: false, writable: false }
+d('ce', value); // { configurable: true, enumerable: true, writable: false }
+d('e', value); // { configurable: false, enumerable: true, writable: false }
+
+// Same way for get/set:
+d.gs('e', value); // { configurable: false, enumerable: true }
+```
+
+### Other utilities
+
+#### autoBind(obj, props) _(d/auto-bind)_
+
+Define methods which will be automatically bound to its instances
+
+```javascript
+var d = require('d');
+var autoBind = require('d/auto-bind');
+
+var Foo = function () { this._count = 0; };
+autoBind(Foo.prototype, {
+  increment: d(function () { ++this._count; });
+});
+
+var foo = new Foo();
+
+// Increment foo counter on each domEl click
+domEl.addEventListener('click', foo.increment, false);
+```
+
+#### lazy(obj, props) _(d/lazy)_
+
+Define lazy properties, which will be resolved on first access
+
+```javascript
+var d = require('d');
+var lazy = require('d/lazy');
+
+var Foo = function () {};
+lazy(Foo.prototype, {
+  items: d(function () { return []; })
+});
+
+var foo = new Foo();
+foo.items.push(1, 2); // foo.items array created
+```
+
+## Installation
+### NPM
+
+In your project path:
+
+       $ npm install d
+
+### Browser
+
+You can easily bundle _D_ for browser with [modules-webmake](https://github.com/medikoo/modules-webmake)
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/d.png)](https://travis-ci.org/medikoo/d)
+
+       $ npm test
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js
new file mode 100644 (file)
index 0000000..1b00dba
--- /dev/null
@@ -0,0 +1,31 @@
+'use strict';
+
+var copy       = require('es5-ext/object/copy')
+  , map        = require('es5-ext/object/map')
+  , callable   = require('es5-ext/object/valid-callable')
+  , validValue = require('es5-ext/object/valid-value')
+
+  , bind = Function.prototype.bind, defineProperty = Object.defineProperty
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , define;
+
+define = function (name, desc, bindTo) {
+       var value = validValue(desc) && callable(desc.value), dgs;
+       dgs = copy(desc);
+       delete dgs.writable;
+       delete dgs.value;
+       dgs.get = function () {
+               if (hasOwnProperty.call(this, name)) return value;
+               desc.value = bind.call(value, (bindTo == null) ? this : this[bindTo]);
+               defineProperty(this, name, desc);
+               return this[name];
+       };
+       return dgs;
+};
+
+module.exports = function (props/*, bindTo*/) {
+       var bindTo = arguments[1];
+       return map(props, function (desc, name) {
+               return define(name, desc, bindTo);
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js
new file mode 100644 (file)
index 0000000..076ae46
--- /dev/null
@@ -0,0 +1,63 @@
+'use strict';
+
+var assign        = require('es5-ext/object/assign')
+  , normalizeOpts = require('es5-ext/object/normalize-options')
+  , isCallable    = require('es5-ext/object/is-callable')
+  , contains      = require('es5-ext/string/#/contains')
+
+  , d;
+
+d = module.exports = function (dscr, value/*, options*/) {
+       var c, e, w, options, desc;
+       if ((arguments.length < 2) || (typeof dscr !== 'string')) {
+               options = value;
+               value = dscr;
+               dscr = null;
+       } else {
+               options = arguments[2];
+       }
+       if (dscr == null) {
+               c = w = true;
+               e = false;
+       } else {
+               c = contains.call(dscr, 'c');
+               e = contains.call(dscr, 'e');
+               w = contains.call(dscr, 'w');
+       }
+
+       desc = { value: value, configurable: c, enumerable: e, writable: w };
+       return !options ? desc : assign(normalizeOpts(options), desc);
+};
+
+d.gs = function (dscr, get, set/*, options*/) {
+       var c, e, options, desc;
+       if (typeof dscr !== 'string') {
+               options = set;
+               set = get;
+               get = dscr;
+               dscr = null;
+       } else {
+               options = arguments[3];
+       }
+       if (get == null) {
+               get = undefined;
+       } else if (!isCallable(get)) {
+               options = get;
+               get = set = undefined;
+       } else if (set == null) {
+               set = undefined;
+       } else if (!isCallable(set)) {
+               options = set;
+               set = undefined;
+       }
+       if (dscr == null) {
+               c = true;
+               e = false;
+       } else {
+               c = contains.call(dscr, 'c');
+               e = contains.call(dscr, 'e');
+       }
+
+       desc = { get: get, set: set, configurable: c, enumerable: e };
+       return !options ? desc : assign(normalizeOpts(options), desc);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js
new file mode 100644 (file)
index 0000000..61e4665
--- /dev/null
@@ -0,0 +1,111 @@
+'use strict';
+
+var map        = require('es5-ext/object/map')
+  , isCallable = require('es5-ext/object/is-callable')
+  , validValue = require('es5-ext/object/valid-value')
+  , contains   = require('es5-ext/string/#/contains')
+
+  , call = Function.prototype.call
+  , defineProperty = Object.defineProperty
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+  , getPrototypeOf = Object.getPrototypeOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , cacheDesc = { configurable: false, enumerable: false, writable: false,
+               value: null }
+  , define;
+
+define = function (name, options) {
+       var value, dgs, cacheName, desc, writable = false, resolvable
+         , flat;
+       options = Object(validValue(options));
+       cacheName = options.cacheName;
+       flat = options.flat;
+       if (cacheName == null) cacheName = name;
+       delete options.cacheName;
+       value = options.value;
+       resolvable = isCallable(value);
+       delete options.value;
+       dgs = { configurable: Boolean(options.configurable),
+               enumerable: Boolean(options.enumerable) };
+       if (name !== cacheName) {
+               dgs.get = function () {
+                       if (hasOwnProperty.call(this, cacheName)) return this[cacheName];
+                       cacheDesc.value = resolvable ? call.call(value, this, options) : value;
+                       cacheDesc.writable = writable;
+                       defineProperty(this, cacheName, cacheDesc);
+                       cacheDesc.value = null;
+                       if (desc) defineProperty(this, name, desc);
+                       return this[cacheName];
+               };
+       } else if (!flat) {
+               dgs.get = function self() {
+                       var ownDesc;
+                       if (hasOwnProperty.call(this, name)) {
+                               ownDesc = getOwnPropertyDescriptor(this, name);
+                               // It happens in Safari, that getter is still called after property
+                               // was defined with a value, following workarounds that
+                               if (ownDesc.hasOwnProperty('value')) return ownDesc.value;
+                               if ((typeof ownDesc.get === 'function') && (ownDesc.get !== self)) {
+                                       return ownDesc.get.call(this);
+                               }
+                               return value;
+                       }
+                       desc.value = resolvable ? call.call(value, this, options) : value;
+                       defineProperty(this, name, desc);
+                       desc.value = null;
+                       return this[name];
+               };
+       } else {
+               dgs.get = function self() {
+                       var base = this, ownDesc;
+                       if (hasOwnProperty.call(this, name)) {
+                               // It happens in Safari, that getter is still called after property
+                               // was defined with a value, following workarounds that
+                               ownDesc = getOwnPropertyDescriptor(this, name);
+                               if (ownDesc.hasOwnProperty('value')) return ownDesc.value;
+                               if ((typeof ownDesc.get === 'function') && (ownDesc.get !== self)) {
+                                       return ownDesc.get.call(this);
+                               }
+                       }
+                       while (!hasOwnProperty.call(base, name)) base = getPrototypeOf(base);
+                       desc.value = resolvable ? call.call(value, base, options) : value;
+                       defineProperty(base, name, desc);
+                       desc.value = null;
+                       return base[name];
+               };
+       }
+       dgs.set = function (value) {
+               dgs.get.call(this);
+               this[cacheName] = value;
+       };
+       if (options.desc) {
+               desc = {
+                       configurable: contains.call(options.desc, 'c'),
+                       enumerable: contains.call(options.desc, 'e')
+               };
+               if (cacheName === name) {
+                       desc.writable = contains.call(options.desc, 'w');
+                       desc.value = null;
+               } else {
+                       writable = contains.call(options.desc, 'w');
+                       desc.get = dgs.get;
+                       desc.set = dgs.set;
+               }
+               delete options.desc;
+       } else if (cacheName === name) {
+               desc = {
+                       configurable: Boolean(options.configurable),
+                       enumerable: Boolean(options.enumerable),
+                       writable: Boolean(options.writable),
+                       value: null
+               };
+       }
+       delete options.configurable;
+       delete options.enumerable;
+       delete options.writable;
+       return dgs;
+};
+
+module.exports = function (props) {
+       return map(props, function (desc, name) { return define(name, desc); });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json
new file mode 100644 (file)
index 0000000..03d81db
--- /dev/null
@@ -0,0 +1,59 @@
+{
+  "name": "d",
+  "version": "0.1.1",
+  "description": "Property descriptor factory",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "scripts": {
+    "test": "node node_modules/tad/bin/tad"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/d.git"
+  },
+  "keywords": [
+    "descriptor",
+    "es",
+    "ecmascript",
+    "ecma",
+    "property",
+    "descriptors",
+    "meta",
+    "properties"
+  ],
+  "dependencies": {
+    "es5-ext": "~0.10.2"
+  },
+  "devDependencies": {
+    "tad": "~0.1.21"
+  },
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/medikoo/d/issues"
+  },
+  "homepage": "https://github.com/medikoo/d",
+  "_id": "d@0.1.1",
+  "dist": {
+    "shasum": "da184c535d18d8ee7ba2aa229b914009fae11309",
+    "tarball": "http://registry.npmjs.org/d/-/d-0.1.1.tgz"
+  },
+  "_from": "d@>=0.1.1 <0.2.0",
+  "_npmVersion": "1.4.3",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "directories": {},
+  "_shasum": "da184c535d18d8ee7ba2aa229b914009fae11309",
+  "_resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/auto-bind.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/auto-bind.js
new file mode 100644 (file)
index 0000000..89edfb8
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var d = require('../');
+
+module.exports = function (t, a) {
+       var o = Object.defineProperties({}, t({
+               bar: d(function () { return this === o; }),
+               bar2: d(function () { return this; })
+       }));
+
+       a.deep([(o.bar)(), (o.bar2)()], [true, o]);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/index.js
new file mode 100644 (file)
index 0000000..3db0af1
--- /dev/null
@@ -0,0 +1,182 @@
+'use strict';
+
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+module.exports = function (t, a) {
+       var o, c, cg, cs, ce, ceg, ces, cew, cw, e, eg, es, ew, v, vg, vs, w, df, dfg
+         , dfs;
+
+       o = Object.create(Object.prototype, {
+               c: t('c', c = {}),
+               cgs: t.gs('c', cg = function () {}, cs = function () {}),
+               ce: t('ce', ce = {}),
+               cegs: t.gs('ce', ceg = function () {}, ces = function () {}),
+               cew: t('cew', cew = {}),
+               cw: t('cw', cw = {}),
+               e: t('e', e = {}),
+               egs: t.gs('e', eg = function () {}, es = function () {}),
+               ew: t('ew', ew = {}),
+               v: t('', v = {}),
+               vgs: t.gs('', vg = function () {}, vs = function () {}),
+               w: t('w', w = {}),
+
+               df: t(df = {}),
+               dfgs: t.gs(dfg = function () {}, dfs = function () {})
+       });
+
+       return {
+               c: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'c');
+                       a(d.value, c, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'cgs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, cg, "GS Get");
+                       a(d.set, cs, "GS Set");
+                       a(d.configurable, true, "GS Configurable");
+                       a(d.enumerable, false, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               ce: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'ce');
+                       a(d.value, ce, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'cegs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, ceg, "GS Get");
+                       a(d.set, ces, "GS Set");
+                       a(d.configurable, true, "GS Configurable");
+                       a(d.enumerable, true, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               cew: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'cew');
+                       a(d.value, cew, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               cw: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'cw');
+                       a(d.value, cw, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               e: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'e');
+                       a(d.value, e, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'egs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, eg, "GS Get");
+                       a(d.set, es, "GS Set");
+                       a(d.configurable, false, "GS Configurable");
+                       a(d.enumerable, true, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               ew: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'ew');
+                       a(d.value, ew, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               v: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'v');
+                       a(d.value, v, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'vgs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, vg, "GS Get");
+                       a(d.set, vs, "GS Set");
+                       a(d.configurable, false, "GS Configurable");
+                       a(d.enumerable, false, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               w: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'w');
+                       a(d.value, w, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               d: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'df');
+                       a(d.value, df, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, true, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'dfgs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, dfg, "GS Get");
+                       a(d.set, dfs, "GS Set");
+                       a(d.configurable, true, "GS Configurable");
+                       a(d.enumerable, false, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               Options: {
+                       v: function (a) {
+                               var x = {}, d = t(x, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, writable: true,
+                                       value: x, foo: true }, "No descriptor");
+                               d = t('c', 'foo', { marko: 'elo' });
+                               a.deep(d, { configurable: true, enumerable: false, writable: false,
+                                       value: 'foo', marko: 'elo' }, "Descriptor");
+                       },
+                       gs: function (a) {
+                               var gFn = function () {}, sFn = function () {}, d;
+                               d = t.gs(gFn, sFn, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, get: gFn, set: sFn,
+                                       foo: true }, "No descriptor");
+                               d = t.gs(null, sFn, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, get: undefined,
+                                       set: sFn, foo: true }, "No descriptor: Just set");
+                               d = t.gs(gFn, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, get: gFn,
+                                       set: undefined, foo: true }, "No descriptor: Just get");
+
+                               d = t.gs('e', gFn, sFn, { bar: true });
+                               a.deep(d, { configurable: false, enumerable: true, get: gFn, set: sFn,
+                                       bar: true }, "Descriptor");
+                               d = t.gs('e', null, sFn, { bar: true });
+                               a.deep(d, { configurable: false, enumerable: true, get: undefined,
+                                       set: sFn, bar: true }, "Descriptor: Just set");
+                               d = t.gs('e', gFn, { bar: true });
+                               a.deep(d, { configurable: false, enumerable: true, get: gFn,
+                                       set: undefined, bar: true }, "Descriptor: Just get");
+                       }
+               }
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/lazy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/lazy.js
new file mode 100644 (file)
index 0000000..8266deb
--- /dev/null
@@ -0,0 +1,77 @@
+'use strict';
+
+var d = require('../')
+
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+module.exports = function (t, a) {
+       var Foo = function () {}, i = 1, o, o2, desc;
+       Object.defineProperties(Foo.prototype, t({
+               bar: d(function () { return ++i; }),
+               bar2: d(function () { return this.bar + 23; }),
+               bar3: d(function () { return this.bar2 + 34; }, { desc: 'ew' }),
+               bar4: d(function () { return this.bar3 + 12; }, { cacheName: '_bar4_' }),
+               bar5: d(function () { return this.bar4 + 3; },
+                       { cacheName: '_bar5_', desc: 'e' })
+       }));
+
+       desc = getOwnPropertyDescriptor(Foo.prototype, 'bar');
+       a(desc.configurable, true, "Configurable: default");
+       a(desc.enumerable, false, "Enumerable: default");
+
+       o = new Foo();
+       a.deep([o.bar, o.bar2, o.bar3, o.bar4, o.bar5], [2, 25, 59, 71, 74],
+               "Values");
+
+       a.deep(getOwnPropertyDescriptor(o, 'bar3'), { configurable: false,
+               enumerable: true, writable: true, value: 59 }, "Desc");
+       a(o.hasOwnProperty('bar4'), false, "Cache not exposed");
+       desc = getOwnPropertyDescriptor(o, 'bar5');
+       a.deep(desc, { configurable: false,
+               enumerable: true, get: desc.get, set: desc.set }, "Cache & Desc: desc");
+
+       o2 = Object.create(o);
+       o2.bar = 30;
+       o2.bar3 = 100;
+
+       a.deep([o2.bar, o2.bar2, o2.bar3, o2.bar4, o2.bar5], [30, 25, 100, 112, 115],
+               "Extension Values");
+
+       Foo = function () {};
+       Object.defineProperties(Foo.prototype, t({
+               test: d('w', function () { return 'raz'; }),
+               test2: d('', function () { return 'raz'; }, { desc: 'w' }),
+               test3: d('', function () { return 'raz'; },
+                       { cacheName: '__test3__', desc: 'w' }),
+               test4: d('w', 'bar')
+       }));
+
+       o = new Foo();
+       o.test = 'marko';
+       a.deep(getOwnPropertyDescriptor(o, 'test'),
+               { configurable: false, enumerable: false, writable: true, value: 'marko' },
+               "Set before get");
+       o.test2 = 'marko2';
+       a.deep(getOwnPropertyDescriptor(o, 'test2'),
+               { configurable: false, enumerable: false, writable: true, value: 'marko2' },
+               "Set before get: Custom desc");
+       o.test3 = 'marko3';
+       a.deep(getOwnPropertyDescriptor(o, '__test3__'),
+               { configurable: false, enumerable: false, writable: true, value: 'marko3' },
+               "Set before get: Custom cache name");
+       a(o.test4, 'bar', "Resolve by value");
+
+       a.h1("Flat");
+       Object.defineProperties(Foo.prototype, t({
+               flat: d(function () { return 'foo'; }, { flat: true }),
+               flat2: d(function () { return 'bar'; }, { flat: true })
+       }));
+
+       a.h2("Instance");
+       a(o.flat, 'foo', "Value");
+       a(o.hasOwnProperty('flat'), false, "Instance");
+       a(Foo.prototype.flat, 'foo', "Prototype");
+
+       a.h2("Direct");
+       a(Foo.prototype.flat2, 'bar');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lint b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lint
new file mode 100644 (file)
index 0000000..d1da610
--- /dev/null
@@ -0,0 +1,38 @@
+@root
+
+module
+
+indent 2
+maxlen 100
+tabs
+
+ass
+continue
+forin
+nomen
+plusplus
+vars
+
+./global.js
+./function/_define-length.js
+./function/#/copy.js
+./object/unserialize.js
+./test/function/valid-function.js
+evil
+
+./math/_pack-ieee754.js
+./math/_unpack-ieee754.js
+./math/clz32/shim.js
+./math/imul/shim.js
+./number/to-uint32.js
+./string/#/at.js
+bitwise
+
+./math/fround/shim.js
+predef+ Float32Array
+
+./object/first-key.js
+forin
+
+./test/reg-exp/#/index.js
+predef+ __dirname
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lintignore b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lintignore
new file mode 100644 (file)
index 0000000..ed703ed
--- /dev/null
@@ -0,0 +1,8 @@
+/string/#/normalize/_data.js
+/test/boolean/is-boolean.js
+/test/date/is-date.js
+/test/number/is-number.js
+/test/object/is-copy.js
+/test/object/is-object.js
+/test/reg-exp/is-reg-exp.js
+/test/string/is-string.js
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.npmignore b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.npmignore
new file mode 100644 (file)
index 0000000..eb09b50
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/.lintcache
+/npm-debug.log
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.travis.yml b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.travis.yml
new file mode 100644 (file)
index 0000000..a183dbc
--- /dev/null
@@ -0,0 +1,15 @@
+sudo: false # http://docs.travis-ci.com/user/workers/container-based-infrastructure/
+language: node_js
+node_js:
+  - 0.10
+  - 0.12
+  - iojs
+
+before_install:
+  - mkdir node_modules; ln -s ../ node_modules/es5-ext
+
+notifications:
+  email:
+    - medikoo+es5-ext@medikoo.com
+
+script: "npm test && npm run lint"
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/CHANGES b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/CHANGES
new file mode 100644 (file)
index 0000000..5d0ace5
--- /dev/null
@@ -0,0 +1,611 @@
+v0.10.7  --  2015.04.22
+* New utlitities. They're convention differs from v0.10, as they were supposed to land in v1.
+  Still they're non breaking and start the conventions to be used in v1
+  * Object.validateArrayLike
+  * Object.validateArrayLikeObject
+  * Object.validateStringifiable
+  * Object.validateStringifiableValue
+  * Universal utilities for array-like/iterable objects
+    * Iterable.is
+    * Iterable.validate
+    * Iterable.validateObject
+    * Iterable.forEach
+* Fix camelToHyphen resolution, it must be absolutely reversable by hyphenToCamel
+* Fix calculations of large numbers in Math.tanh
+* Fix algorithm of Math.sinh
+* Fix indexes to not use real symbols
+* Fix length of String.fromCodePoint
+* Fix tests of Array#copyWithin
+* Update Travis CI configuration
+
+v0.10.6  --  2015.02.02
+* Fix handling of infinite values in Math.trunc
+* Fix handling of getters in Object.normalizeOptions
+
+v0.10.5  --  2015.01.20
+* Add Function#toStringTokens
+* Add Object.serialize and Object.unserialize
+* Add String.randomUniq
+* Fix Strin#camelToHyphen issue with tokens that end with digit
+* Optimise Number.isInteger logic
+* Improve documentation
+* Configure lint scripts
+* Fix spelling of LICENSE
+
+v0.10.4  --  2014.04.30
+* Assure maximum spec compliance of Array.of and Array.from (thanks @mathiasbynens)
+* Improve documentations
+
+v0.10.3  --  2014.04.29
+Provide accurate iterators handling:
+* Array.from improvements:
+  * Assure right unicode symbols resolution when processing strings in Array.from
+  * Rely on ES6 symbol shim and use native @@iterator Symbol if provided by environment
+* Add methods:
+  * Array.prototype.entries
+  * Array.prototype.keys
+  * Array.prototype.values
+  * Array.prototype[@@iterator]
+  * String.prototype[@@iterator]
+
+Improve documentation
+
+v0.10.2  --  2014.04.24
+- Simplify and deprecate `isCallable`. It seems in ES5 based engines there are
+  no callable objects which are `typeof obj !== 'function'`
+- Update Array.from map callback signature (up to latest resolution of TC39)
+- Improve documentation
+
+v0.10.1  --  2014.04.14
+Bump version for npm
+(Workaround for accidental premature publish & unpublish of v0.10.0 a while ago)
+
+v0.10.0  --  2014.04.13
+Major update:
+- All methods and function specified for ECMAScript 6 are now introduced as
+  shims accompanied with functions through which (optionally) they can be
+  implementend on native objects
+- Filename convention was changed to shorter and strictly lower case names. e.g.
+  `lib/String/prototype/starts-with` became `string/#/starts-with`
+- Generated functions are guaranteed to have expected length
+- Objects with null prototype (created via `Object.create(null)`) are widely
+  supported (older version have crashed due to implied `obj.hasOwnProperty` and
+  related invocations)
+- Support array subclasses
+- When handling lists do not limit its length to Uint32 range
+- Use newly introduced `Object.eq` for strict equality in place of `Object.is`
+- Iteration of Object have been improved so properties that were hidden or
+  removed after iteration started are not iterated.
+
+Additions:
+- `Array.isPlainArray`
+- `Array.validArray`
+- `Array.prototype.concat` (as updated with ES6)
+- `Array.prototype.copyWithin` (as introduced with ES6)
+- `Array.prototype.fill` (as introduced with ES6)
+- `Array.prototype.filter` (as updated with ES6)
+- `Array.prototype.findIndex` (as introduced with ES6)
+- `Array.prototype.map` (as updated with ES6)
+- `Array.prototype.separate`
+- `Array.prototype.slice` (as updated with ES6)
+- `Array.prototype.splice` (as updated with ES6)
+- `Function.prototype.copy`
+- `Math.acosh` (as introduced with ES6)
+- `Math.atanh` (as introduced with ES6)
+- `Math.cbrt` (as introduced with ES6)
+- `Math.clz32` (as introduced with ES6)
+- `Math.cosh` (as introduced with ES6)
+- `Math.expm1` (as introduced with ES6)
+- `Math.fround` (as introduced with ES6)
+- `Math.hypot` (as introduced with ES6)
+- `Math.imul` (as introduced with ES6)
+- `Math.log2` (as introduced with ES6)
+- `Math.log10` (as introduced with ES6)
+- `Math.log1p` (as introduced with ES6)
+- `Math.sinh` (as introduced with ES6)
+- `Math.tanh` (as introduced with ES6)
+- `Math.trunc` (as introduced with ES6)
+- `Number.EPSILON` (as introduced with ES6)
+- `Number.MIN_SAFE_INTEGER` (as introduced with ES6)
+- `Number.MAX_SAFE_INTEGER` (as introduced with ES6)
+- `Number.isFinite` (as introduced with ES6)
+- `Number.isInteger` (as introduced with ES6)
+- `Number.isSafeInteger` (as introduced with ES6)
+- `Object.create` (with fix for V8 issue which disallows prototype turn of
+  objects derived from null
+- `Object.eq` - Less restrictive version of `Object.is` based on SameValueZero
+  algorithm
+- `Object.firstKey`
+- `Object.keys` (as updated with ES6)
+- `Object.mixinPrototypes`
+- `Object.primitiveSet`
+- `Object.setPrototypeOf` (as introduced with ES6)
+- `Object.validObject`
+- `RegExp.escape`
+- `RegExp.prototype.match` (as introduced with ES6)
+- `RegExp.prototype.replace` (as introduced with ES6)
+- `RegExp.prototype.search` (as introduced with ES6)
+- `RegExp.prototype.split` (as introduced with ES6)
+- `RegExp.prototype.sticky` (as introduced with ES6)
+- `RegExp.prototype.unicode` (as introduced with ES6)
+- `String.fromCodePoint` (as introduced with ES6)
+- `String.raw` (as introduced with ES6)
+- `String.prototype.at`
+- `String.prototype.codePointAt` (as introduced with ES6)
+- `String.prototype.normalize` (as introduced with ES6)
+- `String.prototype.plainReplaceAll`
+
+Removals:
+- `reserved` set
+- `Array.prototype.commonLeft`
+- `Function.insert`
+- `Function.remove`
+- `Function.prototype.silent`
+- `Function.prototype.wrap`
+- `Object.descriptor` Move to external `d` project.
+  See: https://github.com/medikoo/d
+- `Object.diff`
+- `Object.extendDeep`
+- `Object.reduce`
+- `Object.values`
+- `String.prototype.trimCommonLeft`
+
+Renames:
+- `Function.i` into `Function.identity`
+- `Function.k` into `Function.constant`
+- `Number.toInt` into `Number.toInteger`
+- `Number.toUint` into `Number.toPosInteger`
+- `Object.extend` into `Object.assign` (as introduced in ES 6)
+- `Object.extendProperties` into `Object.mixin`, with improved internal
+  handling, so it matches temporarily specified `Object.mixin` for ECMAScript 6
+- `Object.isList` into `Object.isArrayLike`
+- `Object.mapToArray` into `Object.toArray` (with fixed function length)
+- `Object.toPlainObject` into `Object.normalizeOptions` (as this is the real
+  use case where we use this function)
+- `Function.prototype.chain` into `Function.prototype.compose`
+- `Function.prototype.match` into `Function.prototype.spread`
+- `String.prototype.format` into `String.formatMethod`
+
+Improvements & Fixes:
+- Remove workaround for primitive values handling in object iterators
+- `Array.from`: Update so it follows ES 6 spec
+- `Array.prototype.compact`: filters just null and undefined values
+  (not all falsies)
+- `Array.prototype.eIndexOf` and `Array.prototype.eLastIndexOf`: fix position
+  handling, improve internals
+- `Array.prototype.find`: return undefined not null, in case of not found
+  (follow ES 6)
+- `Array.prototype.remove` fix function length
+- `Error.custom`: simplify, Custom class case is addressed by outer
+  `error-create` project -> https://github.com/medikoo/error-create
+- `Error.isError` true only for Error instances (remove detection of host
+  Exception objects)
+- `Number.prototype.pad`: Normalize negative pad
+- `Object.clear`: Handle errors same way as in `Object.assign`
+- `Object.compact`: filters just null and undefined values (not all falsies)
+- `Object.compare`: Take into account NaN values
+- `Object.copy`: Split into `Object.copy` and `Object.copyDeep`
+- `Object.isCopy`: Separate into `Object.isCopy` and `Object.isCopyDeep`, where
+  `isCopyDeep` handles nested plain objects and plain arrays only
+- `String.prototype.endsWith`: Adjust up to ES6 specification
+- `String.prototype.repeat`: Adjust up to ES6 specification and improve algorithm
+- `String.prototype.simpleReplace`: Rename into `String.prototype.plainReplace`
+- `String.prototype.startsWith`: Adjust up to ES6 specification
+- Update lint rules, and adjust code to that
+- Update Travis CI configuration
+- Remove Makefile (it's cross-env utility)
+
+v0.9.2  --  2013.03.11
+Added:
+* Array.prototype.isCopy
+* Array.prototype.isUniq
+* Error.CustomError
+* Function.validFunction
+* Object.extendDeep
+* Object.descriptor.binder
+* Object.safeTraverse
+* RegExp.validRegExp
+* String.prototype.capitalize
+* String.prototype.simpleReplace
+
+Fixed:
+* Fix Array.prototype.diff for sparse arrays
+* Accept primitive objects as input values in Object iteration methods and
+  Object.clear, Object.count, Object.diff, Object.extend,
+  Object.getPropertyNames, Object.values
+* Pass expected arguments to callbacks of Object.filter, Object.mapKeys,
+  Object.mapToArray, Object.map
+* Improve callable callback support in Object.mapToArray
+
+v0.9.1  --  2012.09.17
+* Object.reduce - reduce for hash-like collections
+* Accapt any callable object as callback in Object.filter, mapKeys and map
+* Convention cleanup
+
+v0.9.0  --  2012.09.13
+We're getting to real solid API
+
+Removed:
+* Function#memoize - it's grown up to be external package, to be soon published
+  as 'memoizee'
+* String.guid - it doesn't fit es5-ext (extensions) concept, will be provided as
+  external package
+# Function.arguments - obsolete
+# Function.context - obsolete
+# Function#flip - not readable when used, so it was never used
+# Object.clone - obsolete and confusing
+
+Added:
+* String#camelToHyphen - String format convertion
+
+Renamed:
+* String#dashToCamelCase -> String#hyphenToCamel
+
+Fixes:
+* Object.isObject - Quote names in literals that match reserved keywords
+  (older implementations crashed on that)
+* String#repeat - Do not accept negative values (coerce them to 1)
+
+Improvements:
+* Array#remove - Accepts many arguments, we can now remove many values at once
+* Object iterators (forEach, map, some) - Compare function invoked with scope
+  object bound to this
+* Function#curry - Algorithm cleanup
+* Object.isCopy - Support for all types, not just plain objects
+* Object.isPlainObject - Support for cross-frame objects
+* Do not memoize any of the functions, it shouldn't be decided internally
+* Remove Object.freeze calls in reserved, it's not up to convention
+* Improved documentation
+* Better linting (hard-core approach using both JSLint mod and JSHint)
+* Optional arguments are now documented in funtions signature
+
+v0.8.2  --  2012.06.22
+Fix errors in Array's intersection and exclusion methods, related to improper
+usage of contains method
+
+v0.8.1  --  2012.06.13
+Reorganized internal logic of Function.prototype.memoize. So it's more safe now
+and clears cache properly. Additionally preventCache option was provided.
+
+v0.8.0  --  2012.05.28
+Again, major overhaul. Probably last experimental stuff was trashed, all API
+looks more like standard extensions now.
+
+Changes:
+* Turn all Object.prototype extensions into functions and move them to Object
+namespace. We learned that extending Object.prototype is bad idea in any case.
+* Rename Function.prototype.curry into Function.prototype.partial. This function
+  is really doing partial application while currying is slightly different
+  concept.
+* Convert Function.prototype.ncurry to new implementation of
+  Function.prototype.curry, it now serves real curry concept additionaly it
+  covers use cases for aritize and hold, which were removed.
+* Rename Array's peek to last, and provide support for sparse arrays in it
+* Rename Date's monthDaysCount into daysInMonth
+* Simplify object iterators, now order of iteration can be configured with just
+  compareFn argument (no extra byKeys option)
+* Rename Object.isDuplicate to Object.isCopy
+* Rename Object.isEqual to Object.is which is compatible with future 'is'
+  keyword
+* Function.memoize is now Function.prototype.memoize. Additionally clear cache
+  functionality is added, and access to original arguments object.
+* Rename validation functions: assertNotNull to validValue, assertCallable to
+  validCallable. validValue was moved to Object namespace. On success they now
+  return validated value instead of true, it supports better composition.
+  Additionally created Date.validDate and Error.validError
+* All documentation is now held in README.md not in code files.
+* Move guid to String namespace. All guids now start with numbers.
+* Array.generate: fill argument is now optional
+* Object.toArray is now Array.from (as new ES6 specification draft suggests)
+* All methods that rely on indexOf or lastIndexOf, now rely on egal (Object.is)
+  versions of them (eIndexOf, eLastIndexOf)
+* Turn all get* functions that returned methods into actuall methods (get*
+  functionality can still be achieved with help of Function.prototype.partial).
+  So: Date.getFormat is now Date.prototype.format,
+  Number.getPad is now Number.prototype.pad,
+  String.getFormat is now String.prototype.format,
+  String.getIndent is now String.prototype.indent,
+  String.getPad is now String.prototype.pad
+* Refactored Object.descriptor, it is now just two functions, main one and
+  main.gs, main is for describing values, and gs for describing getters and
+  setters. Configuration is passed with first argument as string e.g. 'ce' for
+  configurable and enumerable. If no configuration string is provided then by
+  default it returns configurable and writable but not enumerable for value or
+  configurable but not enumerable for getter/setter
+* Function.prototype.silent now returns prepared function (it was
+  expected to be fixed for 0.7)
+* Reserved keywords map (reserved) is now array not hash.
+* Object.merge is now Object.extend (while former Object.extend was completely
+  removed) - 'extend' implies that we change object, not creating new one (as
+  'merge' may imply). Similarily Object.mergeProperties was renamed to
+  Object.extendProperties
+* Position argument support in Array.prototype.contains and
+  String.prototype.contains (so it follows ES6 specification draft)
+* endPosition argument support in String.prototype.endsWith and fromPosition
+  argument support in String.prototype.startsWith (so it follows ES6
+  specification draft)
+* Better and cleaner String.prototype.indent implementation. No default value
+  for indent string argument, optional nest value (defaults to 1), remove
+  nostart argument
+* Correct length values for most methods (so they reflect length of similar
+  methods in standard)
+* Length argument is now optional in number and string pad methods.
+* Improve arguments validation in general, so it adheres to standard conventions
+* Fixed format of package.json
+
+Removed methods and functions:
+* Object.prototype.slice - Object is not ordered collection, so slice doesn't
+  make sense.
+* Function's rcurry, rncurry, s - too cumbersome for JS, not many use cases for
+  that
+* Function.prototype.aritize and Function.prototype.hold - same functionality
+  can be achieved with new Function.prototype.curry
+* Function.prototype.log - provided more generic Function.prototype.wrap for
+  same use case
+* getNextIdGenerator - no use case for that (String.guid should be used if
+  needed)
+* Object.toObject - Can be now acheived with Object(validValue(x))
+* Array.prototype.someValue - no real use case (personally used once and
+  case was already controversial)
+* Date.prototype.duration - moved to external package
+* Number.getAutoincrement - No real use case
+* Object.prototype.extend, Object.prototype.override,
+  Object.prototype.plainCreate, Object.prototype.plainExtend - It was probably
+  too complex, same should be achieved just with Object.create,
+  Object.descriptor and by saving references to super methods in local scope.
+* Object.getCompareBy - Functions should be created individually for each use
+  case
+* Object.get, Object.getSet, Object.set, Object.unset - Not many use cases and
+  same can be easily achieved with simple inline function
+* String.getPrefixWith - Not real use case for something that can be easily
+  achieved with '+' operator
+* Object.isPrimitive - It's just negation of Object.isObject
+* Number.prototype.isLess, Number.prototype.isLessOrEqual - they shouldn't be in
+  Number namespace and should rather be addressed with simple inline functions.
+* Number.prototype.subtract - Should rather be addressed with simple inline
+  function
+
+New methods and functions:
+* Array.prototype.lastIndex - Returns last declared index in array
+* String.prototype.last - last for strings
+* Function.prototype.wrap - Wrap function with other, it allows to specify
+  before and after behavior transform return value or prevent original function
+  from being called.
+* Math.sign - Returns sign of a number (already in ES6 specification draft)
+* Number.toInt - Converts value to integer (already in ES6 specification draft)
+* Number.isNaN - Returns true if value is NaN (already in ES6 specification
+  draft)
+* Number.toUint - Converts value to unsigned integer
+* Number.toUint32 - Converts value to 32bit unsigned integer
+* Array.prototype.eIndexOf, eLastIndexOf - Egal version (that uses Object.is) of
+  standard methods (all methods that were using native indexOf or lastIndexOf
+  now uses eIndexOf and elastIndexOf respectively)
+* Array.of - as it's specified for ES6
+
+Fixes:
+* Fixed binarySearch so it always returns valid list index
+* Object.isList - it failed on lists that are callable (e.g. NodeList in Nitro
+  engine)
+* Object.map now supports third argument for callback
+
+v0.7.1  --  2012.01.05
+New methods:
+* Array.prototype.firstIndex - returns first valid index of array (for
+       sparse arrays it may not be '0'
+
+Improvements:
+* Array.prototype.first - now returns value for index returned by firstIndex
+* Object.prototype.mapToArray - can be called without callback, then array of
+       key-value pairs is returned
+
+Fixes
+* Array.prototype.forEachRight, object's length read through UInt32 conversion
+
+v0.7.0  --  2011.12.27
+Major update.
+Stepped back from experimental ideas and introduced more standard approach
+taking example from how ES5 methods and functions are designed. One exceptions
+is that, we don’t refrain from declaring methods for Object.prototype - it’s up
+to developer whether how he decides to use it in his context (as function or as
+method).
+
+In general:
+* Removed any method 'functionalization' and functionalize method itself.
+       es5-ext declares plain methods, which can be configured to work as functions
+       with call.bind(method) - see documentation.
+* Removed separation of Object methods for ES5 (with descriptors) and
+       ES3 (plain) - we're following ES5 idea on that, some methods are intended just
+       for enumerable properties and some are for all properties, all are declared
+       for Object.prototype
+* Removed separation of Array generic (collected in List folder) and not generic
+       methods (collected in Array folder). Now all methods are generic and are in
+       Array/prototype folder. This separation also meant, that methods in Array are
+       usually destructive. We don’t do that separation now, there’s generally no use
+       case for destructive iterators, we should be fine with one version of each
+       method, (same as ES5 is fine with  e.g. one, non destructive 'filter' method)
+* Folder structure resembles tree of native ES5 Objects
+* All methods are written with ES5 conventions in mind, it means that most
+       methods are generic and can be run on any object. In more detail:
+       ** Array.prototype and Object.prototype methods can be run on any object (any
+               not null or undefined value),
+       ** Date.prototype methods should be called only on Date instances.
+       ** Function.prototype methods can be called on any callable objects (not
+               necessarily functions)
+       ** Number.prototype & String.prototype methods can be called on any value, in
+               case of Number it it’ll be degraded to number, in case of string it’ll be
+               degraded to string.
+* Travis CI support (only for Node v0.6 branch, as v0.4 has buggy V8 version)
+
+Improvements for existing functions and methods:
+* Function.memoize (was Function.cache) is now fully generic, can operate on any
+       type of arguments and it’s NaN safe (all NaN objects are considered equal)
+* Method properties passed to Object.prototype.extend or
+       Object.prototype.override can aside of _super optionally take prototype object
+       via _proto argument
+* Object iterators: forEach, mapToArray and every can now iterate in specified
+       order
+* pluck, invoke and other functions that return reusable functions or methods
+       have now their results memoized.
+
+New methods:
+* Global: assertNotNull, getNextIdGenerator, guid, isEqual, isPrimitive,
+       toObject
+* Array: generate
+* Array.prototype: binarySearch, clear, contains, diff, exclusion, find, first,
+       forEachRight, group, indexesOf, intersection, remove, someRight, someValue
+* Boolean: isBoolean
+* Date: isDate
+* Function: arguments, context, insert, isArguments, remove
+* Function.prototype: not, silent
+* Number: getAutoincrement, isNumber
+* Number.prototype: isLessOrEqual, isLess, subtract
+* Object: assertCallable, descriptor (functions for clean descriptors),
+       getCompareBy, isCallable, isObject
+* Object.prototype: clone (real clone), compact, count, diff, empty,
+       getPropertyNames, get, keyOf, mapKeys, override, plainCreate, plainExtend,
+       slice, some, unset
+* RegExp: isRegExp
+* String: getPrefixWith, isString
+* String.prototype: caseInsensitiveCompare, contains, isNumeric
+
+Renamed methods:
+* Date.clone -> Date.prototype.copy
+* Date.format -> Date.getFormat
+* Date/day/floor -> Date.prototype.floorDay
+* Date/month/floor -> Date.prototype.floorMonth
+* Date/month/year -> Date.prototype.floorYear
+* Function.cache -> Function.memoize
+* Function.getApplyArg -> Function.prototype.match
+* Function.sequence -> Function.prototype.chain
+* List.findSameStartLength -> Array.prototype.commonLeft
+* Number.pad -> Number.getPad
+* Object/plain/clone -> Object.prototype.copy
+* Object/plain/elevate -> Object.prototype.flatten
+* Object/plain/same -> Object.prototype.isDuplicate
+* Object/plain/setValue -> Object.getSet
+* String.format -> String.getFormat
+* String.indent -> String.getIndent
+* String.pad -> String.getPad
+* String.trimLeftStr -> String.prototype.trimCommonLeft
+* Object.merge -> Object.prototype.mergeProperties
+* Object/plain/pluck -> Object.prototype.get
+* Array.clone is now Array.prototype.copy and can be used also on any array-like
+       objects
+* List.isList -> Object.isList
+* List.toArray -> Object.prototype.toArray
+* String/convert/dashToCamelCase -> String.prototype.dashToCamelCase
+
+Removed methods:
+* Array.compact - removed destructive version (that operated on same array), we
+       have now non destructive version as Array.prototype.compact.
+* Function.applyBind -> use apply.bind directly
+* Function.bindBind -> use bind.bind directly
+* Function.callBind -> use call.bind directly
+* Fuction.clone -> no valid use case
+* Function.dscope -> controversial approach, shouldn’t be considered seriously
+* Function.functionalize -> It was experimental but standards are standards
+* List/sort/length -> It can be easy obtained by Object.getCompareBy(‘length’)
+* List.concat -> Concat’s for array-like’s makes no sense, just convert to array
+       first
+* List.every -> Use Array.prototype.every directly
+* List.filter -> Use Array.prototype.filter directly
+* List.forEach -> User Array.prototype.forEach directly
+* List.isListObject -> No valid use case, do: isList(list) && (typeof list ===
+       'object’)
+* List.map -> Use Array.prototype.map directly
+* List.reduce -> Use Array.prototype.reduce directly
+* List.shiftSame -> Use Array.prototype.commonLeft and do slice
+* List.slice -> Use Array.prototype.slice directly
+* List.some -> Use Array.prototype.some directly
+* Object.bindMethods -> it was version that considered descriptors, we have now
+       Object.prototype.bindMethods which operates only on enumerable properties
+* Object.every -> version that considered all properties, we have now
+       Object.prototype.every which iterates only enumerables
+* Object.invoke -> no use case
+* Object.mergeDeep -> no use case
+* Object.pluck -> no use case
+* Object.same -> it considered descriptors, now there’s only Object.isDuplicate
+       which compares only enumerable properties
+* Object.sameType -> no use case
+* Object.toDescriptor and Object.toDescriptors -> replaced by much nicer
+       Object.descriptor functions
+* Object/plain/link -> no use case (it was used internally only by
+       Object/plain/merge)
+* Object/plain/setTrue -> now easily configurable by more universal
+       Object.getSet(true)
+* String.trimRightStr -> Eventually String.prototype.trimCommonRight will be
+       added
+
+v0.6.3  --  2011.12.12
+* Cleared npm warning for misnamed property in package.json
+
+v0.6.2  --  2011.08.12
+* Calling String.indent without scope (global scope then) now treated as calling
+  it with null scope, it allows more direct invocations when using default nest
+  string: indent().call(str, nest)
+
+v0.6.1  --  2011.08.08
+* Added TAD test suite to devDependencies, configured test commands.
+  Tests can be run with 'make test' or 'npm test'
+
+v0.6.0  --  2011.08.07
+New methods:
+* Array: clone, compact (in place)
+* Date: format, duration, clone, monthDaysCount, day.floor, month.floor,
+  year.floor
+* Function: getApplyArg, , ncurry, rncurry, hold, cache, log
+* List: findSameStartLength, shiftSame, peek, isListObject
+* Number: pad
+* Object: sameType, toString, mapToArray, mergeDeep, toDescriptor,
+  toDescriptors, invoke
+* String: startsWith, endsWith, indent, trimLeftStr, trimRightStr, pad, format
+
+Fixed:
+* Object.extend does now prototypal extend as exptected
+* Object.merge now tries to overwrite only configurable properties
+* Function.flip
+
+Improved:
+* Faster List.toArray
+* Better global retrieval
+* Functionalized all Function methods
+* Renamed bindApply and bindCall to applyBind and callBind
+* Removed Function.inherit (as it's unintuitive curry clone)
+* Straightforward logic in Function.k
+* Fixed naming of some tests files (letter case issue)
+* Renamed Function.saturate into Function.lock
+* String.dashToCamelCase digits support
+* Strings now considered as List objects
+* Improved List.compact
+* Concise logic for List.concat
+* Test wit TAD in clean ES5 context
+
+v0.5.1  --  2011.07.11
+* Function's bindBind, bindCall and bindApply now more versatile
+
+v0.5.0  --  2011.07.07
+* Removed Object.is and List.apply
+* Renamed Object.plain.is to Object.plain.isPlainObject (keep naming convention
+  consistent)
+* Improved documentation
+
+v0.4.0  --  2011.07.05
+* Take most functions on Object to Object.plain to keep them away from object
+  descriptors
+* Object functions with ES5 standard in mind (object descriptors)
+
+v0.3.0  --  2011.06.24
+* New functions
+* Consistent file naming (dash instead of camelCase)
+
+v0.2.1  --  2011.05.28
+* Renamed Functions.K and Function.S to to lowercase versions (use consistent
+  naming)
+
+v0.2.0  --  2011.05.28
+* Renamed Array folder to List (as its generic functions for array-like objects)
+* Added Makefile
+* Added various functions
+
+v0.1.0  --  2011.05.24
+* Initial version
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/LICENSE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/LICENSE
new file mode 100644 (file)
index 0000000..de39071
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2011-2015 Mariusz Nowak (www.medikoo.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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/README.md
new file mode 100644 (file)
index 0000000..11d8a34
--- /dev/null
@@ -0,0 +1,993 @@
+# es5-ext
+## ECMAScript 5 extensions
+### (with respect to ECMAScript 6 standard)
+
+Shims for upcoming ES6 standard and other goodies implemented strictly with ECMAScript conventions in mind.
+
+It's designed to be used in compliant ECMAScript 5 or ECMAScript 6 environments. Older environments are not supported, although most of the features should work with correct ECMAScript 5 shim on board.
+
+When used in ECMAScript 6 environment, native implementation (if valid) takes precedence over shims.
+
+### Installation
+
+       $ npm install es5-ext
+       
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+### Usage
+
+#### ECMAScript 6 features
+
+You can force ES6 features to be implemented in your environment, e.g. following will assign `from` function to `Array` (only if it's not implemented already).
+
+```javascript
+require('es5-ext/array/from/implement');
+Array.from('foo'); // ['f', 'o', 'o']
+```
+
+You can also access shims directly, without fixing native objects. Following will return native `Array.from` if it's available and fallback to shim if it's not.
+
+```javascript
+var aFrom = require('es5-ext/array/from');
+aFrom('foo'); // ['f', 'o', 'o']
+```
+
+If you want to use shim unconditionally (even if native implementation exists) do:
+
+```javascript
+var aFrom = require('es5-ext/array/from/shim');
+aFrom('foo'); // ['f', 'o', 'o']
+```
+
+##### List of ES6 shims
+
+It's about properties introduced with ES6 and those that have been updated in new spec.
+
+- `Array.from` -> `require('es5-ext/array/from')`
+- `Array.of` -> `require('es5-ext/array/of')`
+- `Array.prototype.concat` -> `require('es5-ext/array/#/concat')`
+- `Array.prototype.copyWithin` -> `require('es5-ext/array/#/copy-within')`
+- `Array.prototype.entries` -> `require('es5-ext/array/#/entries')`
+- `Array.prototype.fill` -> `require('es5-ext/array/#/fill')`
+- `Array.prototype.filter` -> `require('es5-ext/array/#/filter')`
+- `Array.prototype.find` -> `require('es5-ext/array/#/find')`
+- `Array.prototype.findIndex` -> `require('es5-ext/array/#/find-index')`
+- `Array.prototype.keys` -> `require('es5-ext/array/#/keys')`
+- `Array.prototype.map` -> `require('es5-ext/array/#/map')`
+- `Array.prototype.slice` -> `require('es5-ext/array/#/slice')`
+- `Array.prototype.splice` -> `require('es5-ext/array/#/splice')`
+- `Array.prototype.values` -> `require('es5-ext/array/#/values')`
+- `Array.prototype[@@iterator]` -> `require('es5-ext/array/#/@@iterator')`
+- `Math.acosh` -> `require('es5-ext/math/acosh')`
+- `Math.asinh` -> `require('es5-ext/math/asinh')`
+- `Math.atanh` -> `require('es5-ext/math/atanh')`
+- `Math.cbrt` -> `require('es5-ext/math/cbrt')`
+- `Math.clz32` -> `require('es5-ext/math/clz32')`
+- `Math.cosh` -> `require('es5-ext/math/cosh')`
+- `Math.exmp1` -> `require('es5-ext/math/expm1')`
+- `Math.fround` -> `require('es5-ext/math/fround')`
+- `Math.hypot` -> `require('es5-ext/math/hypot')`
+- `Math.imul` -> `require('es5-ext/math/imul')`
+- `Math.log1p` -> `require('es5-ext/math/log1p')`
+- `Math.log2` -> `require('es5-ext/math/log2')`
+- `Math.log10` -> `require('es5-ext/math/log10')`
+- `Math.sign` -> `require('es5-ext/math/sign')`
+- `Math.signh` -> `require('es5-ext/math/signh')`
+- `Math.tanh` -> `require('es5-ext/math/tanh')`
+- `Math.trunc` -> `require('es5-ext/math/trunc')`
+- `Number.EPSILON` -> `require('es5-ext/number/epsilon')`
+- `Number.MAX_SAFE_INTEGER` -> `require('es5-ext/number/max-safe-integer')`
+- `Number.MIN_SAFE_INTEGER` -> `require('es5-ext/number/min-safe-integer')`
+- `Number.isFinite` -> `require('es5-ext/number/is-finite')`
+- `Number.isInteger` -> `require('es5-ext/number/is-integer')`
+- `Number.isNaN` -> `require('es5-ext/number/is-nan')`
+- `Number.isSafeInteger` -> `require('es5-ext/number/is-safe-integer')`
+- `Object.assign` -> `require('es5-ext/object/assign')`
+- `Object.keys` -> `require('es5-ext/object/keys')`
+- `Object.setPrototypeOf` -> `require('es5-ext/object/set-prototype-of')`
+- `RegExp.prototype.match` -> `require('es5-ext/reg-exp/#/match')`
+- `RegExp.prototype.replace` -> `require('es5-ext/reg-exp/#/replace')`
+- `RegExp.prototype.search` -> `require('es5-ext/reg-exp/#/search')`
+- `RegExp.prototype.split` -> `require('es5-ext/reg-exp/#/split')`
+- `RegExp.prototype.sticky` -> Implement with `require('es5-ext/reg-exp/#/sticky/implement')`, use as function with `require('es5-ext/reg-exp/#/is-sticky')`
+- `RegExp.prototype.unicode` -> Implement with `require('es5-ext/reg-exp/#/unicode/implement')`, use as function with `require('es5-ext/reg-exp/#/is-unicode')`
+- `String.fromCodePoint` -> `require('es5-ext/string/from-code-point')`
+- `String.raw` -> `require('es5-ext/string/raw')`
+- `String.prototype.codePointAt` -> `require('es5-ext/string/#/code-point-at')`
+- `String.prototype.contains` -> `require('es5-ext/string/#/contains')`
+- `String.prototype.endsWith` -> `require('es5-ext/string/#/ends-with')`
+- `String.prototype.normalize` -> `require('es5-ext/string/#/normalize')`
+- `String.prototype.repeat` -> `require('es5-ext/string/#/repeat')`
+- `String.prototype.startsWith` -> `require('es5-ext/string/#/starts-with')`
+- `String.prototype[@@iterator]` -> `require('es5-ext/string/#/@@iterator')`
+
+#### Non ECMAScript standard features
+
+__es5-ext__ provides also other utils, and implements them as if they were proposed for a standard. It mostly offers methods (not functions) which can directly be assigned to native prototypes:
+
+```javascript
+Object.defineProperty(Function.prototype, 'partial', { value: require('es5-ext/function/#/partial'),
+  configurable: true, enumerable: false, writable: true });
+Object.defineProperty(Array.prototype, 'flatten', { value: require('es5-ext/array/#/flatten'),
+  configurable: true, enumerable: false, writable: true });
+Object.defineProperty(String.prototype, 'capitalize', { value: require('es5-ext/string/#/capitalize'),
+  configurable: true, enumerable: false, writable: true });
+```
+
+See [es5-extend](https://github.com/wookieb/es5-extend#es5-extend), a great utility that automatically will extend natives for you. 
+
+__Important:__ Remember to __not__ extend natives in scope of generic reusable packages (e.g. ones you intend to publish to npm). Extending natives is fine __only__ if you're the _owner_ of the global scope, so e.g. in final project you lead development of.
+
+When you're in situation when native extensions are not good idea, then you should use methods indirectly:
+
+
+```javascript
+var flatten = require('es5-ext/array/#/flatten');
+
+flatten.call([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+for better convenience you can turn methods into functions:
+
+
+```javascript
+var call = Function.prototype.call
+var flatten = call.bind(require('es5-ext/array/#/flatten'));
+
+flatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+You can configure custom toolkit (like [underscorejs](http://underscorejs.org/)), and use it throughout your application
+
+```javascript
+var util = {};
+util.partial = call.bind(require('es5-ext/function/#/partial'));
+util.flatten = call.bind(require('es5-ext/array/#/flatten'));
+util.startsWith = call.bind(require('es5-ext/string/#/starts-with'));
+
+util.flatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+As with native ones most methods are generic and can be run on any type of object.
+
+## API
+
+### Global extensions
+
+#### global _(es5-ext/global)_
+
+Object that represents global scope
+
+### Array Constructor extensions
+
+#### from(arrayLike[, mapFn[, thisArg]]) _(es5-ext/array/from)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from).  
+Returns array representation of _iterable_ or _arrayLike_. If _arrayLike_ is an instance of array, its copy is returned.
+
+#### generate([length[, …fill]]) _(es5-ext/array/generate)_
+
+Generate an array of pre-given _length_ built of repeated arguments.
+
+#### isPlainArray(x) _(es5-ext/array/is-plain-array)_
+
+Returns true if object is plain array (not instance of one of the Array's extensions).
+
+#### of([…items]) _(es5-ext/array/of)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.of).  
+Create an array from given arguments.
+
+#### toArray(obj) _(es5-ext/array/to-array)_
+
+Returns array representation of `obj`. If `obj` is already an array, `obj` is returned back.
+
+#### validArray(obj) _(es5-ext/array/valid-array)_
+
+Returns `obj` if it's an array, otherwise throws `TypeError`
+
+### Array Prototype extensions
+
+#### arr.binarySearch(compareFn) _(es5-ext/array/#/binary-search)_
+
+In __sorted__ list search for index of item for which _compareFn_ returns value closest to _0_.  
+It's variant of binary search algorithm
+
+#### arr.clear() _(es5-ext/array/#/clear)_
+
+Clears the array
+
+#### arr.compact() _(es5-ext/array/#/compact)_
+
+Returns a copy of the context with all non-values (`null` or `undefined`) removed.
+
+#### arr.concat() _(es5-ext/array/#/concat)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.concat).  
+ES6's version of `concat`. Supports `isConcatSpreadable` symbol, and returns array of same type as the context.
+
+#### arr.contains(searchElement[, position]) _(es5-ext/array/#/contains)_
+
+Whether list contains the given value.
+
+#### arr.copyWithin(target, start[, end]) _(es5-ext/array/#/copy-within)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.copywithin).  
+
+#### arr.diff(other) _(es5-ext/array/#/diff)_
+
+Returns the array of elements that are present in context list but not present in other list.
+
+#### arr.eIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-index-of)_
+
+_egal_ version of `indexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision
+
+#### arr.eLastIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-last-index-of)_
+
+_egal_ version of `lastIndexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision
+
+#### arr.entries() _(es5-ext/array/#/entries)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.entries).  
+Returns iterator object, which traverses the array. Each value is represented with an array, where first value is an index and second is corresponding to index value.
+
+#### arr.exclusion([…lists]]) _(es5-ext/array/#/exclusion)_
+
+Returns the array of elements that are found only in one of the lists (either context list or list provided in arguments).
+
+#### arr.fill(value[, start, end]) _(es5-ext/array/#/fill)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.fill).  
+
+#### arr.filter(callback[, thisArg]) _(es5-ext/array/#/filter)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.filter).  
+ES6's version of `filter`, returns array of same type as the context.
+
+#### arr.find(predicate[, thisArg]) _(es5-ext/array/#/find)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.find).  
+Return first element for which given function returns true
+
+#### arr.findIndex(predicate[, thisArg]) _(es5-ext/array/#/find-index)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.findindex).  
+Return first index for which given function returns true
+
+#### arr.first() _(es5-ext/array/#/first)_
+
+Returns value for first defined index
+
+#### arr.firstIndex() _(es5-ext/array/#/first-index)_
+
+Returns first declared index of the array
+
+#### arr.flatten() _(es5-ext/array/#/flatten)_
+
+Returns flattened version of the array
+
+#### arr.forEachRight(cb[, thisArg]) _(es5-ext/array/#/for-each-right)_
+
+`forEach` starting from last element
+
+#### arr.group(cb[, thisArg]) _(es5-ext/array/#/group)_
+
+Group list elements by value returned by _cb_ function
+
+#### arr.indexesOf(searchElement[, fromIndex]) _(es5-ext/array/#/indexes-of)_
+
+Returns array of all indexes of given value
+
+#### arr.intersection([…lists]) _(es5-ext/array/#/intersection)_
+
+Computes the array of values that are the intersection of all lists (context list and lists given in arguments)
+
+#### arr.isCopy(other) _(es5-ext/array/#/is-copy)_
+
+Returns true if both context and _other_ lists have same content
+
+#### arr.isUniq() _(es5-ext/array/#/is-uniq)_
+
+Returns true if all values in array are unique
+
+#### arr.keys() _(es5-ext/array/#/keys)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.keys).  
+Returns iterator object, which traverses all array indexes.
+
+#### arr.last() _(es5-ext/array/#/last)_
+
+Returns value of last defined index
+
+#### arr.lastIndex() _(es5-ext/array/#/last)_
+
+Returns last defined index of the array
+
+#### arr.map(callback[, thisArg]) _(es5-ext/array/#/map)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.map).  
+ES6's version of `map`, returns array of same type as the context.
+
+#### arr.remove(value[, …valuen]) _(es5-ext/array/#/remove)_
+
+Remove values from the array
+
+#### arr.separate(sep) _(es5-ext/array/#/separate)_
+
+Returns array with items separated with `sep` value
+
+#### arr.slice(callback[, thisArg]) _(es5-ext/array/#/slice)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.slice).  
+ES6's version of `slice`, returns array of same type as the context.
+
+#### arr.someRight(cb[, thisArg]) _(es5-ext/array/#/someRight)_
+
+`some` starting from last element
+
+#### arr.splice(callback[, thisArg]) _(es5-ext/array/#/splice)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.splice).  
+ES6's version of `splice`, returns array of same type as the context.
+
+#### arr.uniq() _(es5-ext/array/#/uniq)_
+
+Returns duplicate-free version of the array
+
+#### arr.values() _(es5-ext/array/#/values)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.values).  
+Returns iterator object which traverses all array values.
+
+#### arr[@@iterator] _(es5-ext/array/#/@@iterator)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype-@@iterator).  
+Returns iterator object which traverses all array values.
+
+### Boolean Constructor extensions
+
+#### isBoolean(x) _(es5-ext/boolean/is-boolean)_
+
+Whether value is boolean
+
+### Date Constructor extensions
+
+#### isDate(x) _(es5-ext/date/is-date)_
+
+Whether value is date instance
+
+#### validDate(x) _(es5-ext/date/valid-date)_
+
+If given object is not date throw TypeError in other case return it.
+
+### Date Prototype extensions
+
+#### date.copy(date) _(es5-ext/date/#/copy)_
+
+Returns a copy of the date object
+
+#### date.daysInMonth() _(es5-ext/date/#/days-in-month)_
+
+Returns number of days of date's month
+
+#### date.floorDay() _(es5-ext/date/#/floor-day)_
+
+Sets the date time to 00:00:00.000
+
+#### date.floorMonth() _(es5-ext/date/#/floor-month)_
+
+Sets date day to 1 and date time to 00:00:00.000
+
+#### date.floorYear() _(es5-ext/date/#/floor-year)_
+
+Sets date month to 0, day to 1 and date time to 00:00:00.000
+
+#### date.format(pattern) _(es5-ext/date/#/format)_
+
+Formats date up to given string. Supported patterns:
+
+* `%Y` - Year with century, 1999, 2003
+* `%y` - Year without century, 99, 03
+* `%m` - Month, 01..12
+* `%d` - Day of the month 01..31
+* `%H` - Hour (24-hour clock), 00..23
+* `%M` - Minute, 00..59
+* `%S` - Second, 00..59
+* `%L` - Milliseconds, 000..999
+
+### Error Constructor extensions
+
+#### custom(message/*, code, ext*/) _(es5-ext/error/custom)_
+
+Creates custom error object, optinally extended with `code` and other extension properties (provided with `ext` object)  
+
+#### isError(x) _(es5-ext/error/is-error)_
+
+Whether value is an error (instance of `Error`).  
+
+#### validError(x) _(es5-ext/error/valid-error)_
+
+If given object is not error throw TypeError in other case return it.
+
+### Error Prototype extensions
+
+#### err.throw() _(es5-ext/error/#/throw)_
+
+Throws error
+
+### Function Constructor extensions
+
+Some of the functions were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele
+
+#### constant(x) _(es5-ext/function/constant)_
+
+Returns a constant function that returns pregiven argument
+
+_k(x)(y)  =def  x_
+
+#### identity(x) _(es5-ext/function/identity)_
+
+Identity function. Returns first argument
+
+_i(x)  =def  x_
+
+#### invoke(name[, …args]) _(es5-ext/function/invoke)_
+
+Returns a function that takes an object as an argument, and applies object's
+_name_ method to arguments.  
+_name_ can be name of the method or method itself.
+
+_invoke(name, …args)(object, …args2)  =def  object\[name\]\(…args, …args2\)_
+
+#### isArguments(x) _(es5-ext/function/is-arguments)_
+
+Whether value is arguments object
+
+#### isFunction(arg) _(es5-ext/function/is-function)_
+
+Wether value is instance of function
+
+#### noop() _(es5-ext/function/noop)_
+
+No operation function
+
+#### pluck(name) _(es5-ext/function/pluck)_
+
+Returns a function that takes an object, and returns the value of its _name_
+property
+
+_pluck(name)(obj)  =def  obj[name]_
+
+#### validFunction(arg) _(es5-ext/function/valid-function)_
+
+If given object is not function throw TypeError in other case return it.
+
+### Function Prototype extensions
+
+Some of the methods were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele
+
+#### fn.compose([…fns]) _(es5-ext/function/#/compose)_
+
+Applies the functions in reverse argument-list order.
+
+_f1.compose(f2, f3, f4)(…args)  =def  f1(f2(f3(f4(…arg))))_
+
+#### fn.copy() _(es5-ext/function/#/copy)_
+
+Produces copy of given function
+
+#### fn.curry([n]) _(es5-ext/function/#/curry)_
+
+Invoking the function returned by this function only _n_ arguments are passed to the underlying function. If the underlying function is not saturated, the result is a function that passes all its arguments to the underlying function.  
+If _n_ is not provided then it defaults to context function length
+
+_f.curry(4)(arg1, arg2)(arg3)(arg4)  =def  f(arg1, args2, arg3, arg4)_
+
+#### fn.lock([…args]) _(es5-ext/function/#/lock)_
+
+Returns a function that applies the underlying function to _args_, and ignores its own arguments.
+
+_f.lock(…args)(…args2)  =def  f(…args)_
+
+_Named after it's counterpart in Google Closure_
+
+#### fn.not() _(es5-ext/function/#/not)_
+
+Returns a function that returns boolean negation of value returned by underlying function.
+
+_f.not()(…args)  =def !f(…args)_
+
+#### fn.partial([…args]) _(es5-ext/function/#/partial)_
+
+Returns a function that when called will behave like context function called with initially passed arguments. If more arguments are suplilied, they are appended to initial args.
+
+_f.partial(…args1)(…args2)  =def  f(…args1, …args2)_
+
+#### fn.spread() _(es5-ext/function/#/spread)_
+
+Returns a function that applies underlying function with first list argument
+
+_f.match()(args)  =def  f.apply(null, args)_
+
+#### fn.toStringTokens() _(es5-ext/function/#/to-string-tokens)_
+
+Serializes function into two (arguments and body) string tokens. Result is plain object with `args` and `body` properties.
+
+### Math extensions
+
+#### acosh(x) _(es5-ext/math/acosh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.acosh).  
+
+#### asinh(x) _(es5-ext/math/asinh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.asinh).  
+
+#### atanh(x) _(es5-ext/math/atanh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.atanh).  
+
+#### cbrt(x) _(es5-ext/math/cbrt)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cbrt).  
+
+#### clz32(x) _(es5-ext/math/clz32)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.clz32).  
+
+#### cosh(x) _(es5-ext/math/cosh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cosh).  
+
+#### expm1(x) _(es5-ext/math/expm1)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.expm1).  
+
+#### fround(x) _(es5-ext/math/fround)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.fround).  
+
+#### hypot([…values]) _(es5-ext/math/hypot)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.hypot).  
+
+#### imul(x, y) _(es5-ext/math/imul)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.imul).  
+
+#### log1p(x) _(es5-ext/math/log1p)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log1p).  
+
+#### log2(x) _(es5-ext/math/log2)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log2).  
+
+#### log10(x) _(es5-ext/math/log10)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log10).  
+
+#### sign(x) _(es5-ext/math/sign)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sign).  
+
+#### sinh(x) _(es5-ext/math/sinh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sinh).  
+
+#### tanh(x) _(es5-ext/math/tanh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.tanh).  
+
+#### trunc(x) _(es5-ext/math/trunc)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.trunc).  
+
+### Number Constructor extensions
+
+#### EPSILON _(es5-ext/number/epsilon)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.epsilon).  
+
+The difference between 1 and the smallest value greater than 1 that is representable as a Number value, which is approximately 2.2204460492503130808472633361816 x 10-16.
+
+#### isFinite(x) _(es5-ext/number/is-finite)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite).  
+Whether value is finite. Differs from global isNaN that it doesn't do type coercion.
+
+#### isInteger(x) _(es5-ext/number/is-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isinteger).  
+Whether value is integer.
+
+#### isNaN(x) _(es5-ext/number/is-nan)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isnan).  
+Whether value is NaN. Differs from global isNaN that it doesn't do type coercion.
+
+#### isNumber(x) _(es5-ext/number/is-number)_
+
+Whether given value is number
+
+#### isSafeInteger(x) _(es5-ext/number/is-safe-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.issafeinteger).  
+
+#### MAX_SAFE_INTEGER _(es5-ext/number/max-safe-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.maxsafeinteger).  
+The value of Number.MAX_SAFE_INTEGER is 9007199254740991.
+
+#### MIN_SAFE_INTEGER _(es5-ext/number/min-safe-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.minsafeinteger).  
+The value of Number.MIN_SAFE_INTEGER is -9007199254740991 (253-1).
+
+#### toInteger(x) _(es5-ext/number/to-integer)_
+
+Converts value to integer
+
+#### toPosInteger(x) _(es5-ext/number/to-pos-integer)_
+
+Converts value to positive integer. If provided value is less than 0, then 0 is returned
+
+#### toUint32(x) _(es5-ext/number/to-uint32)_
+
+Converts value to unsigned 32 bit integer. This type is used for array lengths.
+See: http://www.2ality.com/2012/02/js-integers.html
+
+### Number Prototype extensions
+
+#### num.pad(length[, precision]) _(es5-ext/number/#/pad)_
+
+Pad given number with zeros. Returns string
+
+### Object Constructor extensions
+
+#### assign(target, source[, …sourcen]) _(es5-ext/object/assign)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).  
+Extend _target_ by enumerable own properties of other objects. If properties are already set on target object, they will be overwritten.
+
+#### clear(obj) _(es5-ext/object/clear)_
+
+Remove all enumerable own properties of the object
+
+#### compact(obj) _(es5-ext/object/compact)_
+
+Returns copy of the object with all enumerable properties that have no falsy values
+
+#### compare(obj1, obj2) _(es5-ext/object/compare)_
+
+Universal cross-type compare function. To be used for e.g. array sort.
+
+#### copy(obj) _(es5-ext/object/copy)_
+
+Returns copy of the object with all enumerable properties.
+
+#### copyDeep(obj) _(es5-ext/object/copy-deep)_
+
+Returns deep copy of the object with all enumerable properties.
+
+#### count(obj) _(es5-ext/object/count)_
+
+Counts number of enumerable own properties on object
+
+#### create(obj[, properties]) _(es5-ext/object/create)_
+
+`Object.create` alternative that provides workaround for [V8 issue](http://code.google.com/p/v8/issues/detail?id=2804).
+
+When `null` is provided as a prototype, it's substituted with specially prepared object that derives from Object.prototype but has all Object.prototype properties shadowed with undefined.
+
+It's quirky solution that allows us to have plain objects with no truthy properties but with turnable prototype.
+
+Use only for objects that you plan to switch prototypes of and be aware of limitations of this workaround.
+
+#### eq(x, y) _(es5-ext/object/eq)_
+
+Whether two values are equal, using [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.
+
+#### every(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/every)_
+
+Analogous to Array.prototype.every. Returns true if every key-value pair in this object satisfies the provided testing function.  
+Optionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### filter(obj, cb[, thisArg]) _(es5-ext/object/filter)_
+
+Analogous to Array.prototype.filter. Returns new object with properites for which _cb_ function returned truthy value.
+
+#### firstKey(obj) _(es5-ext/object/first-key)_
+
+Returns first enumerable key of the object, as keys are unordered by specification, it can be any key of an object.
+
+#### flatten(obj) _(es5-ext/object/flatten)_
+
+Returns new object, with flatten properties of input object
+
+_flatten({ a: { b: 1 }, c: { d: 1 } })  =def  { b: 1, d: 1 }_
+
+#### forEach(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/for-each)_
+
+Analogous to Array.prototype.forEach. Calls a function for each key-value pair found in object
+Optionally _compareFn_ can be provided which assures that properties are iterated in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### getPropertyNames() _(es5-ext/object/get-property-names)_
+
+Get all (not just own) property names of the object
+
+#### is(x, y) _(es5-ext/object/is)_
+
+Whether two values are equal, using [_SameValue_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.
+
+#### isArrayLike(x) _(es5-ext/object/is-array-like)_
+
+Whether object is array-like object
+
+#### isCopy(x, y) _(es5-ext/object/is-copy)_
+
+Two values are considered a copy of same value when all of their own enumerable properties have same values.
+
+#### isCopyDeep(x, y) _(es5-ext/object/is-copy-deep)_
+
+Deep comparision of objects
+
+#### isEmpty(obj) _(es5-ext/object/is-empty)_
+
+True if object doesn't have any own enumerable property
+
+#### isObject(arg) _(es5-ext/object/is-object)_
+
+Whether value is not primitive
+
+#### isPlainObject(arg) _(es5-ext/object/is-plain-object)_
+
+Whether object is plain object, its protototype should be Object.prototype and it cannot be host object.
+
+#### keyOf(obj, searchValue) _(es5-ext/object/key-of)_
+
+Search object for value
+
+#### keys(obj) _(es5-ext/object/keys)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys).  
+ES6's version of `keys`, doesn't throw on primitive input
+
+#### map(obj, cb[, thisArg]) _(es5-ext/object/map)_
+
+Analogous to Array.prototype.map. Creates a new object with properties which values are results of calling a provided function on every key-value pair in this object.
+
+#### mapKeys(obj, cb[, thisArg]) _(es5-ext/object/map-keys)_
+
+Create new object with same values, but remapped keys
+
+#### mixin(target, source) _(es5-ext/object/mixin)_
+
+Extend _target_ by all own properties of other objects. Properties found in both objects will be overwritten (unless they're not configurable and cannot be overwritten).
+_It was for a moment part of ECMAScript 6 draft._
+
+#### mixinPrototypes(target, …source]) _(es5-ext/object/mixin-prototypes)_
+
+Extends _target_, with all source and source's prototype properties.
+Useful as an alternative for `setPrototypeOf` in environments in which it cannot be shimmed (no `__proto__` support).
+
+#### normalizeOptions(options) _(es5-ext/object/normalize-options)_
+
+Normalizes options object into flat plain object.  
+
+Useful for functions in which we either need to keep options object for future reference or need to modify it for internal use.
+
+- It never returns input `options` object back (always a copy is created)
+- `options` can be undefined in such case empty plain object is returned.
+- Copies all enumerable properties found down prototype chain.
+
+#### primitiveSet([…names]) _(es5-ext/object/primitive-set)_
+
+Creates `null` prototype based plain object, and sets on it all property names provided in arguments to true.
+
+#### safeTraverse(obj[, …names]) _(es5-ext/object/safe-traverse)_
+
+Safe navigation of object properties. See http://wiki.ecmascript.org/doku.php?id=strawman:existential_operator
+
+#### serialize(value) _(es5-ext/object/serialize)_
+
+Serialize value into string. Differs from [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) that it serializes also dates, functions and regular expresssions.
+
+#### setPrototypeOf(object, proto) _(es5-ext/object/set-prototype-of)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.setprototypeof).  
+If native version is not provided, it depends on existence of `__proto__` functionality, if it's missing, `null` instead of function is exposed.
+
+#### some(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/some)_
+
+Analogous to Array.prototype.some Returns true if any key-value pair satisfies the provided
+testing function.  
+Optionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### toArray(obj[, cb[, thisArg[, compareFn]]]) _(es5-ext/object/to-array)_
+
+Creates an array of results of calling a provided function on every key-value pair in this object.  
+Optionally _compareFn_ can be provided which assures that results are added in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### unserialize(str) _(es5-ext/object/unserialize)_
+
+Userializes value previously serialized with [serialize](#serializevalue-es5-extobjectserialize)
+
+#### validCallable(x) _(es5-ext/object/valid-callable)_
+
+If given object is not callable throw TypeError in other case return it.
+
+#### validObject(x) _(es5-ext/object/valid-object)_
+
+Throws error if given value is not an object, otherwise it is returned.
+
+#### validValue(x) _(es5-ext/object/valid-value)_
+
+Throws error if given value is `null` or `undefined`, otherwise returns value.
+
+### RegExp Constructor extensions
+
+#### escape(str) _(es5-ext/reg-exp/escape)_
+
+Escapes string to be used in regular expression
+
+#### isRegExp(x) _(es5-ext/reg-exp/is-reg-exp)_
+
+Whether object is regular expression
+
+#### validRegExp(x) _(es5-ext/reg-exp/valid-reg-exp)_
+
+If object is regular expression it is returned, otherwise TypeError is thrown.
+
+### RegExp Prototype extensions
+
+#### re.isSticky(x) _(es5-ext/reg-exp/#/is-sticky)_
+
+Whether regular expression has `sticky` flag.
+
+It's to be used as counterpart to [regExp.sticky](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.sticky) if it's not implemented.
+
+#### re.isUnicode(x) _(es5-ext/reg-exp/#/is-unicode)_
+
+Whether regular expression has `unicode` flag.
+
+It's to be used as counterpart to [regExp.unicode](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.unicode) if it's not implemented.
+
+#### re.match(string) _(es5-ext/reg-exp/#/match)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.match).  
+
+#### re.replace(string, replaceValue) _(es5-ext/reg-exp/#/replace)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.replace).  
+
+#### re.search(string) _(es5-ext/reg-exp/#/search)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.search).  
+
+#### re.split(string) _(es5-ext/reg-exp/#/search)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.split).  
+
+#### re.sticky _(es5-ext/reg-exp/#/sticky/implement)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.sticky).  
+It's a getter, so only `implement` and `is-implemented` modules are provided.
+
+#### re.unicode _(es5-ext/reg-exp/#/unicode/implement)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.unicode).  
+It's a getter, so only `implement` and `is-implemented` modules are provided.
+
+### String Constructor extensions
+
+#### formatMethod(fMap) _(es5-ext/string/format-method)_
+
+Creates format method. It's used e.g. to create `Date.prototype.format` method
+
+#### fromCodePoint([…codePoints]) _(es5-ext/string/from-code-point)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.fromcodepoint)
+
+#### isString(x) _(es5-ext/string/is-string)_
+
+Whether object is string
+
+#### randomUniq() _(es5-ext/string/random-uniq)_
+
+Returns randomly generated id, with guarantee of local uniqueness (no same id will be returned twice)
+
+#### raw(callSite[, …substitutions]) _(es5-ext/string/raw)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.raw)
+
+### String Prototype extensions
+
+#### str.at(pos) _(es5-ext/string/#/at)_
+
+_Proposed for ECMAScript 6/7 standard, but not (yet) in a draft_
+
+Returns a string at given position in Unicode-safe manner.
+Based on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.at).
+
+#### str.camelToHyphen() _(es5-ext/string/#/camel-to-hyphen)_
+
+Convert camelCase string to hyphen separated, e.g. one-two-three -> oneTwoThree.
+Useful when converting names from js property convention into filename convention.
+
+#### str.capitalize() _(es5-ext/string/#/capitalize)_
+
+Capitalize first character of a string
+
+#### str.caseInsensitiveCompare(str) _(es5-ext/string/#/case-insensitive-compare)_
+
+Case insensitive compare
+
+#### str.codePointAt(pos) _(es5-ext/string/#/code-point-at)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.codepointat)
+
+Based on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.codePointAt).
+
+#### str.contains(searchString[, position]) _(es5-ext/string/#/contains)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.contains)
+
+Whether string contains given string.
+
+#### str.endsWith(searchString[, endPosition]) _(es5-ext/string/#/ends-with)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.endswith).  
+Whether strings ends with given string
+
+#### str.hyphenToCamel() _(es5-ext/string/#/hyphen-to-camel)_
+
+Convert hyphen separated string to camelCase, e.g. one-two-three -> oneTwoThree.
+Useful when converting names from filename convention to js property name convention.
+
+#### str.indent(str[, count]) _(es5-ext/string/#/indent)_
+
+Indents each line with provided _str_ (if _count_ given then _str_ is repeated _count_ times).
+
+#### str.last() _(es5-ext/string/#/last)_
+
+Return last character
+
+#### str.normalize([form]) _(es5-ext/string/#/normalize)_
+
+[_Introduced with ECMAScript 6_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize).  
+Returns the Unicode Normalization Form of a given string.  
+Based on Matsuza's version. Code used for integrated shim can be found at [github.com/walling/unorm](https://github.com/walling/unorm/blob/master/lib/unorm.js)
+
+#### str.pad(fill[, length]) _(es5-ext/string/#/pad)_
+
+Pad string with _fill_.
+If _length_ si given than _fill_ is reapated _length_ times.
+If _length_ is negative then pad is applied from right.
+
+#### str.repeat(n) _(es5-ext/string/#/repeat)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.repeat).  
+Repeat given string _n_ times
+
+#### str.plainReplace(search, replace) _(es5-ext/string/#/plain-replace)_
+
+Simple `replace` version. Doesn't support regular expressions. Replaces just first occurrence of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).
+
+#### str.plainReplaceAll(search, replace) _(es5-ext/string/#/plain-replace-all)_
+
+Simple `replace` version. Doesn't support regular expressions. Replaces all occurrences of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).
+
+#### str.startsWith(searchString[, position]) _(es5-ext/string/#/starts-with)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.startswith).  
+Whether strings starts with given string
+
+#### str[@@iterator] _(es5-ext/string/#/@@iterator)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype-@@iterator).  
+Returns iterator object which traverses all string characters (with respect to unicode symbols)
+
+### Tests [![Build Status](https://travis-ci.org/medikoo/es5-ext.png)](https://travis-ci.org/medikoo/es5-ext)
+
+       $ npm test
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..0f714a1
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, require('es6-symbol').iterator, { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..a694626
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.prototype[require('es6-symbol').iterator] : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..72eb1f8
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function () {
+       var arr = ['foo', 1], iterator, result;
+       if (typeof arr[iteratorSymbol] !== 'function') return false;
+       iterator = arr[iteratorSymbol]();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== 'foo') return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..ff295df
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('../values/shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js
new file mode 100644 (file)
index 0000000..d8343ce
--- /dev/null
@@ -0,0 +1,9 @@
+// Used internally to sort array of lists by length
+
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer');
+
+module.exports = function (a, b) {
+       return toPosInt(a.length) - toPosInt(b.length);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js
new file mode 100644 (file)
index 0000000..8eb4567
--- /dev/null
@@ -0,0 +1,28 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , floor    = Math.floor;
+
+module.exports = function (compareFn) {
+       var length, low, high, middle;
+
+       value(this);
+       callable(compareFn);
+
+       length = toPosInt(this.length);
+       low = 0;
+       high = length - 1;
+
+       while (low <= high) {
+               middle = floor((low + high) / 2);
+               if (compareFn(this[middle]) < 0) high = middle - 1;
+               else low = middle + 1;
+       }
+
+       if (high < 0) return 0;
+       if (high >= length) return length - 1;
+       return high;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js
new file mode 100644 (file)
index 0000000..3587bdf
--- /dev/null
@@ -0,0 +1,12 @@
+// Inspired by Google Closure:
+// http://closure-library.googlecode.com/svn/docs/
+// closure_goog_array_array.js.html#goog.array.clear
+
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function () {
+       value(this).length = 0;
+       return this;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js
new file mode 100644 (file)
index 0000000..d529d5a
--- /dev/null
@@ -0,0 +1,9 @@
+// Inspired by: http://documentcloud.github.com/underscore/#compact
+
+'use strict';
+
+var filter = Array.prototype.filter;
+
+module.exports = function () {
+       return filter.call(this, function (val) { return val != null; });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js
new file mode 100644 (file)
index 0000000..80c67cb
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'concat', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js
new file mode 100644 (file)
index 0000000..db205ea
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.concat : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js
new file mode 100644 (file)
index 0000000..cab8bc9
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).concat('foo') instanceof SubArray;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js
new file mode 100644 (file)
index 0000000..8b28e4a
--- /dev/null
@@ -0,0 +1,39 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+  , toPosInt     = require('../../../number/to-pos-integer')
+  , isObject     = require('../../../object/is-object')
+
+  , isArray = Array.isArray, concat = Array.prototype.concat
+  , forEach = Array.prototype.forEach
+
+  , isSpreadable;
+
+isSpreadable = function (value) {
+       if (!value) return false;
+       if (!isObject(value)) return false;
+       if (value['@@isConcatSpreadable'] !== undefined) {
+               return Boolean(value['@@isConcatSpreadable']);
+       }
+       return isArray(value);
+};
+
+module.exports = function (item/*, …items*/) {
+       var result;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return concat.apply(this, arguments);
+       }
+       result = new this.constructor(this.length);
+       forEach.call(this, function (val, i) { result[i] = val; });
+       forEach.call(arguments, function (arg) {
+               var base;
+               if (isSpreadable(arg)) {
+                       base = result.length;
+                       result.length += toPosInt(arg.length);
+                       forEach.call(arg, function (val, i) { result[base + i] = val; });
+                       return;
+               }
+               result.push(arg);
+       });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js
new file mode 100644 (file)
index 0000000..4a2f9f6
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var indexOf = require('./e-index-of');
+
+module.exports = function (searchElement/*, position*/) {
+       return indexOf.call(this, searchElement, arguments[1]) > -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js
new file mode 100644 (file)
index 0000000..eedbad7
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'copyWithin',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js
new file mode 100644 (file)
index 0000000..bb89d0b
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.copyWithin : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js
new file mode 100644 (file)
index 0000000..8f17e06
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5];
+       if (typeof arr.copyWithin !== 'function') return false;
+       return String(arr.copyWithin(1, 3)) === '1,4,5,4,5';
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js
new file mode 100644 (file)
index 0000000..c0bfb8b
--- /dev/null
@@ -0,0 +1,39 @@
+// Taken from: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var toInteger  = require('../../../number/to-integer')
+  , toPosInt   = require('../../../number/to-pos-integer')
+  , validValue = require('../../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , max = Math.max, min = Math.min;
+
+module.exports = function (target, start/*, end*/) {
+       var o = validValue(this), end = arguments[2], l = toPosInt(o.length)
+         , to, from, fin, count, direction;
+
+       target = toInteger(target);
+       start = toInteger(start);
+       end = (end === undefined) ? l : toInteger(end);
+
+       to = target < 0 ? max(l + target, 0) : min(target, l);
+       from = start < 0 ? max(l + start, 0) : min(start, l);
+       fin = end < 0 ? max(l + end, 0) : min(end, l);
+       count = min(fin - from, l - to);
+       direction = 1;
+
+       if ((from < to) && (to < (from + count))) {
+               direction = -1;
+               from += count - 1;
+               to += count - 1;
+       }
+       while (count > 0) {
+               if (hasOwnProperty.call(o, from)) o[to] = o[from];
+               else delete o[from];
+               from += direction;
+               to += direction;
+               count -= 1;
+       }
+       return o;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js
new file mode 100644 (file)
index 0000000..a1f9541
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var value    = require('../../object/valid-value')
+  , contains = require('./contains')
+
+  , filter = Array.prototype.filter;
+
+module.exports = function (other) {
+       (value(this) && value(other));
+       return filter.call(this, function (item) {
+               return !contains.call(other, item);
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js
new file mode 100644 (file)
index 0000000..80864d0
--- /dev/null
@@ -0,0 +1,29 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , indexOf = Array.prototype.indexOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , abs = Math.abs, floor = Math.floor;
+
+module.exports = function (searchElement/*, fromIndex*/) {
+       var i, l, fromIndex, val;
+       if (searchElement === searchElement) { //jslint: ignore
+               return indexOf.apply(this, arguments);
+       }
+
+       l = toPosInt(value(this).length);
+       fromIndex = arguments[1];
+       if (isNaN(fromIndex)) fromIndex = 0;
+       else if (fromIndex >= 0) fromIndex = floor(fromIndex);
+       else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
+
+       for (i = fromIndex; i < l; ++i) {
+               if (hasOwnProperty.call(this, i)) {
+                       val = this[i];
+                       if (val !== val) return i; //jslint: ignore
+               }
+       }
+       return -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js
new file mode 100644 (file)
index 0000000..4fc536b
--- /dev/null
@@ -0,0 +1,29 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , lastIndexOf = Array.prototype.lastIndexOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , abs = Math.abs, floor = Math.floor;
+
+module.exports = function (searchElement/*, fromIndex*/) {
+       var i, fromIndex, val;
+       if (searchElement === searchElement) { //jslint: ignore
+               return lastIndexOf.apply(this, arguments);
+       }
+
+       value(this);
+       fromIndex = arguments[1];
+       if (isNaN(fromIndex)) fromIndex = (toPosInt(this.length) - 1);
+       else if (fromIndex >= 0) fromIndex = floor(fromIndex);
+       else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
+
+       for (i = fromIndex; i >= 0; --i) {
+               if (hasOwnProperty.call(this, i)) {
+                       val = this[i];
+                       if (val !== val) return i; //jslint: ignore
+               }
+       }
+       return -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js
new file mode 100644 (file)
index 0000000..490de60
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'entries', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js
new file mode 100644 (file)
index 0000000..292792c
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.entries : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js
new file mode 100644 (file)
index 0000000..e186c17
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 'foo'], iterator, result;
+       if (typeof arr.entries !== 'function') return false;
+       iterator = arr.entries();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result || !result.value) return false;
+       if (result.value[0] !== 0) return false;
+       if (result.value[1] !== 1) return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js
new file mode 100644 (file)
index 0000000..c052b53
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array');
+module.exports = function () { return new ArrayIterator(this, 'key+value'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js
new file mode 100644 (file)
index 0000000..f08adc8
--- /dev/null
@@ -0,0 +1,27 @@
+'use strict';
+
+var value    = require('../../object/valid-value')
+  , aFrom    = require('../from')
+  , toArray  = require('../to-array')
+  , contains = require('./contains')
+  , byLength = require('./_compare-by-length')
+
+  , filter = Array.prototype.filter, push = Array.prototype.push;
+
+module.exports = function (/*…lists*/) {
+       var lists, seen, result;
+       if (!arguments.length) return aFrom(this);
+       push.apply(lists = [this], arguments);
+       lists.forEach(value);
+       seen = [];
+       result = [];
+       lists.sort(byLength).forEach(function (list) {
+               result = result.filter(function (item) {
+                       return !contains.call(list, item);
+               }).concat(filter.call(list, function (x) {
+                       return !contains.call(seen, x);
+               }));
+               push.apply(seen, toArray(list));
+       });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js
new file mode 100644 (file)
index 0000000..2251191
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'fill', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js
new file mode 100644 (file)
index 0000000..36c1f66
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.fill : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js
new file mode 100644 (file)
index 0000000..b8e5468
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5, 6];
+       if (typeof arr.fill !== 'function') return false;
+       return String(arr.fill(-1, -3)) === '1,2,3,-1,-1,-1';
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js
new file mode 100644 (file)
index 0000000..45823be
--- /dev/null
@@ -0,0 +1,21 @@
+// Taken from: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var toInteger  = require('../../../number/to-integer')
+  , toPosInt   = require('../../../number/to-pos-integer')
+  , validValue = require('../../../object/valid-value')
+
+  , max = Math.max, min = Math.min;
+
+module.exports = function (value/*, start, end*/) {
+       var o = validValue(this), start = arguments[1], end = arguments[2]
+         , l = toPosInt(o.length), relativeStart, i;
+
+       start = (start === undefined) ? 0 : toInteger(start);
+       end = (end === undefined) ? l : toInteger(end);
+
+       relativeStart = start < 0 ? max(l + start, 0) : min(start, l);
+       for (i = relativeStart; i < l && i < end; ++i) o[i] = value;
+       return o;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js
new file mode 100644 (file)
index 0000000..090c5f1
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'filter', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js
new file mode 100644 (file)
index 0000000..bcf0268
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.filter : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js
new file mode 100644 (file)
index 0000000..5577273
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe')
+
+  , pass = function () { return true; };
+
+module.exports = function () {
+       return (new SubArray()).filter(pass) instanceof SubArray;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js
new file mode 100644 (file)
index 0000000..b0116de
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+  , callable     = require('../../../object/valid-callable')
+
+  , isArray = Array.isArray, filter = Array.prototype.filter
+  , forEach = Array.prototype.forEach, call = Function.prototype.call;
+
+module.exports = function (callbackFn/*, thisArg*/) {
+       var result, thisArg, i;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return filter.apply(this, arguments);
+       }
+       callable(callbackFn);
+       thisArg = arguments[1];
+       result = new this.constructor();
+       i = 0;
+       forEach.call(this, function (val, j, self) {
+               if (call.call(callbackFn, thisArg, val, j, self)) result[i++] = val;
+       });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js
new file mode 100644 (file)
index 0000000..556cb84
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'findIndex',
+               { value: require('./shim'),
+                       configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js
new file mode 100644 (file)
index 0000000..03a987e
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.findIndex : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js
new file mode 100644 (file)
index 0000000..dbd3c81
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var fn = function (x) { return x > 3; };
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5, 6];
+       if (typeof arr.findIndex !== 'function') return false;
+       return arr.findIndex(fn) === 3;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js
new file mode 100644 (file)
index 0000000..957939f
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var callable = require('../../../object/valid-callable')
+  , value    = require('../../../object/valid-value')
+
+  , some = Array.prototype.some, apply = Function.prototype.apply;
+
+module.exports = function (predicate/*, thisArg*/) {
+       var k, self;
+       self = Object(value(this));
+       callable(predicate);
+
+       return some.call(self, function (value, index) {
+               if (apply.call(predicate, this, arguments)) {
+                       k = index;
+                       return true;
+               }
+               return false;
+       }, arguments[1]) ? k : -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js
new file mode 100644 (file)
index 0000000..0f37104
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'find', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js
new file mode 100644 (file)
index 0000000..96819d0
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.find : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js
new file mode 100644 (file)
index 0000000..cc7ec77
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var fn = function (x) { return x > 3; };
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5, 6];
+       if (typeof arr.find !== 'function') return false;
+       return arr.find(fn) === 4;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js
new file mode 100644 (file)
index 0000000..c7ee906
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var findIndex = require('../find-index/shim');
+
+module.exports = function (predicate/*, thisArg*/) {
+       var index = findIndex.apply(this, arguments);
+       return (index === -1) ? undefined : this[index];
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js
new file mode 100644 (file)
index 0000000..7a9e4c3
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+       var i, l;
+       if (!(l = toPosInt(value(this).length))) return null;
+       i = 0;
+       while (!hasOwnProperty.call(this, i)) {
+               if (++i === l) return null;
+       }
+       return i;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js
new file mode 100644 (file)
index 0000000..11df571
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var firstIndex = require('./first-index');
+
+module.exports = function () {
+       var i;
+       if ((i = firstIndex.call(this)) !== null) return this[i];
+       return undefined;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js
new file mode 100644 (file)
index 0000000..c95407d
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var isArray = Array.isArray, forEach = Array.prototype.forEach
+  , push = Array.prototype.push;
+
+module.exports = function flatten() {
+       var r = [];
+       forEach.call(this, function (x) {
+               push.apply(r, isArray(x) ? flatten.call(x) : [x]);
+       });
+       return r;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js
new file mode 100644 (file)
index 0000000..2f0ffae
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , call = Function.prototype.call;
+
+module.exports = function (cb/*, thisArg*/) {
+       var i, self, thisArg;
+
+       self = Object(value(this));
+       callable(cb);
+       thisArg = arguments[1];
+
+       for (i = toPosInt(self.length); i >= 0; --i) {
+               if (hasOwnProperty.call(self, i)) call.call(cb, thisArg, self[i], i, self);
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js
new file mode 100644 (file)
index 0000000..fbb178c
--- /dev/null
@@ -0,0 +1,23 @@
+// Inspired by Underscore's groupBy:
+// http://documentcloud.github.com/underscore/#groupBy
+
+'use strict';
+
+var callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , forEach = Array.prototype.forEach, apply = Function.prototype.apply;
+
+module.exports = function (cb/*, thisArg*/) {
+       var r;
+
+       (value(this) && callable(cb));
+
+       r = {};
+       forEach.call(this, function (v) {
+               var key = apply.call(cb, this, arguments);
+               if (!r.hasOwnProperty(key)) r[key] = [];
+               r[key].push(v);
+       }, arguments[1]);
+       return r;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js
new file mode 100644 (file)
index 0000000..97ef65c
--- /dev/null
@@ -0,0 +1,40 @@
+'use strict';
+
+module.exports = {
+       '@@iterator':   require('./@@iterator'),
+       binarySearch:   require('./binary-search'),
+       clear:          require('./clear'),
+       compact:        require('./compact'),
+       concat:         require('./concat'),
+       contains:       require('./contains'),
+       copyWithin:     require('./copy-within'),
+       diff:           require('./diff'),
+       eIndexOf:       require('./e-index-of'),
+       eLastIndexOf:   require('./e-last-index-of'),
+       entries:        require('./entries'),
+       exclusion:      require('./exclusion'),
+       fill:           require('./fill'),
+       filter:         require('./filter'),
+       find:           require('./find'),
+       findIndex:      require('./find-index'),
+       first:          require('./first'),
+       firstIndex:     require('./first-index'),
+       flatten:        require('./flatten'),
+       forEachRight:   require('./for-each-right'),
+       keys:           require('./keys'),
+       group:          require('./group'),
+       indexesOf:      require('./indexes-of'),
+       intersection:   require('./intersection'),
+       isCopy:         require('./is-copy'),
+       isUniq:         require('./is-uniq'),
+       last:           require('./last'),
+       lastIndex:      require('./last-index'),
+       map:            require('./map'),
+       remove:         require('./remove'),
+       separate:       require('./separate'),
+       slice:          require('./slice'),
+       someRight:      require('./some-right'),
+       splice:         require('./splice'),
+       uniq:           require('./uniq'),
+       values:         require('./values')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js
new file mode 100644 (file)
index 0000000..6b89157
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexOf = require('./e-index-of');
+
+module.exports = function (value/*, fromIndex*/) {
+       var r = [], i, fromIndex = arguments[1];
+       while ((i = indexOf.call(this, value, fromIndex)) !== -1) {
+               r.push(i);
+               fromIndex = i + 1;
+       }
+       return r;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js
new file mode 100644 (file)
index 0000000..fadcb52
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var value    = require('../../object/valid-value')
+  , contains = require('./contains')
+  , byLength = require('./_compare-by-length')
+
+  , filter = Array.prototype.filter, push = Array.prototype.push
+  , slice = Array.prototype.slice;
+
+module.exports = function (/*…list*/) {
+       var lists;
+       if (!arguments.length) slice.call(this);
+       push.apply(lists = [this], arguments);
+       lists.forEach(value);
+       lists.sort(byLength);
+       return lists.reduce(function (a, b) {
+               return filter.call(a, function (x) { return contains.call(b, x); });
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js
new file mode 100644 (file)
index 0000000..ac7c79b
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , eq    = require('../../object/eq')
+  , value = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (other) {
+       var i, l;
+       (value(this) && value(other));
+       l = toPosInt(this.length);
+       if (l !== toPosInt(other.length)) return false;
+       for (i = 0; i < l; ++i) {
+               if (hasOwnProperty.call(this, i) !== hasOwnProperty.call(other, i)) {
+                       return false;
+               }
+               if (!eq(this[i], other[i])) return false;
+       }
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js
new file mode 100644 (file)
index 0000000..b14f461
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexOf = require('./e-index-of')
+
+  , every = Array.prototype.every
+  , isFirst;
+
+isFirst = function (value, index) {
+       return indexOf.call(this, value) === index;
+};
+
+module.exports = function () { return every.call(this, isFirst, this); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js
new file mode 100644 (file)
index 0000000..e18e617
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'keys', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js
new file mode 100644 (file)
index 0000000..2f89cff
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.keys : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..06bd87b
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 'foo'], iterator, result;
+       if (typeof arr.keys !== 'function') return false;
+       iterator = arr.keys();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== 0) return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js
new file mode 100644 (file)
index 0000000..83773f6
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array');
+module.exports = function () { return new ArrayIterator(this, 'key'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js
new file mode 100644 (file)
index 0000000..a191d6e
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+       var i, l;
+       if (!(l = toPosInt(value(this).length))) return null;
+       i = l - 1;
+       while (!hasOwnProperty.call(this, i)) {
+               if (--i === -1) return null;
+       }
+       return i;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js
new file mode 100644 (file)
index 0000000..bf9d2f2
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var lastIndex = require('./last-index');
+
+module.exports = function () {
+       var i;
+       if ((i = lastIndex.call(this)) !== null) return this[i];
+       return undefined;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js
new file mode 100644 (file)
index 0000000..3aabb87
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'map', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js
new file mode 100644 (file)
index 0000000..66f6660
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.map : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js
new file mode 100644 (file)
index 0000000..c328b47
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var identity = require('../../../function/identity')
+  , SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).map(identity) instanceof SubArray;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js
new file mode 100644 (file)
index 0000000..2ee7313
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+  , callable     = require('../../../object/valid-callable')
+
+  , isArray = Array.isArray, map = Array.prototype.map
+  , forEach = Array.prototype.forEach, call = Function.prototype.call;
+
+module.exports = function (callbackFn/*, thisArg*/) {
+       var result, thisArg;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return map.apply(this, arguments);
+       }
+       callable(callbackFn);
+       thisArg = arguments[1];
+       result = new this.constructor(this.length);
+       forEach.call(this, function (val, i, self) {
+               result[i] = call.call(callbackFn, thisArg, val, i, self);
+       });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js
new file mode 100644 (file)
index 0000000..dcf8433
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexOf = require('./e-index-of')
+
+  , forEach = Array.prototype.forEach, splice = Array.prototype.splice;
+
+module.exports = function (item/*, …item*/) {
+       forEach.call(arguments, function (item) {
+               var index = indexOf.call(this, item);
+               if (index !== -1) splice.call(this, index, 1);
+       }, this);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js
new file mode 100644 (file)
index 0000000..dc974b8
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var forEach = Array.prototype.forEach;
+
+module.exports = function (sep) {
+       var result = [];
+       forEach.call(this, function (val, i) { result.push(val, sep); });
+       result.pop();
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js
new file mode 100644 (file)
index 0000000..cd488a0
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'slice', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js
new file mode 100644 (file)
index 0000000..72200ca
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.prototype.slice : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js
new file mode 100644 (file)
index 0000000..ec1985e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).slice() instanceof SubArray;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js
new file mode 100644 (file)
index 0000000..2761a1a
--- /dev/null
@@ -0,0 +1,35 @@
+'use strict';
+
+var toInteger    = require('../../../number/to-integer')
+  , toPosInt     = require('../../../number/to-pos-integer')
+  , isPlainArray = require('../../is-plain-array')
+
+  , isArray = Array.isArray, slice = Array.prototype.slice
+  , hasOwnProperty = Object.prototype.hasOwnProperty, max = Math.max;
+
+module.exports = function (start, end) {
+       var length, result, i;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return slice.apply(this, arguments);
+       }
+       length = toPosInt(this.length);
+       start = toInteger(start);
+       if (start < 0) start = max(length + start, 0);
+       else if (start > length) start = length;
+       if (end === undefined) {
+               end = length;
+       } else {
+               end = toInteger(end);
+               if (end < 0) end = max(length + end, 0);
+               else if (end > length) end = length;
+       }
+       if (start > end) start = end;
+       result = new this.constructor(end - start);
+       i = 0;
+       while (start !== end) {
+               if (hasOwnProperty.call(this, start)) result[i] = this[start];
+               ++i;
+               ++start;
+       }
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js
new file mode 100644 (file)
index 0000000..de7460d
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , call = Function.prototype.call;
+
+module.exports = function (cb/*, thisArg*/) {
+       var i, self, thisArg;
+       self = Object(value(this));
+       callable(cb);
+       thisArg = arguments[1];
+
+       for (i = self.length; i >= 0; --i) {
+               if (hasOwnProperty.call(self, i) &&
+                               call.call(cb, thisArg, self[i], i, self)) {
+                       return true;
+               }
+       }
+       return false;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js
new file mode 100644 (file)
index 0000000..aab1f8e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'splice', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js
new file mode 100644 (file)
index 0000000..e8ecf3c
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.prototype.splice : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js
new file mode 100644 (file)
index 0000000..ffddaa8
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).splice(0) instanceof SubArray;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js
new file mode 100644 (file)
index 0000000..a8505a2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+
+  , isArray = Array.isArray, splice = Array.prototype.splice
+  , forEach = Array.prototype.forEach;
+
+module.exports = function (start, deleteCount/*, …items*/) {
+       var arr = splice.apply(this, arguments), result;
+       if (!this || !isArray(this) || isPlainArray(this)) return arr;
+       result = new this.constructor(arr.length);
+       forEach.call(arr, function (val, i) { result[i] = val; });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js
new file mode 100644 (file)
index 0000000..db01465
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var indexOf = require('./e-index-of')
+
+  , filter = Array.prototype.filter
+
+  , isFirst;
+
+isFirst = function (value, index) {
+       return indexOf.call(this, value) === index;
+};
+
+module.exports = function () { return filter.call(this, isFirst, this); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js
new file mode 100644 (file)
index 0000000..237281f
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'values', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js
new file mode 100644 (file)
index 0000000..c0832c3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ? Array.prototype.values : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js
new file mode 100644 (file)
index 0000000..cc0c629
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function () {
+       var arr = ['foo', 1], iterator, result;
+       if (typeof arr.values !== 'function') return false;
+       iterator = arr.values();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== 'foo') return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js
new file mode 100644 (file)
index 0000000..f6555fd
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array');
+module.exports = function () { return new ArrayIterator(this, 'value'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js
new file mode 100644 (file)
index 0000000..6123206
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = (function () {
+       var SubArray = require('./_sub-array-dummy'), arr;
+
+       if (!SubArray) return false;
+       arr = new SubArray();
+       if (!Array.isArray(arr)) return false;
+       if (!(arr instanceof SubArray)) return false;
+
+       arr[34] = 'foo';
+       return (arr.length === 35);
+}());
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js
new file mode 100644 (file)
index 0000000..5baf8a8
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var setPrototypeOf = require('../object/set-prototype-of')
+  , isExtensible   = require('./_is-extensible');
+
+module.exports = (function () {
+       var SubArray;
+
+       if (isExtensible) return require('./_sub-array-dummy');
+
+       if (!setPrototypeOf) return null;
+       SubArray = function () {
+               var arr = Array.apply(this, arguments);
+               setPrototypeOf(arr, SubArray.prototype);
+               return arr;
+       };
+       setPrototypeOf(SubArray, Array);
+       SubArray.prototype = Object.create(Array.prototype, {
+               constructor: { value: SubArray, enumerable: false, writable: true,
+                       configurable: true }
+       });
+       return SubArray;
+}());
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js
new file mode 100644 (file)
index 0000000..a926d1a
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var setPrototypeOf = require('../object/set-prototype-of');
+
+module.exports = (function () {
+       var SubArray;
+
+       if (!setPrototypeOf) return null;
+       SubArray = function () { Array.apply(this, arguments); };
+       setPrototypeOf(SubArray, Array);
+       SubArray.prototype = Object.create(Array.prototype, {
+               constructor: { value: SubArray, enumerable: false, writable: true,
+                       configurable: true }
+       });
+       return SubArray;
+}());
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js
new file mode 100644 (file)
index 0000000..f3411b1
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array, 'from', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js
new file mode 100644 (file)
index 0000000..3b99cda
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.from
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js
new file mode 100644 (file)
index 0000000..63ff2a5
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function () {
+       var from = Array.from, arr, result;
+       if (typeof from !== 'function') return false;
+       arr = ['raz', 'dwa'];
+       result = from(arr);
+       return Boolean(result && (result !== arr) && (result[1] === 'dwa'));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js
new file mode 100644 (file)
index 0000000..a90ba2f
--- /dev/null
@@ -0,0 +1,106 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , isArguments    = require('../../function/is-arguments')
+  , isFunction     = require('../../function/is-function')
+  , toPosInt       = require('../../number/to-pos-integer')
+  , callable       = require('../../object/valid-callable')
+  , validValue     = require('../../object/valid-value')
+  , isString       = require('../../string/is-string')
+
+  , isArray = Array.isArray, call = Function.prototype.call
+  , desc = { configurable: true, enumerable: true, writable: true, value: null }
+  , defineProperty = Object.defineProperty;
+
+module.exports = function (arrayLike/*, mapFn, thisArg*/) {
+       var mapFn = arguments[1], thisArg = arguments[2], Constructor, i, j, arr, l, code, iterator
+         , result, getIterator, value;
+
+       arrayLike = Object(validValue(arrayLike));
+
+       if (mapFn != null) callable(mapFn);
+       if (!this || (this === Array) || !isFunction(this)) {
+               // Result: Plain array
+               if (!mapFn) {
+                       if (isArguments(arrayLike)) {
+                               // Source: Arguments
+                               l = arrayLike.length;
+                               if (l !== 1) return Array.apply(null, arrayLike);
+                               arr = new Array(1);
+                               arr[0] = arrayLike[0];
+                               return arr;
+                       }
+                       if (isArray(arrayLike)) {
+                               // Source: Array
+                               arr = new Array(l = arrayLike.length);
+                               for (i = 0; i < l; ++i) arr[i] = arrayLike[i];
+                               return arr;
+                       }
+               }
+               arr = [];
+       } else {
+               // Result: Non plain array
+               Constructor = this;
+       }
+
+       if (!isArray(arrayLike)) {
+               if ((getIterator = arrayLike[iteratorSymbol]) !== undefined) {
+                       // Source: Iterator
+                       iterator = callable(getIterator).call(arrayLike);
+                       if (Constructor) arr = new Constructor();
+                       result = iterator.next();
+                       i = 0;
+                       while (!result.done) {
+                               value = mapFn ? call.call(mapFn, thisArg, result.value, i) : result.value;
+                               if (!Constructor) {
+                                       arr[i] = value;
+                               } else {
+                                       desc.value = value;
+                                       defineProperty(arr, i, desc);
+                               }
+                               result = iterator.next();
+                               ++i;
+                       }
+                       l = i;
+               } else if (isString(arrayLike)) {
+                       // Source: String
+                       l = arrayLike.length;
+                       if (Constructor) arr = new Constructor();
+                       for (i = 0, j = 0; i < l; ++i) {
+                               value = arrayLike[i];
+                               if ((i + 1) < l) {
+                                       code = value.charCodeAt(0);
+                                       if ((code >= 0xD800) && (code <= 0xDBFF)) value += arrayLike[++i];
+                               }
+                               value = mapFn ? call.call(mapFn, thisArg, value, j) : value;
+                               if (!Constructor) {
+                                       arr[j] = value;
+                               } else {
+                                       desc.value = value;
+                                       defineProperty(arr, j, desc);
+                               }
+                               ++j;
+                       }
+                       l = j;
+               }
+       }
+       if (l === undefined) {
+               // Source: array or array-like
+               l = toPosInt(arrayLike.length);
+               if (Constructor) arr = new Constructor(l);
+               for (i = 0; i < l; ++i) {
+                       value = mapFn ? call.call(mapFn, thisArg, arrayLike[i], i) : arrayLike[i];
+                       if (!Constructor) {
+                               arr[i] = value;
+                       } else {
+                               desc.value = value;
+                               defineProperty(arr, i, desc);
+                       }
+               }
+       }
+       if (Constructor) {
+               desc.value = null;
+               arr.length = l;
+       }
+       return arr;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js
new file mode 100644 (file)
index 0000000..5e06675
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var toPosInt = require('../number/to-pos-integer')
+  , value    = require('../object/valid-value')
+
+  , slice = Array.prototype.slice;
+
+module.exports = function (length/*, …fill*/) {
+       var arr, l;
+       length = toPosInt(value(length));
+       if (length === 0) return [];
+
+       arr = (arguments.length < 2) ? [undefined] :
+                       slice.call(arguments, 1, 1 + length);
+
+       while ((l = arr.length) < length) {
+               arr = arr.concat(arr.slice(0, length - l));
+       }
+       return arr;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js
new file mode 100644 (file)
index 0000000..7a68678
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = {
+       '#':          require('./#'),
+       from:         require('./from'),
+       generate:     require('./generate'),
+       isPlainArray: require('./is-plain-array'),
+       of:           require('./of'),
+       toArray:      require('./to-array'),
+       validArray:   require('./valid-array')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js
new file mode 100644 (file)
index 0000000..6b37e40
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var isArray = Array.isArray, getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (obj) {
+       var proto;
+       if (!obj || !isArray(obj)) return false;
+       proto = getPrototypeOf(obj);
+       if (!isArray(proto)) return false;
+       return !isArray(getPrototypeOf(proto));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js
new file mode 100644 (file)
index 0000000..bf2a5a5
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array, 'of', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js
new file mode 100644 (file)
index 0000000..07ee54d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.of
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js
new file mode 100644 (file)
index 0000000..4390a10
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function () {
+       var of = Array.of, result;
+       if (typeof of !== 'function') return false;
+       result = of('foo', 'bar');
+       return Boolean(result && (result[1] === 'bar'));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js
new file mode 100644 (file)
index 0000000..de72bc9
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var isFunction = require('../../function/is-function')
+
+  , slice = Array.prototype.slice, defineProperty = Object.defineProperty
+  , desc = { configurable: true, enumerable: true, writable: true, value: null };
+
+module.exports = function (/*…items*/) {
+       var result, i, l;
+       if (!this || (this === Array) || !isFunction(this)) return slice.call(arguments);
+       result = new this(l = arguments.length);
+       for (i = 0; i < l; ++i) {
+               desc.value = arguments[i];
+               defineProperty(result, i, desc);
+       }
+       desc.value = null;
+       result.length = l;
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js
new file mode 100644 (file)
index 0000000..ce908dd
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var from = require('./from')
+
+  , isArray = Array.isArray;
+
+module.exports = function (arrayLike) {
+       return isArray(arrayLike) ? arrayLike : from(arrayLike);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js
new file mode 100644 (file)
index 0000000..d86a8f5
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isArray = Array.isArray;
+
+module.exports = function (value) {
+       if (isArray(value)) return value;
+       throw new TypeError(value + " is not an array");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js
new file mode 100644 (file)
index 0000000..c193b94
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+       isBoolean: require('./is-boolean')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js
new file mode 100644 (file)
index 0000000..5d1a802
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(true);
+
+module.exports = function (x) {
+       return (typeof x === 'boolean') || ((typeof x === 'object') &&
+               ((x instanceof Boolean) || (toString.call(x) === id)));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js
new file mode 100644 (file)
index 0000000..69e2eb0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var getTime = Date.prototype.getTime;
+
+module.exports = function () { return new Date(getTime.call(this)); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js
new file mode 100644 (file)
index 0000000..e780efe
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var getMonth = Date.prototype.getMonth;
+
+module.exports = function () {
+       switch (getMonth.call(this)) {
+       case 1:
+               return this.getFullYear() % 4 ? 28 : 29;
+       case 3:
+       case 5:
+       case 8:
+       case 10:
+               return 30;
+       default:
+               return 31;
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js
new file mode 100644 (file)
index 0000000..0c9eb8b
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var setHours = Date.prototype.setHours;
+
+module.exports = function () {
+       setHours.call(this, 0, 0, 0, 0);
+       return this;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js
new file mode 100644 (file)
index 0000000..7328c25
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var floorDay = require('./floor-day');
+
+module.exports = function () {
+       floorDay.call(this).setDate(1);
+       return this;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js
new file mode 100644 (file)
index 0000000..9c50853
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var floorMonth = require('./floor-month');
+
+module.exports = function () {
+       floorMonth.call(this).setMonth(0);
+       return this;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js
new file mode 100644 (file)
index 0000000..15bd95f
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var pad       = require('../../number/#/pad')
+  , date      = require('../valid-date')
+
+  , format;
+
+format = require('../../string/format-method')({
+       Y: function () { return String(this.getFullYear()); },
+       y: function () { return String(this.getFullYear()).slice(-2); },
+       m: function () { return pad.call(this.getMonth() + 1, 2); },
+       d: function () { return pad.call(this.getDate(), 2); },
+       H: function () { return pad.call(this.getHours(), 2); },
+       M: function () { return pad.call(this.getMinutes(), 2); },
+       S: function () { return pad.call(this.getSeconds(), 2); },
+       L: function () { return pad.call(this.getMilliseconds(), 3); }
+});
+
+module.exports = function (pattern) {
+       return format.call(date(this), pattern);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js
new file mode 100644 (file)
index 0000000..f71b295
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = {
+       copy:        require('./copy'),
+       daysInMonth: require('./days-in-month'),
+       floorDay:    require('./floor-day'),
+       floorMonth:  require('./floor-month'),
+       floorYear:   require('./floor-year'),
+       format:      require('./format')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js
new file mode 100644 (file)
index 0000000..eac33fb
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = {
+       '#':       require('./#'),
+       isDate:    require('./is-date'),
+       validDate: require('./valid-date')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js
new file mode 100644 (file)
index 0000000..6ba236e
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(new Date());
+
+module.exports = function (x) {
+       return (x && ((x instanceof Date) || (toString.call(x) === id))) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js
new file mode 100644 (file)
index 0000000..7d1a9b6
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isDate = require('./is-date');
+
+module.exports = function (x) {
+       if (!isDate(x)) throw new TypeError(x + " is not a Date object");
+       return x;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js
new file mode 100644 (file)
index 0000000..b984aa9
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+       throw: require('./throw')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js
new file mode 100644 (file)
index 0000000..7e15ebd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var error = require('../valid-error');
+
+module.exports = function () { throw error(this); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js
new file mode 100644 (file)
index 0000000..bbc2dc2
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var assign = require('../object/assign')
+
+  , captureStackTrace = Error.captureStackTrace;
+
+exports = module.exports = function (message/*, code, ext*/) {
+       var err = new Error(), code = arguments[1], ext = arguments[2];
+       if (ext == null) {
+               if (code && (typeof code === 'object')) {
+                       ext = code;
+                       code = null;
+               }
+       }
+       if (ext != null) assign(err, ext);
+       err.message = String(message);
+       if (code != null) err.code = String(code);
+       if (captureStackTrace) captureStackTrace(err, exports);
+       return err;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js
new file mode 100644 (file)
index 0000000..62984b5
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = {
+       '#':        require('./#'),
+       custom:     require('./custom'),
+       isError:    require('./is-error'),
+       validError: require('./valid-error')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js
new file mode 100644 (file)
index 0000000..422705f
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(new Error());
+
+module.exports = function (x) {
+       return (x && ((x instanceof Error) || (toString.call(x)) === id)) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js
new file mode 100644 (file)
index 0000000..0bef768
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isError = require('./is-error');
+
+module.exports = function (x) {
+       if (!isError(x)) throw new TypeError(x + " is not an Error object");
+       return x;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js
new file mode 100644 (file)
index 0000000..1da5e01
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+  , aFrom    = require('../../array/from')
+
+  , apply = Function.prototype.apply, call = Function.prototype.call
+  , callFn = function (arg, fn) { return call.call(fn, this, arg); };
+
+module.exports = function (fn/*, …fnn*/) {
+       var fns, first;
+       if (!fn) callable(fn);
+       fns = [this].concat(aFrom(arguments));
+       fns.forEach(callable);
+       fns = fns.reverse();
+       first = fns[0];
+       fns = fns.slice(1);
+       return function (arg) {
+               return fns.reduce(callFn, apply.call(first, this, arguments));
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js
new file mode 100644 (file)
index 0000000..e1467f7
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var mixin         = require('../../object/mixin')
+  , validFunction = require('../valid-function')
+
+  , re = /^\s*function\s*([\0-'\)-\uffff]+)*\s*\(([\0-\(\*-\uffff]*)\)\s*\{/;
+
+module.exports = function () {
+       var match = String(validFunction(this)).match(re), fn;
+
+       fn = new Function('fn', 'return function ' + match[1].trim() + '(' +
+               match[2] + ') { return fn.apply(this, arguments); };')(this);
+       try { mixin(fn, this); } catch (ignore) {}
+       return fn;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js
new file mode 100644 (file)
index 0000000..943d6fa
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var toPosInt     = require('../../number/to-pos-integer')
+  , callable     = require('../../object/valid-callable')
+  , defineLength = require('../_define-length')
+
+  , slice = Array.prototype.slice, apply = Function.prototype.apply
+  , curry;
+
+curry = function self(fn, length, preArgs) {
+       return defineLength(function () {
+               var args = preArgs ?
+                               preArgs.concat(slice.call(arguments, 0, length - preArgs.length)) :
+                               slice.call(arguments, 0, length);
+               return (args.length === length) ? apply.call(fn, this, args) :
+                               self(fn, length, args);
+       }, preArgs ? (length - preArgs.length) : length);
+};
+
+module.exports = function (/*length*/) {
+       var length = arguments[0];
+       return curry(callable(this),
+               isNaN(length) ? toPosInt(this.length) : toPosInt(length));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js
new file mode 100644 (file)
index 0000000..8d0da00
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = {
+       compose:        require('./compose'),
+       copy:           require('./copy'),
+       curry:          require('./curry'),
+       lock:           require('./lock'),
+       not:            require('./not'),
+       partial:        require('./partial'),
+       spread:         require('./spread'),
+       toStringTokens: require('./to-string-tokens')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js
new file mode 100644 (file)
index 0000000..91e1a65
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+
+  , apply    = Function.prototype.apply;
+
+module.exports = function (/*…args*/) {
+       var fn = callable(this)
+         , args = arguments;
+
+       return function () { return apply.call(fn, this, args); };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js
new file mode 100644 (file)
index 0000000..c6dbe97
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var callable     = require('../../object/valid-callable')
+  , defineLength = require('../_define-length')
+
+  , apply = Function.prototype.apply;
+
+module.exports = function () {
+       var fn = callable(this);
+
+       return defineLength(function () {
+               return !apply.call(fn, this, arguments);
+       }, fn.length);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js
new file mode 100644 (file)
index 0000000..bf31a35
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var callable     = require('../../object/valid-callable')
+  , aFrom        = require('../../array/from')
+  , defineLength = require('../_define-length')
+
+  , apply = Function.prototype.apply;
+
+module.exports = function (/*…args*/) {
+       var fn = callable(this)
+         , args = aFrom(arguments);
+
+       return defineLength(function () {
+               return apply.call(fn, this, args.concat(aFrom(arguments)));
+       }, fn.length - args.length);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js
new file mode 100644 (file)
index 0000000..d7c93b7
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+
+  , apply = Function.prototype.apply;
+
+module.exports = function () {
+       var fn = callable(this);
+       return function (args) { return apply.call(fn, this, args); };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js
new file mode 100644 (file)
index 0000000..67afeae
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var validFunction = require('../valid-function')
+
+  , re = new RegExp('^\\s*function[\\0-\'\\)-\\uffff]*' +
+       '\\(([\\0-\\(\\*-\\uffff]*)\\)\\s*\\{([\\0-\\uffff]*)\\}\\s*$');
+
+module.exports = function () {
+       var data = String(validFunction(this)).match(re);
+       return { args: data[1], body: data[2] };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js
new file mode 100644 (file)
index 0000000..496ea62
--- /dev/null
@@ -0,0 +1,44 @@
+'use strict';
+
+var toPosInt = require('../number/to-pos-integer')
+
+  , test = function (a, b) {}, desc, defineProperty
+  , generate, mixin;
+
+try {
+       Object.defineProperty(test, 'length', { configurable: true, writable: false,
+               enumerable: false, value: 1 });
+} catch (ignore) {}
+
+if (test.length === 1) {
+       // ES6
+       desc = { configurable: true, writable: false, enumerable: false };
+       defineProperty = Object.defineProperty;
+       module.exports = function (fn, length) {
+               length = toPosInt(length);
+               if (fn.length === length) return fn;
+               desc.value = length;
+               return defineProperty(fn, 'length', desc);
+       };
+} else {
+       mixin = require('../object/mixin');
+       generate = (function () {
+               var cache = [];
+               return function (l) {
+                       var args, i = 0;
+                       if (cache[l]) return cache[l];
+                       args = [];
+                       while (l--) args.push('a' + (++i).toString(36));
+                       return new Function('fn', 'return function (' + args.join(', ') +
+                               ') { return fn.apply(this, arguments); };');
+               };
+       }());
+       module.exports = function (src, length) {
+               var target;
+               length = toPosInt(length);
+               if (src.length === length) return src;
+               target = generate(length)(src);
+               try { mixin(target, src); } catch (ignore) {}
+               return target;
+       };
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js
new file mode 100644 (file)
index 0000000..10f1e20
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (x) {
+       return function () { return x; };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js
new file mode 100644 (file)
index 0000000..a9289f0
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (x) { return x; };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js
new file mode 100644 (file)
index 0000000..cfad3f3
--- /dev/null
@@ -0,0 +1,15 @@
+// Export all modules.
+
+'use strict';
+
+module.exports = {
+       '#':           require('./#'),
+       constant:      require('./constant'),
+       identity:      require('./identity'),
+       invoke:        require('./invoke'),
+       isArguments:   require('./is-arguments'),
+       isFunction:    require('./is-function'),
+       noop:          require('./noop'),
+       pluck:         require('./pluck'),
+       validFunction: require('./valid-function')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js
new file mode 100644 (file)
index 0000000..9195afd
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var isCallable = require('../object/is-callable')
+  , value      = require('../object/valid-value')
+
+  , slice = Array.prototype.slice, apply = Function.prototype.apply;
+
+module.exports = function (name/*, …args*/) {
+       var args = slice.call(arguments, 1), isFn = isCallable(name);
+       return function (obj) {
+               value(obj);
+               return apply.call(isFn ? name : obj[name], obj,
+                       args.concat(slice.call(arguments, 1)));
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js
new file mode 100644 (file)
index 0000000..9a29855
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call((function () { return arguments; }()));
+
+module.exports = function (x) { return (toString.call(x) === id); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js
new file mode 100644 (file)
index 0000000..ab4399c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(require('./noop'));
+
+module.exports = function (f) {
+       return (typeof f === "function") && (toString.call(f) === id);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js
new file mode 100644 (file)
index 0000000..aa43bae
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function () {};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js
new file mode 100644 (file)
index 0000000..7f70a30
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var value   = require('../object/valid-value');
+
+module.exports = function (name) {
+       return function (o) { return value(o)[name]; };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js
new file mode 100644 (file)
index 0000000..05fdee2
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isFunction = require('./is-function');
+
+module.exports = function (x) {
+       if (!isFunction(x)) throw new TypeError(x + " is not a function");
+       return x;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js
new file mode 100644 (file)
index 0000000..872a40e
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = new Function("return this")();
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js
new file mode 100644 (file)
index 0000000..db9a760
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = {
+       global:   require('./global'),
+
+       array:    require('./array'),
+       boolean:  require('./boolean'),
+       date:     require('./date'),
+       error:    require('./error'),
+       function: require('./function'),
+       iterable: require('./iterable'),
+       math:     require('./math'),
+       number:   require('./number'),
+       object:   require('./object'),
+       regExp:   require('./reg-exp'),
+       string:   require('./string')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js
new file mode 100644 (file)
index 0000000..f1e2042
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var forOf      = require('es6-iterator/for-of')
+  , isIterable = require('es6-iterator/is-iterable')
+  , iterable   = require('./validate')
+
+  , forEach = Array.prototype.forEach;
+
+module.exports = function (target, cb/*, thisArg*/) {
+       if (isIterable(iterable(target))) forOf(target, cb, arguments[2]);
+       else forEach.call(target, cb, arguments[2]);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js
new file mode 100644 (file)
index 0000000..a3e16a5
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = {
+       forEach:        require('./for-each'),
+       is:             require('./is'),
+       validate:       require('./validate'),
+       validateObject: require('./validate-object')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js
new file mode 100644 (file)
index 0000000..bb8bf28
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , isArrayLike    = require('../object/is-array-like');
+
+module.exports = function (x) {
+       if (x == null) return false;
+       if (typeof x[iteratorSymbol] === 'function') return true;
+       return isArrayLike(x);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js
new file mode 100644 (file)
index 0000000..988a6ad
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var isObject = require('../object/is-object')
+  , is       = require('./is');
+
+module.exports = function (x) {
+       if (is(x) && isObject(x)) return x;
+       throw new TypeError(x + " is not an iterable or array-like object");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js
new file mode 100644 (file)
index 0000000..1be6d7f
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var is = require('./is');
+
+module.exports = function (x) {
+       if (is(x)) return x;
+       throw new TypeError(x + " is not an iterable or array-like");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js
new file mode 100644 (file)
index 0000000..eecda56
--- /dev/null
@@ -0,0 +1,82 @@
+// Credit: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var abs = Math.abs, floor = Math.floor, log = Math.log, min = Math.min
+  , pow = Math.pow, LN2 = Math.LN2
+  , roundToEven;
+
+roundToEven = function (n) {
+       var w = floor(n), f = n - w;
+       if (f < 0.5) return w;
+       if (f > 0.5) return w + 1;
+       return w % 2 ? w + 1 : w;
+};
+
+module.exports = function (v, ebits, fbits) {
+       var bias = (1 << (ebits - 1)) - 1, s, e, f, i, bits, str, bytes;
+
+       // Compute sign, exponent, fraction
+       if (isNaN(v)) {
+               // NaN
+               // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
+               e = (1 << ebits) - 1;
+               f = pow(2, fbits - 1);
+               s = 0;
+       } else if (v === Infinity || v === -Infinity) {
+               e = (1 << ebits) - 1;
+               f = 0;
+               s = (v < 0) ? 1 : 0;
+       } else if (v === 0) {
+               e = 0;
+               f = 0;
+               s = (1 / v === -Infinity) ? 1 : 0;
+       } else {
+               s = v < 0;
+               v = abs(v);
+
+               if (v >= pow(2, 1 - bias)) {
+                       e = min(floor(log(v) / LN2), 1023);
+                       f = roundToEven(v / pow(2, e) * pow(2, fbits));
+                       if (f / pow(2, fbits) >= 2) {
+                               e = e + 1;
+                               f = 1;
+                       }
+                       if (e > bias) {
+                               // Overflow
+                               e = (1 << ebits) - 1;
+                               f = 0;
+                       } else {
+                               // Normal
+                               e = e + bias;
+                               f = f - pow(2, fbits);
+                       }
+               } else {
+                       // Subnormal
+                       e = 0;
+                       f = roundToEven(v / pow(2, 1 - bias - fbits));
+               }
+       }
+
+       // Pack sign, exponent, fraction
+       bits = [];
+       for (i = fbits; i; i -= 1) {
+               bits.push(f % 2 ? 1 : 0);
+               f = floor(f / 2);
+       }
+       for (i = ebits; i; i -= 1) {
+               bits.push(e % 2 ? 1 : 0);
+               e = floor(e / 2);
+       }
+       bits.push(s ? 1 : 0);
+       bits.reverse();
+       str = bits.join('');
+
+       // Bits to bytes
+       bytes = [];
+       while (str.length) {
+               bytes.push(parseInt(str.substring(0, 8), 2));
+               str = str.substring(8);
+       }
+       return bytes;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js
new file mode 100644 (file)
index 0000000..c9f26f2
--- /dev/null
@@ -0,0 +1,33 @@
+// Credit: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var pow = Math.pow;
+
+module.exports = function (bytes, ebits, fbits) {
+       // Bytes to bits
+       var bits = [], i, j, b, str,
+       bias, s, e, f;
+
+       for (i = bytes.length; i; i -= 1) {
+               b = bytes[i - 1];
+               for (j = 8; j; j -= 1) {
+                       bits.push(b % 2 ? 1 : 0);
+                       b = b >> 1;
+               }
+       }
+       bits.reverse();
+       str = bits.join('');
+
+       // Unpack sign, exponent, fraction
+       bias = (1 << (ebits - 1)) - 1;
+       s = parseInt(str.substring(0, 1), 2) ? -1 : 1;
+       e = parseInt(str.substring(1, 1 + ebits), 2);
+       f = parseInt(str.substring(1 + ebits), 2);
+
+       // Produce number
+       if (e === (1 << ebits) - 1) return f !== 0 ? NaN : s * Infinity;
+       if (e > 0) return s * pow(2, e - bias) * (1 + f / pow(2, fbits));
+       if (f !== 0) return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));
+       return s < 0 ? -0 : 0;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js
new file mode 100644 (file)
index 0000000..f48ad11
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'acosh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js
new file mode 100644 (file)
index 0000000..00ddea6
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.acosh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js
new file mode 100644 (file)
index 0000000..363f0d8
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var acosh = Math.acosh;
+       if (typeof acosh !== 'function') return false;
+       return acosh(2) === 1.3169578969248166;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js
new file mode 100644 (file)
index 0000000..89a24b5
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var log = Math.log, sqrt = Math.sqrt;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < 1) return NaN;
+       if (x === 1) return 0;
+       if (x === Infinity) return x;
+       return log(x + sqrt(x * x - 1));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js
new file mode 100644 (file)
index 0000000..21f64d5
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'asinh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js
new file mode 100644 (file)
index 0000000..d415144
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.asinh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js
new file mode 100644 (file)
index 0000000..6c205f4
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var asinh = Math.asinh;
+       if (typeof asinh !== 'function') return false;
+       return asinh(2) === 1.4436354751788103;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js
new file mode 100644 (file)
index 0000000..42fbf14
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var log = Math.log, sqrt = Math.sqrt;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+       if (x < 0) {
+               x = -x;
+               return -log(x + sqrt(x * x + 1));
+       }
+       return log(x + sqrt(x * x + 1));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js
new file mode 100644 (file)
index 0000000..1a48513
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'atanh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js
new file mode 100644 (file)
index 0000000..785b3de
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.atanh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js
new file mode 100644 (file)
index 0000000..dbaf18e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var atanh = Math.atanh;
+       if (typeof atanh !== 'function') return false;
+       return atanh(0.5) === 0.5493061443340549;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js
new file mode 100644 (file)
index 0000000..531e289
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var log = Math.log;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < -1) return NaN;
+       if (x > 1) return NaN;
+       if (x === -1) return -Infinity;
+       if (x === 1) return Infinity;
+       if (x === 0) return x;
+       return 0.5 * log((1 + x) / (1 - x));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js
new file mode 100644 (file)
index 0000000..3a12dde
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'cbrt', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js
new file mode 100644 (file)
index 0000000..89f966d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.cbrt
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js
new file mode 100644 (file)
index 0000000..69809f3
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var cbrt = Math.cbrt;
+       if (typeof cbrt !== 'function') return false;
+       return cbrt(2) === 1.2599210498948732;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js
new file mode 100644 (file)
index 0000000..bca1960
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var pow = Math.pow;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+       if (x < 0) return -pow(-x, 1 / 3);
+       return pow(x, 1 / 3);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js
new file mode 100644 (file)
index 0000000..339df33
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'clz32', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js
new file mode 100644 (file)
index 0000000..1687b33
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.clz32
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js
new file mode 100644 (file)
index 0000000..ccc8f71
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var clz32 = Math.clz32;
+       if (typeof clz32 !== 'function') return false;
+       return clz32(1000) === 22;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js
new file mode 100644 (file)
index 0000000..2a582da
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (value) {
+       value = value >>> 0;
+       return value ? 32 - value.toString(2).length : 32;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js
new file mode 100644 (file)
index 0000000..f90d830
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'cosh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js
new file mode 100644 (file)
index 0000000..000636a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.cosh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js
new file mode 100644 (file)
index 0000000..c796bcb
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var cosh = Math.cosh;
+       if (typeof cosh !== 'function') return false;
+       return cosh(1) === 1.5430806348152437;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js
new file mode 100644 (file)
index 0000000..f9062bd
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var exp = Math.exp;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return 1;
+       if (!isFinite(x)) return Infinity;
+       return (exp(x) + exp(-x)) / 2;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js
new file mode 100644 (file)
index 0000000..fc20c8c
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'expm1', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js
new file mode 100644 (file)
index 0000000..4c1bc77
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.expm1
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js
new file mode 100644 (file)
index 0000000..3b106d5
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var expm1 = Math.expm1;
+       if (typeof expm1 !== 'function') return false;
+       return expm1(1).toFixed(15) === '1.718281828459045';
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js
new file mode 100644 (file)
index 0000000..9c8c236
--- /dev/null
@@ -0,0 +1,16 @@
+// Thanks: https://github.com/monolithed/ECMAScript-6
+
+'use strict';
+
+var exp = Math.exp;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (x === Infinity) return Infinity;
+       if (x === -Infinity) return -1;
+
+       if ((x > -1.0e-6) && (x < 1.0e-6)) return x + x * x / 2;
+       return exp(x) - 1;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js
new file mode 100644 (file)
index 0000000..c55b26c
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'fround', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js
new file mode 100644 (file)
index 0000000..a077ed0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.fround
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js
new file mode 100644 (file)
index 0000000..ffbf094
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var fround = Math.fround;
+       if (typeof fround !== 'function') return false;
+       return fround(1.337) === 1.3370000123977661;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js
new file mode 100644 (file)
index 0000000..f2c86e4
--- /dev/null
@@ -0,0 +1,33 @@
+// Credit: https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js
+
+'use strict';
+
+var toFloat32;
+
+if (typeof Float32Array !== 'undefined') {
+       toFloat32 = (function () {
+               var float32Array = new Float32Array(1);
+               return function (x) {
+                       float32Array[0] = x;
+                       return float32Array[0];
+               };
+       }());
+} else {
+       toFloat32 = (function () {
+               var pack   = require('../_pack-ieee754')
+                 , unpack = require('../_unpack-ieee754');
+
+               return function (x) {
+                       return unpack(pack(x, 8, 23), 8, 23);
+               };
+       }());
+}
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+
+       return toFloat32(x);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js
new file mode 100644 (file)
index 0000000..b27fda7
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'hypot', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js
new file mode 100644 (file)
index 0000000..334bc58
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.hypot
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js
new file mode 100644 (file)
index 0000000..e75c5d3
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var hypot = Math.hypot;
+       if (typeof hypot !== 'function') return false;
+       return hypot(3, 4) === 5;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js
new file mode 100644 (file)
index 0000000..3d0988b
--- /dev/null
@@ -0,0 +1,34 @@
+// Thanks for hints: https://github.com/paulmillr/es6-shim
+
+'use strict';
+
+var some = Array.prototype.some, abs = Math.abs, sqrt = Math.sqrt
+
+  , compare = function (a, b) { return b - a; }
+  , divide = function (x) { return x / this; }
+  , add = function (sum, number) { return sum + number * number; };
+
+module.exports = function (val1, val2/*, …valn*/) {
+       var result, numbers;
+       if (!arguments.length) return 0;
+       some.call(arguments, function (val) {
+               if (isNaN(val)) {
+                       result = NaN;
+                       return;
+               }
+               if (!isFinite(val)) {
+                       result = Infinity;
+                       return true;
+               }
+               if (result !== undefined) return;
+               val = Number(val);
+               if (val === 0) return;
+               if (!numbers) numbers = [abs(val)];
+               else numbers.push(abs(val));
+       });
+       if (result !== undefined) return result;
+       if (!numbers) return 0;
+
+       numbers.sort(compare);
+       return numbers[0] * sqrt(numbers.map(divide, numbers[0]).reduce(add, 0));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js
new file mode 100644 (file)
index 0000000..ed207bd
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'imul', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js
new file mode 100644 (file)
index 0000000..41e5d5f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.imul
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js
new file mode 100644 (file)
index 0000000..d8495de
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var imul = Math.imul;
+       if (typeof imul !== 'function') return false;
+       return imul(-1, 8) === -8;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js
new file mode 100644 (file)
index 0000000..8fd8a8d
--- /dev/null
@@ -0,0 +1,13 @@
+// Thanks: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
+//         /Global_Objects/Math/imul
+
+'use strict';
+
+module.exports = function (x, y) {
+       var xh  = (x >>> 16) & 0xffff, xl = x & 0xffff
+         , yh  = (y >>> 16) & 0xffff, yl = y & 0xffff;
+
+       // the shift by 0 fixes the sign on the high part
+       // the final |0 converts the unsigned value into a signed value
+       return ((xl * yl) + (((xh * yl + xl * yh) << 16) >>> 0) | 0);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js
new file mode 100644 (file)
index 0000000..d112d0b
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+module.exports = {
+       acosh:  require('./acosh'),
+       asinh:  require('./asinh'),
+       atanh:  require('./atanh'),
+       cbrt:   require('./cbrt'),
+       clz32:  require('./clz32'),
+       cosh:   require('./cosh'),
+       expm1:  require('./expm1'),
+       fround: require('./fround'),
+       hypot:  require('./hypot'),
+       imul:   require('./imul'),
+       log10:  require('./log10'),
+       log2:   require('./log2'),
+       log1p:  require('./log1p'),
+       sign:   require('./sign'),
+       sinh:   require('./sinh'),
+       tanh:   require('./tanh'),
+       trunc:  require('./trunc')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js
new file mode 100644 (file)
index 0000000..dd96edd
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'log10', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js
new file mode 100644 (file)
index 0000000..a9eee51
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.log10
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js
new file mode 100644 (file)
index 0000000..c7f40ee
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var log10 = Math.log10;
+       if (typeof log10 !== 'function') return false;
+       return log10(2) === 0.3010299956639812;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js
new file mode 100644 (file)
index 0000000..fc77287
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var log = Math.log, LOG10E = Math.LOG10E;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < 0) return NaN;
+       if (x === 0) return -Infinity;
+       if (x === 1) return 0;
+       if (x === Infinity) return Infinity;
+
+       return log(x) * LOG10E;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js
new file mode 100644 (file)
index 0000000..f62f91f
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'log1p', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js
new file mode 100644 (file)
index 0000000..107b114
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.log1p
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js
new file mode 100644 (file)
index 0000000..61e9097
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var log1p = Math.log1p;
+       if (typeof log1p !== 'function') return false;
+       return log1p(1) === 0.6931471805599453;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js
new file mode 100644 (file)
index 0000000..10acebc
--- /dev/null
@@ -0,0 +1,17 @@
+// Thanks: https://github.com/monolithed/ECMAScript-6/blob/master/ES6.js
+
+'use strict';
+
+var log = Math.log;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < -1) return NaN;
+       if (x === -1) return -Infinity;
+       if (x === 0) return x;
+       if (x === Infinity) return Infinity;
+
+       if (x > -1.0e-8 && x < 1.0e-8) return (x - x * x / 2);
+       return log(1 + x);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js
new file mode 100644 (file)
index 0000000..8483f09
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'log2', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js
new file mode 100644 (file)
index 0000000..87e9050
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.log2
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js
new file mode 100644 (file)
index 0000000..802322f
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var log2 = Math.log2;
+       if (typeof log2 !== 'function') return false;
+       return log2(3).toFixed(15) === '1.584962500721156';
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js
new file mode 100644 (file)
index 0000000..cd80994
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var log = Math.log, LOG2E = Math.LOG2E;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < 0) return NaN;
+       if (x === 0) return -Infinity;
+       if (x === 1) return 0;
+       if (x === Infinity) return Infinity;
+
+       return log(x) * LOG2E;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js
new file mode 100644 (file)
index 0000000..b0db2f4
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'sign', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js
new file mode 100644 (file)
index 0000000..b232633
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.sign
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js
new file mode 100644 (file)
index 0000000..6d0de47
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var sign = Math.sign;
+       if (typeof sign !== 'function') return false;
+       return ((sign(10) === 1) && (sign(-20) === -1));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js
new file mode 100644 (file)
index 0000000..4df9c95
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (value) {
+       value = Number(value);
+       if (isNaN(value) || (value === 0)) return value;
+       return (value > 0) ? 1 : -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js
new file mode 100644 (file)
index 0000000..f259a63
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'sinh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js
new file mode 100644 (file)
index 0000000..e5bea57
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.sinh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js
new file mode 100644 (file)
index 0000000..888ec67
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var sinh = Math.sinh;
+       if (typeof sinh !== 'function') return false;
+       return ((sinh(1) === 1.1752011936438014) && (sinh(Number.MIN_VALUE) === 5e-324));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js
new file mode 100644 (file)
index 0000000..5b725be
--- /dev/null
@@ -0,0 +1,17 @@
+// Parts of implementation taken from es6-shim project
+// See: https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js
+
+'use strict';
+
+var expm1 = require('../expm1')
+
+  , abs = Math.abs, exp = Math.exp, e = Math.E;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+       if (abs(x) < 1) return (expm1(x) - expm1(-x)) / 2;
+       return (exp(x - 1) - exp(-x - 1)) * e / 2;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js
new file mode 100644 (file)
index 0000000..5199a02
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'tanh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js
new file mode 100644 (file)
index 0000000..6099c40
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.tanh
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js
new file mode 100644 (file)
index 0000000..a7d2223
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var tanh = Math.tanh;
+       if (typeof tanh !== 'function') return false;
+       return ((tanh(1) === 0.7615941559557649) && (tanh(Number.MAX_VALUE) === 1));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js
new file mode 100644 (file)
index 0000000..f6e948f
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var exp = Math.exp;
+
+module.exports = function (x) {
+       var a, b;
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (x === Infinity) return 1;
+       if (x === -Infinity) return -1;
+       a = exp(x);
+       if (a === Infinity) return 1;
+       b = exp(-x);
+       if (b === Infinity) return -1;
+       return (a - b) / (a + b);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js
new file mode 100644 (file)
index 0000000..3ee80ab
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'trunc', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js
new file mode 100644 (file)
index 0000000..0b0f9b2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.trunc
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js
new file mode 100644 (file)
index 0000000..3e8cde1
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var trunc = Math.trunc;
+       if (typeof trunc !== 'function') return false;
+       return (trunc(13.67) === 13) && (trunc(-13.67) === -13);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js
new file mode 100644 (file)
index 0000000..02e2c2a
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var floor = Math.floor;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (x === Infinity) return Infinity;
+       if (x === -Infinity) return -Infinity;
+       if (x > 0) return floor(x);
+       return -floor(-x);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js
new file mode 100644 (file)
index 0000000..3248117
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+       pad: require('./pad')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js
new file mode 100644 (file)
index 0000000..4478f6a
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var pad      = require('../../string/#/pad')
+  , toPosInt = require('../to-pos-integer')
+
+  , toFixed = Number.prototype.toFixed;
+
+module.exports = function (length/*, precision*/) {
+       var precision;
+       length = toPosInt(length);
+       precision = toPosInt(arguments[1]);
+
+       return pad.call(precision ? toFixed.call(this, precision) : this,
+               '0', length + (precision ? (1 + precision) : 0));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js
new file mode 100644 (file)
index 0000000..f0a670a
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'EPSILON', { value: require('./'),
+               configurable: false, enumerable: false, writable: false });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js
new file mode 100644 (file)
index 0000000..4e4b621
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = 2.220446049250313e-16;
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js
new file mode 100644 (file)
index 0000000..141f5d2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return (typeof Number.EPSILON === 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js
new file mode 100644 (file)
index 0000000..35daf78
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = {
+       '#':              require('./#'),
+       EPSILON:          require('./epsilon'),
+       isFinite:         require('./is-finite'),
+       isInteger:        require('./is-integer'),
+       isNaN:            require('./is-nan'),
+       isNumber:         require('./is-number'),
+       isSafeInteger:    require('./is-safe-integer'),
+       MAX_SAFE_INTEGER: require('./max-safe-integer'),
+       MIN_SAFE_INTEGER: require('./min-safe-integer'),
+       toInteger:        require('./to-integer'),
+       toPosInteger:     require('./to-pos-integer'),
+       toUint32:         require('./to-uint32')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js
new file mode 100644 (file)
index 0000000..51d7cac
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isFinite', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js
new file mode 100644 (file)
index 0000000..15d5f40
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isFinite
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js
new file mode 100644 (file)
index 0000000..556e396
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var isFinite = Number.isFinite;
+       if (typeof isFinite !== 'function') return false;
+       return !isFinite('23') && isFinite(34) && !isFinite(Infinity);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js
new file mode 100644 (file)
index 0000000..e3aee55
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (value) {
+       return (typeof value === 'number') && isFinite(value);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js
new file mode 100644 (file)
index 0000000..fe53f28
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isInteger', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js
new file mode 100644 (file)
index 0000000..55e039a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isInteger
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..a0e573b
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var isInteger = Number.isInteger;
+       if (typeof isInteger !== 'function') return false;
+       return !isInteger('23') && isInteger(34) && !isInteger(32.34);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js
new file mode 100644 (file)
index 0000000..5402939
--- /dev/null
@@ -0,0 +1,8 @@
+// Credit: http://www.2ality.com/2014/05/is-integer.html
+
+'use strict';
+
+module.exports = function (value) {
+       if (typeof value !== 'number') return false;
+       return (value % 1 === 0);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js
new file mode 100644 (file)
index 0000000..e1c5dee
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isNaN', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js
new file mode 100644 (file)
index 0000000..3b2c4ca
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isNaN
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js
new file mode 100644 (file)
index 0000000..4cf2766
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var isNaN = Number.isNaN;
+       if (typeof isNaN !== 'function') return false;
+       return !isNaN({}) && isNaN(NaN) && !isNaN(34);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js
new file mode 100644 (file)
index 0000000..070d96c
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (value) { return (value !== value); } //jslint: ignore
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js
new file mode 100644 (file)
index 0000000..19a99e4
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(1);
+
+module.exports = function (x) {
+       return ((typeof x === 'number') ||
+               ((x instanceof Number) ||
+                       ((typeof x === 'object') && (toString.call(x) === id))));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..51cef96
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isSafeInteger', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js
new file mode 100644 (file)
index 0000000..49adeaa
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isSafeInteger
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..510b60e
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function () {
+       var isSafeInteger = Number.isSafeInteger;
+       if (typeof isSafeInteger !== 'function') return false;
+       return !isSafeInteger('23') && isSafeInteger(34232322323) &&
+                       !isSafeInteger(9007199254740992);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js
new file mode 100644 (file)
index 0000000..692acdd
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var isInteger = require('../is-integer/shim')
+  , maxValue  = require('../max-safe-integer')
+
+  , abs = Math.abs;
+
+module.exports = function (value) {
+       if (!isInteger(value)) return false;
+       return abs(value) <= maxValue;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..4e0bb57
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'MAX_SAFE_INTEGER', { value: require('./'),
+               configurable: false, enumerable: false, writable: false });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js
new file mode 100644 (file)
index 0000000..ed5d6a5
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = Math.pow(2, 53) - 1;
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..7bd08a9
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return (typeof Number.MAX_SAFE_INTEGER === 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..e3f110e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'MIN_SAFE_INTEGER', { value: require('./'),
+               configurable: false, enumerable: false, writable: false });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js
new file mode 100644 (file)
index 0000000..1c6cc27
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = -(Math.pow(2, 53) - 1);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..efc9875
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return (typeof Number.MIN_SAFE_INTEGER === 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js
new file mode 100644 (file)
index 0000000..60e798c
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var sign = require('../math/sign')
+
+  , abs = Math.abs, floor = Math.floor;
+
+module.exports = function (value) {
+       if (isNaN(value)) return 0;
+       value = Number(value);
+       if ((value === 0) || !isFinite(value)) return value;
+       return sign(value) * floor(abs(value));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js
new file mode 100644 (file)
index 0000000..605a302
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var toInteger = require('./to-integer')
+
+  , max = Math.max;
+
+module.exports = function (value) { return max(0, toInteger(value)); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js
new file mode 100644 (file)
index 0000000..6263e85
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (value) { return value >>> 0; };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js
new file mode 100644 (file)
index 0000000..bf2c55d
--- /dev/null
@@ -0,0 +1,29 @@
+// Internal method, used by iteration functions.
+// Calls a function for each key-value pair found in object
+// Optionally takes compareFn to iterate object in specific order
+
+'use strict';
+
+var isCallable = require('./is-callable')
+  , callable   = require('./valid-callable')
+  , value      = require('./valid-value')
+
+  , call = Function.prototype.call, keys = Object.keys
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (method, defVal) {
+       return function (obj, cb/*, thisArg, compareFn*/) {
+               var list, thisArg = arguments[2], compareFn = arguments[3];
+               obj = Object(value(obj));
+               callable(cb);
+
+               list = keys(obj);
+               if (compareFn) {
+                       list.sort(isCallable(compareFn) ? compareFn.bind(obj) : undefined);
+               }
+               return list[method](function (key, index) {
+                       if (!propertyIsEnumerable.call(obj, key)) return defVal;
+                       return call.call(cb, thisArg, obj[key], key, obj, index);
+               });
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js
new file mode 100644 (file)
index 0000000..3bcc68e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Object, 'assign', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js
new file mode 100644 (file)
index 0000000..ab0f9f2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Object.assign
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js
new file mode 100644 (file)
index 0000000..579ad2d
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function () {
+       var assign = Object.assign, obj;
+       if (typeof assign !== 'function') return false;
+       obj = { foo: 'raz' };
+       assign(obj, { bar: 'dwa' }, { trzy: 'trzy' });
+       return (obj.foo + obj.bar + obj.trzy) === 'razdwatrzy';
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js
new file mode 100644 (file)
index 0000000..74da11a
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var keys  = require('../keys')
+  , value = require('../valid-value')
+
+  , max = Math.max;
+
+module.exports = function (dest, src/*, …srcn*/) {
+       var error, i, l = max(arguments.length, 2), assign;
+       dest = Object(value(dest));
+       assign = function (key) {
+               try { dest[key] = src[key]; } catch (e) {
+                       if (!error) error = e;
+               }
+       };
+       for (i = 1; i < l; ++i) {
+               src = arguments[i];
+               keys(src).forEach(assign);
+       }
+       if (error !== undefined) throw error;
+       return dest;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js
new file mode 100644 (file)
index 0000000..85e4637
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var keys = require('./keys');
+
+module.exports = function (obj) {
+       var error;
+       keys(obj).forEach(function (key) {
+               try {
+                       delete this[key];
+               } catch (e) {
+                       if (!error) error = e;
+               }
+       }, obj);
+       if (error !== undefined) throw error;
+       return obj;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js
new file mode 100644 (file)
index 0000000..d021da4
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var filter = require('./filter');
+
+module.exports = function (obj) {
+       return filter(obj, function (val) { return val != null; });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js
new file mode 100644 (file)
index 0000000..2ab11f1
--- /dev/null
@@ -0,0 +1,42 @@
+'use strict';
+
+var strCompare = require('../string/#/case-insensitive-compare')
+  , isObject   = require('./is-object')
+
+  , resolve, typeMap;
+
+typeMap = {
+       undefined: 0,
+       object: 1,
+       boolean: 2,
+       string: 3,
+       number: 4
+};
+
+resolve = function (a) {
+       if (isObject(a)) {
+               if (typeof a.valueOf !== 'function') return NaN;
+               a = a.valueOf();
+               if (isObject(a)) {
+                       if (typeof a.toString !== 'function') return NaN;
+                       a = a.toString();
+                       if (typeof a !== 'string') return NaN;
+               }
+       }
+       return a;
+};
+
+module.exports = function (a, b) {
+       if (a === b) return 0; // Same
+
+       a = resolve(a);
+       b = resolve(b);
+       if (a == b) return typeMap[typeof a] - typeMap[typeof b]; //jslint: ignore
+       if (a == null) return -1;
+       if (b == null) return 1;
+       if ((typeof a === 'string') || (typeof b === 'string')) {
+               return strCompare.call(a, b);
+       }
+       if ((a !== a) && (b !== b)) return 0; //jslint: ignore
+       return Number(a) - Number(b);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js
new file mode 100644 (file)
index 0000000..548e3ee
--- /dev/null
@@ -0,0 +1,30 @@
+'use strict';
+
+var isPlainObject = require('./is-plain-object')
+  , value         = require('./valid-value')
+
+  , keys = Object.keys
+  , copy;
+
+copy = function (source) {
+       var target = {};
+       this[0].push(source);
+       this[1].push(target);
+       keys(source).forEach(function (key) {
+               var index;
+               if (!isPlainObject(source[key])) {
+                       target[key] = source[key];
+                       return;
+               }
+               index = this[0].indexOf(source[key]);
+               if (index === -1) target[key] = copy.call(this, source[key]);
+               else target[key] = this[1][index];
+       }, this);
+       return target;
+};
+
+module.exports = function (source) {
+       var obj = Object(value(source));
+       if (obj !== source) return obj;
+       return copy.call([[], []], obj);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js
new file mode 100644 (file)
index 0000000..4d71772
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var assign = require('./assign')
+  , value  = require('./valid-value');
+
+module.exports = function (obj) {
+       var copy = Object(value(obj));
+       if (copy !== obj) return copy;
+       return assign({}, obj);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js
new file mode 100644 (file)
index 0000000..29cfbb5
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var keys  = require('./keys');
+
+module.exports = function (obj) { return keys(obj).length; };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js
new file mode 100644 (file)
index 0000000..f813b46
--- /dev/null
@@ -0,0 +1,36 @@
+// Workaround for http://code.google.com/p/v8/issues/detail?id=2804
+
+'use strict';
+
+var create = Object.create, shim;
+
+if (!require('./set-prototype-of/is-implemented')()) {
+       shim = require('./set-prototype-of/shim');
+}
+
+module.exports = (function () {
+       var nullObject, props, desc;
+       if (!shim) return create;
+       if (shim.level !== 1) return create;
+
+       nullObject = {};
+       props = {};
+       desc = { configurable: false, enumerable: false, writable: true,
+               value: undefined };
+       Object.getOwnPropertyNames(Object.prototype).forEach(function (name) {
+               if (name === '__proto__') {
+                       props[name] = { configurable: true, enumerable: false, writable: true,
+                               value: undefined };
+                       return;
+               }
+               props[name] = desc;
+       });
+       Object.defineProperties(nullObject, props);
+
+       Object.defineProperty(shim, 'nullPolyfill', { configurable: false,
+               enumerable: false, writable: false, value: nullObject });
+
+       return function (prototype, props) {
+               return create((prototype === null) ? nullObject : prototype, props);
+       };
+}());
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js
new file mode 100644 (file)
index 0000000..037937e
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (x, y) {
+       return ((x === y) || ((x !== x) && (y !== y))); //jslint: ignore
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js
new file mode 100644 (file)
index 0000000..1303db2
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./_iterate')('every', true);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js
new file mode 100644 (file)
index 0000000..e5edb49
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call;
+
+module.exports = function (obj, cb/*, thisArg*/) {
+       var o = {}, thisArg = arguments[2];
+       callable(cb);
+       forEach(obj, function (value, key, obj, index) {
+               if (call.call(cb, thisArg, value, key, obj, index)) o[key] = obj[key];
+       });
+       return o;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js
new file mode 100644 (file)
index 0000000..7df10b2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var value = require('./valid-value')
+
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (obj) {
+       var i;
+       value(obj);
+       for (i in obj) {
+               if (propertyIsEnumerable.call(obj, i)) return i;
+       }
+       return null;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js
new file mode 100644 (file)
index 0000000..e8b4044
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var isPlainObject = require('./is-plain-object')
+  , forEach       = require('./for-each')
+
+  , process;
+
+process = function self(value, key) {
+       if (isPlainObject(value)) forEach(value, self, this);
+       else this[key] = value;
+};
+
+module.exports = function (obj) {
+       var flattened = {};
+       forEach(obj, process, flattened);
+       return flattened;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js
new file mode 100644 (file)
index 0000000..6674f8a
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./_iterate')('forEach');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js
new file mode 100644 (file)
index 0000000..54a01e5
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var uniq  = require('../array/#/uniq')
+  , value = require('./valid-value')
+
+  , push = Array.prototype.push
+  , getOwnPropertyNames = Object.getOwnPropertyNames
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (obj) {
+       var keys;
+       obj = Object(value(obj));
+       keys = getOwnPropertyNames(obj);
+       while ((obj = getPrototypeOf(obj))) {
+               push.apply(keys, getOwnPropertyNames(obj));
+       }
+       return uniq.call(keys);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js
new file mode 100644 (file)
index 0000000..4bdf403
--- /dev/null
@@ -0,0 +1,48 @@
+'use strict';
+
+module.exports = {
+       assign:                     require('./assign'),
+       clear:                      require('./clear'),
+       compact:                    require('./compact'),
+       compare:                    require('./compare'),
+       copy:                       require('./copy'),
+       copyDeep:                   require('./copy-deep'),
+       count:                      require('./count'),
+       create:                     require('./create'),
+       eq:                         require('./eq'),
+       every:                      require('./every'),
+       filter:                     require('./filter'),
+       firstKey:                   require('./first-key'),
+       flatten:                    require('./flatten'),
+       forEach:                    require('./for-each'),
+       getPropertyNames:           require('./get-property-names'),
+       is:                         require('./is'),
+       isArrayLike:                require('./is-array-like'),
+       isCallable:                 require('./is-callable'),
+       isCopy:                     require('./is-copy'),
+       isCopyDeep:                 require('./is-copy-deep'),
+       isEmpty:                    require('./is-empty'),
+       isObject:                   require('./is-object'),
+       isPlainObject:              require('./is-plain-object'),
+       keyOf:                      require('./key-of'),
+       keys:                       require('./keys'),
+       map:                        require('./map'),
+       mapKeys:                    require('./map-keys'),
+       normalizeOptions:           require('./normalize-options'),
+       mixin:                      require('./mixin'),
+       mixinPrototypes:            require('./mixin-prototypes'),
+       primitiveSet:               require('./primitive-set'),
+       safeTraverse:               require('./safe-traverse'),
+       serialize:                  require('./serialize'),
+       setPrototypeOf:             require('./set-prototype-of'),
+       some:                       require('./some'),
+       toArray:                    require('./to-array'),
+       unserialize:                require('./unserialize'),
+       validateArrayLike:          require('./validate-array-like'),
+       validateArrayLikeObject:    require('./validate-array-like-object'),
+       validCallable:              require('./valid-callable'),
+       validObject:                require('./valid-object'),
+       validateStringifiable:      require('./validate-stringifiable'),
+       validateStringifiableValue: require('./validate-stringifiable-value'),
+       validValue:                 require('./valid-value')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js
new file mode 100644 (file)
index 0000000..b8beed2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var isFunction = require('../function/is-function')
+  , isObject   = require('./is-object');
+
+module.exports = function (x) {
+       return ((x != null) && (typeof x.length === 'number') &&
+
+               // Just checking ((typeof x === 'object') && (typeof x !== 'function'))
+               // won't work right for some cases, e.g.:
+               // type of instance of NodeList in Safari is a 'function'
+
+               ((isObject(x) && !isFunction(x)) || (typeof x === "string"))) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js
new file mode 100644 (file)
index 0000000..5d5d4b3
--- /dev/null
@@ -0,0 +1,5 @@
+// Deprecated
+
+'use strict';
+
+module.exports = function (obj) { return typeof obj === 'function'; };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js
new file mode 100644 (file)
index 0000000..c4b2b42
--- /dev/null
@@ -0,0 +1,58 @@
+'use strict';
+
+var eq            = require('./eq')
+  , isPlainObject = require('./is-plain-object')
+  , value         = require('./valid-value')
+
+  , isArray = Array.isArray, keys = Object.keys
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable
+
+  , eqArr, eqVal, eqObj;
+
+eqArr = function (a, b, recMap) {
+       var i, l = a.length;
+       if (l !== b.length) return false;
+       for (i = 0; i < l; ++i) {
+               if (a.hasOwnProperty(i) !== b.hasOwnProperty(i)) return false;
+               if (!eqVal(a[i], b[i], recMap)) return false;
+       }
+       return true;
+};
+
+eqObj = function (a, b, recMap) {
+       var k1 = keys(a), k2 = keys(b);
+       if (k1.length !== k2.length) return false;
+       return k1.every(function (key) {
+               if (!propertyIsEnumerable.call(b, key)) return false;
+               return eqVal(a[key], b[key], recMap);
+       });
+};
+
+eqVal = function (a, b, recMap) {
+       var i, eqX, c1, c2;
+       if (eq(a, b)) return true;
+       if (isPlainObject(a)) {
+               if (!isPlainObject(b)) return false;
+               eqX = eqObj;
+       } else if (isArray(a) && isArray(b)) {
+               eqX = eqArr;
+       } else {
+               return false;
+       }
+       c1 = recMap[0];
+       c2 = recMap[1];
+       i = c1.indexOf(a);
+       if (i !== -1) {
+               if (c2[i].indexOf(b) !== -1) return true;
+       } else {
+               i = c1.push(a) - 1;
+               c2[i] = [];
+       }
+       c2[i].push(b);
+       return eqX(a, b, recMap);
+};
+
+module.exports = function (a, b) {
+       if (eq(value(a), value(b))) return true;
+       return eqVal(Object(a), Object(b), [[], []]);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js
new file mode 100644 (file)
index 0000000..4fe639d
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var eq     = require('./eq')
+  , value  = require('./valid-value')
+
+  , keys = Object.keys
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (a, b) {
+       var k1, k2;
+
+       if (eq(value(a), value(b))) return true;
+
+       a = Object(a);
+       b = Object(b);
+
+       k1 = keys(a);
+       k2 = keys(b);
+       if (k1.length !== k2.length) return false;
+       return k1.every(function (key) {
+               if (!propertyIsEnumerable.call(b, key)) return false;
+               return eq(a[key], b[key]);
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js
new file mode 100644 (file)
index 0000000..7b51a87
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var value = require('./valid-value')
+
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (obj) {
+       var i;
+       value(obj);
+       for (i in obj) { //jslint: ignore
+               if (propertyIsEnumerable.call(obj, i)) return false;
+       }
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js
new file mode 100644 (file)
index 0000000..a86facf
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var map = { function: true, object: true };
+
+module.exports = function (x) {
+       return ((x != null) && map[typeof x]) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js
new file mode 100644 (file)
index 0000000..9a28231
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var getPrototypeOf = Object.getPrototypeOf, prototype = Object.prototype
+  , toString = prototype.toString
+
+  , id = Object().toString();
+
+module.exports = function (value) {
+       var proto, constructor;
+       if (!value || (typeof value !== 'object') || (toString.call(value) !== id)) {
+               return false;
+       }
+       proto = getPrototypeOf(value);
+       if (proto === null) {
+               constructor = value.constructor;
+               if (typeof constructor !== 'function') return true;
+               return (constructor.prototype !== value);
+       }
+       return (proto === prototype) || (getPrototypeOf(proto) === null);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js
new file mode 100644 (file)
index 0000000..5778b50
--- /dev/null
@@ -0,0 +1,10 @@
+// Implementation credits go to:
+// http://wiki.ecmascript.org/doku.php?id=harmony:egal
+
+'use strict';
+
+module.exports = function (x, y) {
+       return (x === y) ?
+                       ((x !== 0) || ((1 / x) === (1 / y))) :
+                       ((x !== x) && (y !== y)); //jslint: ignore
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js
new file mode 100644 (file)
index 0000000..8c44c8d
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var eq   = require('./eq')
+  , some = require('./some');
+
+module.exports = function (obj, searchValue) {
+       var r;
+       return some(obj, function (value, name) {
+               if (eq(value, searchValue)) {
+                       r = name;
+                       return true;
+               }
+               return false;
+       }) ? r : null;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js
new file mode 100644 (file)
index 0000000..c6872bd
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Object, 'keys', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js
new file mode 100644 (file)
index 0000000..5ef0522
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Object.keys
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..40c32c3
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function () {
+       try {
+               Object.keys('primitive');
+               return true;
+       } catch (e) { return false; }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js
new file mode 100644 (file)
index 0000000..034b6b2
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var keys = Object.keys;
+
+module.exports = function (object) {
+       return keys(object == null ? object : Object(object));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js
new file mode 100644 (file)
index 0000000..26f0eca
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call;
+
+module.exports = function (obj, cb/*, thisArg*/) {
+       var o = {}, thisArg = arguments[2];
+       callable(cb);
+       forEach(obj, function (value, key, obj, index) {
+               o[call.call(cb, thisArg, key, value, this, index)] = value;
+       }, obj);
+       return o;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js
new file mode 100644 (file)
index 0000000..6b39d3c
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call;
+
+module.exports = function (obj, cb/*, thisArg*/) {
+       var o = {}, thisArg = arguments[2];
+       callable(cb);
+       forEach(obj, function (value, key, obj, index) {
+               o[key] = call.call(cb, thisArg, value, key, obj, index);
+       });
+       return o;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js
new file mode 100644 (file)
index 0000000..1ef5756
--- /dev/null
@@ -0,0 +1,34 @@
+'use strict';
+
+var value = require('./valid-value')
+  , mixin = require('./mixin')
+
+  , defineProperty = Object.defineProperty
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+  , getOwnPropertyNames = Object.getOwnPropertyNames
+  , getPrototypeOf = Object.getPrototypeOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (target, source) {
+       var error, end, define;
+       target = Object(value(target));
+       source = Object(value(source));
+       end = getPrototypeOf(target);
+       if (source === end) return target;
+       try {
+               mixin(target, source);
+       } catch (e) { error = e; }
+       source = getPrototypeOf(source);
+       define = function (name) {
+               if (hasOwnProperty.call(target, name)) return;
+               try {
+                       defineProperty(target, name, getOwnPropertyDescriptor(source, name));
+               } catch (e) { error = e; }
+       };
+       while (source && (source !== end)) {
+               getOwnPropertyNames(source).forEach(define);
+               source = getPrototypeOf(source);
+       }
+       if (error) throw error;
+       return target;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js
new file mode 100644 (file)
index 0000000..80b5df5
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var value = require('./valid-value')
+
+  , defineProperty = Object.defineProperty
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+  , getOwnPropertyNames = Object.getOwnPropertyNames;
+
+module.exports = function (target, source) {
+       var error;
+       target = Object(value(target));
+       getOwnPropertyNames(Object(value(source))).forEach(function (name) {
+               try {
+                       defineProperty(target, name, getOwnPropertyDescriptor(source, name));
+               } catch (e) { error = e; }
+       });
+       if (error !== undefined) throw error;
+       return target;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js
new file mode 100644 (file)
index 0000000..cf8ed8d
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var forEach = Array.prototype.forEach, create = Object.create;
+
+var process = function (src, obj) {
+       var key;
+       for (key in src) obj[key] = src[key];
+};
+
+module.exports = function (options/*, …options*/) {
+       var result = create(null);
+       forEach.call(arguments, function (options) {
+               if (options == null) return;
+               process(Object(options), result);
+       });
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js
new file mode 100644 (file)
index 0000000..ada1095
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var forEach = Array.prototype.forEach, create = Object.create;
+
+module.exports = function (arg/*, …args*/) {
+       var set = create(null);
+       forEach.call(arguments, function (name) { set[name] = true; });
+       return set;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js
new file mode 100644 (file)
index 0000000..7e1b5f4
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var value = require('./valid-value');
+
+module.exports = function (obj/*, …names*/) {
+       var length, current = 1;
+       value(obj);
+       length = arguments.length - 1;
+       if (!length) return obj;
+       while (current < length) {
+               obj = obj[arguments[current++]];
+               if (obj == null) return undefined;
+       }
+       return obj[arguments[current]];
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js
new file mode 100644 (file)
index 0000000..8113b68
--- /dev/null
@@ -0,0 +1,36 @@
+'use strict';
+
+var toArray  = require('./to-array')
+  , isDate   = require('../date/is-date')
+  , isRegExp = require('../reg-exp/is-reg-exp')
+
+  , isArray = Array.isArray, stringify = JSON.stringify
+  , keyValueToString = function (value, key) { return stringify(key) + ':' + exports(value); };
+
+var sparseMap = function (arr) {
+       var i, l = arr.length, result = new Array(l);
+       for (i = 0; i < l; ++i) {
+               if (!arr.hasOwnProperty(i)) continue;
+               result[i] = exports(arr[i]);
+       }
+       return result;
+};
+
+module.exports = exports = function (obj) {
+       if (obj == null) return String(obj);
+       switch (typeof obj) {
+       case 'string':
+               return stringify(obj);
+       case 'number':
+       case 'boolean':
+       case 'function':
+               return String(obj);
+       case 'object':
+               if (isArray(obj)) return '[' + sparseMap(obj) + ']';
+               if (isRegExp(obj)) return String(obj);
+               if (isDate(obj)) return 'new Date(' + obj.valueOf() + ')';
+               return '{' + toArray(obj, keyValueToString) + '}';
+       default:
+               throw new TypeError("Serialization of " + String(obj) + "is unsupported");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js
new file mode 100644 (file)
index 0000000..000e6bd
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var shim;
+
+if (!require('./is-implemented')() && (shim = require('./shim'))) {
+       Object.defineProperty(Object, 'setPrototypeOf',
+               { value: shim, configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js
new file mode 100644 (file)
index 0000000..ccc4099
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Object.setPrototypeOf
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js
new file mode 100644 (file)
index 0000000..98d0c84
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var create = Object.create, getPrototypeOf = Object.getPrototypeOf
+  , x = {};
+
+module.exports = function (/*customCreate*/) {
+       var setPrototypeOf = Object.setPrototypeOf
+         , customCreate = arguments[0] || create;
+       if (typeof setPrototypeOf !== 'function') return false;
+       return getPrototypeOf(setPrototypeOf(customCreate(null), x)) === x;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js
new file mode 100644 (file)
index 0000000..4ec9446
--- /dev/null
@@ -0,0 +1,73 @@
+// Big thanks to @WebReflection for sorting this out
+// https://gist.github.com/WebReflection/5593554
+
+'use strict';
+
+var isObject      = require('../is-object')
+  , value         = require('../valid-value')
+
+  , isPrototypeOf = Object.prototype.isPrototypeOf
+  , defineProperty = Object.defineProperty
+  , nullDesc = { configurable: true, enumerable: false, writable: true,
+               value: undefined }
+  , validate;
+
+validate = function (obj, prototype) {
+       value(obj);
+       if ((prototype === null) || isObject(prototype)) return obj;
+       throw new TypeError('Prototype must be null or an object');
+};
+
+module.exports = (function (status) {
+       var fn, set;
+       if (!status) return null;
+       if (status.level === 2) {
+               if (status.set) {
+                       set = status.set;
+                       fn = function (obj, prototype) {
+                               set.call(validate(obj, prototype), prototype);
+                               return obj;
+                       };
+               } else {
+                       fn = function (obj, prototype) {
+                               validate(obj, prototype).__proto__ = prototype;
+                               return obj;
+                       };
+               }
+       } else {
+               fn = function self(obj, prototype) {
+                       var isNullBase;
+                       validate(obj, prototype);
+                       isNullBase = isPrototypeOf.call(self.nullPolyfill, obj);
+                       if (isNullBase) delete self.nullPolyfill.__proto__;
+                       if (prototype === null) prototype = self.nullPolyfill;
+                       obj.__proto__ = prototype;
+                       if (isNullBase) defineProperty(self.nullPolyfill, '__proto__', nullDesc);
+                       return obj;
+               };
+       }
+       return Object.defineProperty(fn, 'level', { configurable: false,
+               enumerable: false, writable: false, value: status.level });
+}((function () {
+       var x = Object.create(null), y = {}, set
+         , desc = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__');
+
+       if (desc) {
+               try {
+                       set = desc.set; // Opera crashes at this point
+                       set.call(x, y);
+               } catch (ignore) { }
+               if (Object.getPrototypeOf(x) === y) return { set: set, level: 2 };
+       }
+
+       x.__proto__ = y;
+       if (Object.getPrototypeOf(x) === y) return { level: 2 };
+
+       x = {};
+       x.__proto__ = y;
+       if (Object.getPrototypeOf(x) === y) return { level: 1 };
+
+       return false;
+}())));
+
+require('../create');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js
new file mode 100644 (file)
index 0000000..cde5dde
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./_iterate')('some', false);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js
new file mode 100644 (file)
index 0000000..a954abb
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call
+
+  , defaultCb = function (value, key) { return [key, value]; };
+
+module.exports = function (obj/*, cb, thisArg, compareFn*/) {
+       var a = [], cb = arguments[1], thisArg = arguments[2];
+       cb = (cb == null) ? defaultCb : callable(cb);
+
+       forEach(obj, function (value, key, obj, index) {
+               a.push(call.call(cb, thisArg, value, key, this, index));
+       }, obj, arguments[3]);
+       return a;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js
new file mode 100644 (file)
index 0000000..ce68e40
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var value  = require('./valid-value');
+
+module.exports = exports = function (code) {
+       return (new Function('return ' + value(code)))();
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js
new file mode 100644 (file)
index 0000000..c977527
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (fn) {
+       if (typeof fn !== 'function') throw new TypeError(fn + " is not a function");
+       return fn;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js
new file mode 100644 (file)
index 0000000..f82bd51
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isObject = require('./is-object');
+
+module.exports = function (value) {
+       if (!isObject(value)) throw new TypeError(value + " is not an Object");
+       return value;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js
new file mode 100644 (file)
index 0000000..36c8ec3
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (value) {
+       if (value == null) throw new TypeError("Cannot use null or undefined");
+       return value;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js
new file mode 100644 (file)
index 0000000..89e12c5
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var isArrayLike = require('./is-array-like')
+  , isObject    = require('./is-object');
+
+module.exports = function (obj) {
+       if (isObject(obj) && isArrayLike(obj)) return obj;
+       throw new TypeError(obj + " is not array-like object");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js
new file mode 100644 (file)
index 0000000..6a35b54
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isArrayLike = require('./is-array-like');
+
+module.exports = function (obj) {
+       if (isArrayLike(obj)) return obj;
+       throw new TypeError(obj + " is not array-like value");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js
new file mode 100644 (file)
index 0000000..9df3b66
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var value         = require('./valid-value')
+  , stringifiable = require('./validate-stringifiable');
+
+module.exports = function (x) { return stringifiable(value(x)); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js
new file mode 100644 (file)
index 0000000..eba7ce7
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (stringifiable) {
+       try {
+               return String(stringifiable);
+       } catch (e) {
+               throw new TypeError("Passed argument cannot be stringifed");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json
new file mode 100644 (file)
index 0000000..01d6532
--- /dev/null
@@ -0,0 +1,74 @@
+{
+  "name": "es5-ext",
+  "version": "0.10.7",
+  "description": "ECMAScript 5 extensions and ES6 shims",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "ecmascript",
+    "ecmascript5",
+    "ecmascript6",
+    "es5",
+    "es6",
+    "extensions",
+    "ext",
+    "addons",
+    "extras",
+    "harmony",
+    "javascript",
+    "polyfill",
+    "shim",
+    "util",
+    "utils",
+    "utilities"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es5-ext.git"
+  },
+  "dependencies": {
+    "es6-iterator": "~0.1.3",
+    "es6-symbol": "~2.0.1"
+  },
+  "devDependencies": {
+    "tad": "~0.2.2",
+    "xlint": "~0.2.2",
+    "xlint-jslint-medikoo": "~0.1.2"
+  },
+  "scripts": {
+    "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+    "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "5b63ee02f50dfbc70dc1f62bc66b8718af443f83",
+  "bugs": {
+    "url": "https://github.com/medikoo/es5-ext/issues"
+  },
+  "homepage": "https://github.com/medikoo/es5-ext",
+  "_id": "es5-ext@0.10.7",
+  "_shasum": "dfaea50721301042e2d89c1719d43493fa821656",
+  "_from": "es5-ext@>=0.10.6 <0.11.0",
+  "_npmVersion": "2.7.4",
+  "_nodeVersion": "0.12.2",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "dfaea50721301042e2d89c1719d43493fa821656",
+    "tarball": "http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js
new file mode 100644 (file)
index 0000000..f7e7a58
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = {
+       isSticky:  require('./is-sticky'),
+       isUnicode: require('./is-unicode'),
+       match:     require('./match'),
+       replace:   require('./replace'),
+       search:    require('./search'),
+       split:     require('./split')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js
new file mode 100644 (file)
index 0000000..830a481
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var validRegExp = require('../valid-reg-exp')
+
+  , re = /\/[a-xz]*y[a-xz]*$/;
+
+module.exports = function () {
+       return Boolean(String(validRegExp(this)).match(re));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js
new file mode 100644 (file)
index 0000000..b005f6d
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var validRegExp = require('../valid-reg-exp')
+
+  , re = /\/[a-xz]*u[a-xz]*$/;
+
+module.exports = function () {
+       return Boolean(String(validRegExp(this)).match(re));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js
new file mode 100644 (file)
index 0000000..921c936
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'match', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js
new file mode 100644 (file)
index 0000000..0534ac3
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.match
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js
new file mode 100644 (file)
index 0000000..b7e9964
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /foo/;
+
+module.exports = function () {
+       if (typeof re.match !== 'function') return false;
+       return re.match('barfoobar') && !re.match('elo');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js
new file mode 100644 (file)
index 0000000..4f99cf4
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string) {
+       validRegExp(this);
+       return String(string).match(this);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js
new file mode 100644 (file)
index 0000000..ad580de
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'replace', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js
new file mode 100644 (file)
index 0000000..5658177
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.replace
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js
new file mode 100644 (file)
index 0000000..1b42d25
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /foo/;
+
+module.exports = function () {
+       if (typeof re.replace !== 'function') return false;
+       return re.replace('foobar', 'mar') === 'marbar';
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js
new file mode 100644 (file)
index 0000000..c3e6aeb
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string, replaceValue) {
+       validRegExp(this);
+       return String(string).replace(this, replaceValue);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js
new file mode 100644 (file)
index 0000000..3804f4e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'search', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js
new file mode 100644 (file)
index 0000000..67995d4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.search
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js
new file mode 100644 (file)
index 0000000..efba889
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /foo/;
+
+module.exports = function () {
+       if (typeof re.search !== 'function') return false;
+       return re.search('barfoo') === 3;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js
new file mode 100644 (file)
index 0000000..6d9dcae
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string) {
+       validRegExp(this);
+       return String(string).search(this);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js
new file mode 100644 (file)
index 0000000..50facb6
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'split', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js
new file mode 100644 (file)
index 0000000..f101f5a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.split
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js
new file mode 100644 (file)
index 0000000..7244c99
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /\|/;
+
+module.exports = function () {
+       if (typeof re.split !== 'function') return false;
+       return re.split('bar|foo')[1] === 'foo';
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js
new file mode 100644 (file)
index 0000000..76154e7
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string) {
+       validRegExp(this);
+       return String(string).split(this);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js
new file mode 100644 (file)
index 0000000..7e8af1d
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isSticky = require('../is-sticky');
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'sticky', { configurable: true,
+               enumerable: false, get: isSticky });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js
new file mode 100644 (file)
index 0000000..379c4a5
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return RegExp.prototype.sticky === false;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js
new file mode 100644 (file)
index 0000000..5a82a4d
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isUnicode = require('../is-unicode');
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'unicode', { configurable: true,
+               enumerable: false, get: isUnicode });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js
new file mode 100644 (file)
index 0000000..a8b15b3
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return RegExp.prototype.unicode === false;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js
new file mode 100644 (file)
index 0000000..a2363fc
--- /dev/null
@@ -0,0 +1,9 @@
+// Thanks to Andrew Clover:
+// http://stackoverflow.com/questions/3561493
+// /is-there-a-regexp-escape-function-in-javascript
+
+'use strict';
+
+var re = /[\-\/\\\^$*+?.()|\[\]{}]/g;
+
+module.exports = function (str) { return String(str).replace(re, '\\$&'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js
new file mode 100644 (file)
index 0000000..75ea313
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = {
+       '#':         require('./#'),
+       escape:      require('./escape'),
+       isRegExp:    require('./is-reg-exp'),
+       validRegExp: require('./valid-reg-exp')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js
new file mode 100644 (file)
index 0000000..6eb1297
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(/a/);
+
+module.exports = function (x) {
+       return (x && (x instanceof RegExp || (toString.call(x) === id))) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js
new file mode 100644 (file)
index 0000000..d3a7764
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isRegExp = require('./is-reg-exp');
+
+module.exports = function (x) {
+       if (!isRegExp(x)) throw new TypeError(x + " is not a RegExp object");
+       return x;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..4494d7b
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, require('es6-symbol').iterator,
+               { value: require('./shim'), configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..22f15e6
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype[require('es6-symbol').iterator] : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..f5c462d
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function () {
+       var str = '🙈f', iterator, result;
+       if (typeof str[iteratorSymbol] !== 'function') return false;
+       iterator = str[iteratorSymbol]();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== '🙈') return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..0be3029
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var StringIterator = require('es6-iterator/string')
+  , value          = require('../../../object/valid-value');
+
+module.exports = function () { return new StringIterator(value(this)); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js
new file mode 100644 (file)
index 0000000..77bd251
--- /dev/null
@@ -0,0 +1,33 @@
+// Based on: https://github.com/mathiasbynens/String.prototype.at
+// Thanks @mathiasbynens !
+
+'use strict';
+
+var toInteger  = require('../../number/to-integer')
+  , validValue = require('../../object/valid-value');
+
+module.exports = function (pos) {
+       var str = String(validValue(this)), size = str.length
+         , cuFirst, cuSecond, nextPos, len;
+       pos = toInteger(pos);
+
+       // Account for out-of-bounds indices
+       // The odd lower bound is because the ToInteger operation is
+       // going to round `n` to `0` for `-1 < n <= 0`.
+       if (pos <= -1 || pos >= size) return '';
+
+       // Second half of `ToInteger`
+       pos = pos | 0;
+       // Get the first code unit and code unit value
+       cuFirst = str.charCodeAt(pos);
+       nextPos = pos + 1;
+       len = 1;
+       if ( // check if it’s the start of a surrogate pair
+               (cuFirst >= 0xD800) && (cuFirst <= 0xDBFF) && // high surrogate
+                       (size > nextPos) // there is a next code unit
+       ) {
+               cuSecond = str.charCodeAt(nextPos);
+               if (cuSecond >= 0xDC00 && cuSecond <= 0xDFFF) len = 2; // low surrogate
+       }
+       return str.slice(pos, pos + len);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js
new file mode 100644 (file)
index 0000000..1cb8d12
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var replace = String.prototype.replace
+  , re = /([A-Z])/g;
+
+module.exports = function () {
+       var str = replace.call(this, re, "-$1").toLowerCase();
+       if (str[0] === '-') str = str.slice(1);
+       return str;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js
new file mode 100644 (file)
index 0000000..ed76827
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function () {
+       var str = String(value(this));
+       return str.charAt(0).toUpperCase() + str.slice(1);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js
new file mode 100644 (file)
index 0000000..599cb83
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var toLowerCase = String.prototype.toLowerCase;
+
+module.exports = function (other) {
+       return toLowerCase.call(this).localeCompare(toLowerCase.call(String(other)));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js
new file mode 100644 (file)
index 0000000..1e7a37b
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'codePointAt',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js
new file mode 100644 (file)
index 0000000..7e91d83
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.codePointAt
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js
new file mode 100644 (file)
index 0000000..b271589
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'abc\uD834\uDF06def';
+
+module.exports = function () {
+       if (typeof str.codePointAt !== 'function') return false;
+       return str.codePointAt(3) === 0x1D306;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js
new file mode 100644 (file)
index 0000000..1c9038b
--- /dev/null
@@ -0,0 +1,26 @@
+// Based on: https://github.com/mathiasbynens/String.prototype.codePointAt
+// Thanks @mathiasbynens !
+
+'use strict';
+
+var toInteger  = require('../../../number/to-integer')
+  , validValue = require('../../../object/valid-value');
+
+module.exports = function (pos) {
+       var str = String(validValue(this)), l = str.length, first, second;
+       pos = toInteger(pos);
+
+       // Account for out-of-bounds indices:
+       if (pos < 0 || pos >= l) return undefined;
+
+       // Get the first code unit
+       first = str.charCodeAt(pos);
+       if ((first >= 0xD800) && (first <= 0xDBFF) && (l > pos + 1)) {
+               second = str.charCodeAt(pos + 1);
+               if (second >= 0xDC00 && second <= 0xDFFF) {
+                       // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+                       return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
+               }
+       }
+       return first;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js
new file mode 100644 (file)
index 0000000..6b7a3c0
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'contains',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js
new file mode 100644 (file)
index 0000000..abb3e37
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.contains
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js
new file mode 100644 (file)
index 0000000..6f7d4b7
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'razdwatrzy';
+
+module.exports = function () {
+       if (typeof str.contains !== 'function') return false;
+       return ((str.contains('dwa') === true) && (str.contains('foo') === false));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js
new file mode 100644 (file)
index 0000000..89e39e7
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var indexOf = String.prototype.indexOf;
+
+module.exports = function (searchString/*, position*/) {
+       return indexOf.call(this, searchString, arguments[1]) > -1;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js
new file mode 100644 (file)
index 0000000..0b09025
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'endsWith',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js
new file mode 100644 (file)
index 0000000..d2d9484
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.endsWith
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js
new file mode 100644 (file)
index 0000000..f3bb008
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'razdwatrzy';
+
+module.exports = function () {
+       if (typeof str.endsWith !== 'function') return false;
+       return ((str.endsWith('trzy') === true) && (str.endsWith('raz') === false));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js
new file mode 100644 (file)
index 0000000..26cbdb1
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var toInteger = require('../../../number/to-integer')
+  , value     = require('../../../object/valid-value')
+
+  , min = Math.min, max = Math.max;
+
+module.exports = function (searchString/*, endPosition*/) {
+       var self, start, endPos;
+       self = String(value(this));
+       searchString = String(searchString);
+       endPos = arguments[1];
+       start = ((endPos == null) ? self.length :
+                       min(max(toInteger(endPos), 0), self.length)) - searchString.length;
+       return (start < 0) ? false : (self.indexOf(searchString, start) === start);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js
new file mode 100644 (file)
index 0000000..8928b02
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var replace = String.prototype.replace
+
+  , re = /-([a-z0-9])/g
+  , toUpperCase = function (m, a) { return a.toUpperCase(); };
+
+module.exports = function () { return replace.call(this, re, toUpperCase); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js
new file mode 100644 (file)
index 0000000..223bd82
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var repeat = require('./repeat')
+
+  , replace = String.prototype.replace
+  , re = /(\r\n|[\n\r\u2028\u2029])([\u0000-\u0009\u000b-\uffff]+)/g;
+
+module.exports = function (indent/*, count*/) {
+       var count = arguments[1];
+       indent = repeat.call(String(indent), (count == null) ? 1 : count);
+       return indent + replace.call(this, re, '$1' + indent + '$2');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js
new file mode 100644 (file)
index 0000000..d45d747
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+module.exports = {
+       '@@iterator':           require('./@@iterator'),
+       at:                     require('./at'),
+       camelToHyphen:          require('./camel-to-hyphen'),
+       capitalize:             require('./capitalize'),
+       caseInsensitiveCompare: require('./case-insensitive-compare'),
+       codePointAt:            require('./code-point-at'),
+       contains:               require('./contains'),
+       hyphenToCamel:          require('./hyphen-to-camel'),
+       endsWith:               require('./ends-with'),
+       indent:                 require('./indent'),
+       last:                   require('./last'),
+       normalize:              require('./normalize'),
+       pad:                    require('./pad'),
+       plainReplace:           require('./plain-replace'),
+       plainReplaceAll:        require('./plain-replace-all'),
+       repeat:                 require('./repeat'),
+       startsWith:             require('./starts-with')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js
new file mode 100644 (file)
index 0000000..d5cf46e
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function () {
+       var self = String(value(this)), l = self.length;
+       return l ? self[l - 1] : null;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js
new file mode 100644 (file)
index 0000000..e4e00a3
--- /dev/null
@@ -0,0 +1,69 @@
+'use strict';
+
+module.exports = { 0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},
+       256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},
+       512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256]},
+       768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256]},
+       1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},
+       1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},
+       1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},
+       1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},
+       2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230]},
+       2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},
+       2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9]},
+       2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},
+       3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},
+       3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},
+       3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},
+       3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},
+       4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},
+       4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70080:[,9]},
+       4864:{4957:[,230],4958:[,230],4959:[,230]},
+       5632:{71350:[,9],71351:[,7]},
+       5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
+       6144:{6313:[,228]},
+       6400:{6457:[,222],6458:[,230],6459:[,220]},
+       6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220]},
+       6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},
+       7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230]},
+       7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},
+       7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},
+       7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},
+       8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},
+       8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},
+       8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},
+       8960:{9001:[[12296]],9002:[[12297]]},
+       9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},
+       10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},
+       11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
+       11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},
+       11776:{11935:[[27597],256],12019:[[40863],256]},
+       12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},
+       12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},
+       12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},
+       12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},
+       13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},
+       42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42655:[,230],42736:[,230],42737:[,230]},
+       42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
+       43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},
+       43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
+       43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
+       43776:{44013:[,9]},
+       53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},
+       53760:{119362:[,230],119363:[,230],119364:[,230]},
+       54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},
+       54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},
+       54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},
+       55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},
+       60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},
+       61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},
+       61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},
+       63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},
+       63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},
+       64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},
+       64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},
+       64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},
+       64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},
+       65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},
+       65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js
new file mode 100644 (file)
index 0000000..cfc710e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'normalize',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js
new file mode 100644 (file)
index 0000000..619b096
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.normalize
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js
new file mode 100644 (file)
index 0000000..67c8d8d
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'æøåäüö';
+
+module.exports = function () {
+       if (typeof str.normalize !== 'function') return false;
+       return str.normalize('NFKD') === 'æøåäüö';
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js
new file mode 100644 (file)
index 0000000..a379989
--- /dev/null
@@ -0,0 +1,289 @@
+// Taken from: https://github.com/walling/unorm/blob/master/lib/unorm.js
+
+/*
+       * UnicodeNormalizer 1.0.0
+       * Copyright (c) 2008 Matsuza
+       * Dual licensed under the MIT (MIT-LICENSE.txt) and
+       * GPL (GPL-LICENSE.txt) licenses.
+       * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
+       * $Rev: 13309 $
+*/
+
+'use strict';
+
+var primitiveSet = require('../../../object/primitive-set')
+  , validValue   = require('../../../object/valid-value')
+  , data         = require('./_data')
+
+  , floor = Math.floor
+  , forms = primitiveSet('NFC', 'NFD', 'NFKC', 'NFKD')
+
+  , DEFAULT_FEATURE = [null, 0, {}], CACHE_THRESHOLD = 10, SBase = 0xAC00
+  , LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21
+  , TCount = 28, NCount = VCount * TCount, SCount = LCount * NCount
+  , UChar, cache = {}, cacheCounter = [], i, fromCache, fromData, fromCpOnly
+  , fromRuleBasedJamo, fromCpFilter, strategies, UCharIterator
+  , RecursDecompIterator, DecompIterator, CompIterator, createIterator
+  , normalize;
+
+UChar = function (cp, feature) {
+       this.codepoint = cp;
+       this.feature = feature;
+};
+
+// Strategies
+for (i = 0; i <= 0xFF; ++i) cacheCounter[i] = 0;
+
+fromCache = function (next, cp, needFeature) {
+       var ret = cache[cp];
+       if (!ret) {
+               ret = next(cp, needFeature);
+               if (!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD) {
+                       cache[cp] = ret;
+               }
+       }
+       return ret;
+};
+
+fromData = function (next, cp, needFeature) {
+       var hash = cp & 0xFF00, dunit = UChar.udata[hash] || {}, f = dunit[cp];
+       return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
+};
+fromCpOnly = function (next, cp, needFeature) {
+       return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
+};
+
+fromRuleBasedJamo = function (next, cp, needFeature) {
+       var c, base, i, arr, SIndex, TIndex, feature, j;
+       if (cp < LBase || (LBase + LCount <= cp && cp < SBase) ||
+                       (SBase + SCount < cp)) {
+               return next(cp, needFeature);
+       }
+       if (LBase <= cp && cp < LBase + LCount) {
+               c = {};
+               base = (cp - LBase) * VCount;
+               for (i = 0; i < VCount; ++i) {
+                       c[VBase + i] = SBase + TCount * (i + base);
+               }
+               arr = new Array(3);
+               arr[2] = c;
+               return new UChar(cp, arr);
+       }
+
+       SIndex = cp - SBase;
+       TIndex = SIndex % TCount;
+       feature = [];
+       if (TIndex !== 0) {
+               feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
+       } else {
+               feature[0] = [LBase + floor(SIndex / NCount), VBase +
+                       floor((SIndex % NCount) / TCount)];
+               feature[2] = {};
+               for (j = 1; j < TCount; ++j) {
+                       feature[2][TBase + j] = cp + j;
+               }
+       }
+       return new UChar(cp, feature);
+};
+
+fromCpFilter = function (next, cp, needFeature) {
+       return (cp < 60) || ((13311 < cp) && (cp < 42607))
+               ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
+};
+
+strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
+
+UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
+       return function (cp, needFeature) { return strategy(next, cp, needFeature); };
+}, null);
+
+UChar.isHighSurrogate = function (cp) { return cp >= 0xD800 && cp <= 0xDBFF; };
+UChar.isLowSurrogate = function (cp) { return cp >= 0xDC00 && cp <= 0xDFFF; };
+
+UChar.prototype.prepFeature = function () {
+       if (!this.feature) {
+               this.feature = UChar.fromCharCode(this.codepoint, true).feature;
+       }
+};
+
+UChar.prototype.toString = function () {
+       var x;
+       if (this.codepoint < 0x10000) return String.fromCharCode(this.codepoint);
+       x = this.codepoint - 0x10000;
+       return String.fromCharCode(floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
+};
+
+UChar.prototype.getDecomp = function () {
+       this.prepFeature();
+       return this.feature[0] || null;
+};
+
+UChar.prototype.isCompatibility = function () {
+       this.prepFeature();
+       return !!this.feature[1] && (this.feature[1] & (1 << 8));
+};
+UChar.prototype.isExclude = function () {
+       this.prepFeature();
+       return !!this.feature[1] && (this.feature[1] & (1 << 9));
+};
+UChar.prototype.getCanonicalClass = function () {
+       this.prepFeature();
+       return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
+};
+UChar.prototype.getComposite = function (following) {
+       var cp;
+       this.prepFeature();
+       if (!this.feature[2]) return null;
+       cp = this.feature[2][following.codepoint];
+       return cp ? UChar.fromCharCode(cp) : null;
+};
+
+UCharIterator = function (str) {
+       this.str = str;
+       this.cursor = 0;
+};
+UCharIterator.prototype.next = function () {
+       if (!!this.str && this.cursor < this.str.length) {
+               var cp = this.str.charCodeAt(this.cursor++), d;
+               if (UChar.isHighSurrogate(cp) && this.cursor < this.str.length &&
+                               UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))) {
+                       cp = (cp - 0xD800) * 0x400 + (d - 0xDC00) + 0x10000;
+                       ++this.cursor;
+               }
+               return UChar.fromCharCode(cp);
+       }
+       this.str = null;
+       return null;
+};
+
+RecursDecompIterator = function (it, cano) {
+       this.it = it;
+       this.canonical = cano;
+       this.resBuf = [];
+};
+
+RecursDecompIterator.prototype.next = function () {
+       var recursiveDecomp, uchar;
+       recursiveDecomp = function (cano, uchar) {
+               var decomp = uchar.getDecomp(), ret, i, a, j;
+               if (!!decomp && !(cano && uchar.isCompatibility())) {
+                       ret = [];
+                       for (i = 0; i < decomp.length; ++i) {
+                               a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
+                               //ret.concat(a); //<-why does not this work?
+                               //following block is a workaround.
+                               for (j = 0; j < a.length; ++j) ret.push(a[j]);
+                       }
+                       return ret;
+               }
+               return [uchar];
+       };
+       if (this.resBuf.length === 0) {
+               uchar = this.it.next();
+               if (!uchar) return null;
+               this.resBuf = recursiveDecomp(this.canonical, uchar);
+       }
+       return this.resBuf.shift();
+};
+
+DecompIterator = function (it) {
+       this.it = it;
+       this.resBuf = [];
+};
+
+DecompIterator.prototype.next = function () {
+       var cc, uchar, inspt, uchar2, cc2;
+       if (this.resBuf.length === 0) {
+               do {
+                       uchar = this.it.next();
+                       if (!uchar) break;
+                       cc = uchar.getCanonicalClass();
+                       inspt = this.resBuf.length;
+                       if (cc !== 0) {
+                               for (inspt; inspt > 0; --inspt) {
+                                       uchar2 = this.resBuf[inspt - 1];
+                                       cc2 = uchar2.getCanonicalClass();
+                                       if (cc2 <= cc) break;
+                               }
+                       }
+                       this.resBuf.splice(inspt, 0, uchar);
+               } while (cc !== 0);
+       }
+       return this.resBuf.shift();
+};
+
+CompIterator = function (it) {
+       this.it = it;
+       this.procBuf = [];
+       this.resBuf = [];
+       this.lastClass = null;
+};
+
+CompIterator.prototype.next = function () {
+       var uchar, starter, composite, cc;
+       while (this.resBuf.length === 0) {
+               uchar = this.it.next();
+               if (!uchar) {
+                       this.resBuf = this.procBuf;
+                       this.procBuf = [];
+                       break;
+               }
+               if (this.procBuf.length === 0) {
+                       this.lastClass = uchar.getCanonicalClass();
+                       this.procBuf.push(uchar);
+               } else {
+                       starter = this.procBuf[0];
+                       composite = starter.getComposite(uchar);
+                       cc = uchar.getCanonicalClass();
+                       if (!!composite && (this.lastClass < cc || this.lastClass === 0)) {
+                               this.procBuf[0] = composite;
+                       } else {
+                               if (cc === 0) {
+                                       this.resBuf = this.procBuf;
+                                       this.procBuf = [];
+                               }
+                               this.lastClass = cc;
+                               this.procBuf.push(uchar);
+                       }
+               }
+       }
+       return this.resBuf.shift();
+};
+
+createIterator = function (mode, str) {
+       switch (mode) {
+       case "NFD":
+               return new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), true)
+               );
+       case "NFKD":
+               return new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), false)
+               );
+       case "NFC":
+               return new CompIterator(new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), true)
+               ));
+       case "NFKC":
+               return new CompIterator(new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), false)
+               ));
+       }
+       throw mode + " is invalid";
+};
+normalize = function (mode, str) {
+       var it = createIterator(mode, str), ret = "", uchar;
+       while (!!(uchar = it.next())) ret += uchar.toString();
+       return ret;
+};
+
+/* Unicode data */
+UChar.udata =  data;
+
+module.exports = function (/*form*/) {
+       var str = String(validValue(this)), form = arguments[0];
+       if (form === undefined) form = 'NFC';
+       else form = String(form);
+       if (!forms[form]) throw new RangeError('Invalid normalization form: ' + form);
+       return normalize(form, str);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js
new file mode 100644 (file)
index 0000000..f227f23
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var toInteger = require('../../number/to-integer')
+  , value     = require('../../object/valid-value')
+  , repeat    = require('./repeat')
+
+  , abs = Math.abs, max = Math.max;
+
+module.exports = function (fill/*, length*/) {
+       var self = String(value(this))
+         , sLength = self.length
+         , length = arguments[1];
+
+       length = isNaN(length) ? 1 : toInteger(length);
+       fill = repeat.call(String(fill), abs(length));
+       if (length >= 0) return fill.slice(0, max(0, length - sLength)) + self;
+       return self + (((sLength + length) >= 0) ? '' : fill.slice(length + sLength));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js
new file mode 100644 (file)
index 0000000..678b1cb
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function (search, replace) {
+       var index, pos = 0, str = String(value(this)), sl, rl;
+       search = String(search);
+       replace = String(replace);
+       sl = search.length;
+       rl = replace.length;
+       while ((index = str.indexOf(search, pos)) !== -1) {
+               str = str.slice(0, index) + replace + str.slice(index + sl);
+               pos = index + rl;
+       }
+       return str;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js
new file mode 100644 (file)
index 0000000..24ce16d
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var indexOf = String.prototype.indexOf, slice = String.prototype.slice;
+
+module.exports = function (search, replace) {
+       var index = indexOf.call(this, search);
+       if (index === -1) return String(this);
+       return slice.call(this, 0, index) + replace +
+               slice.call(this, index + String(search).length);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js
new file mode 100644 (file)
index 0000000..4c39b9f
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'repeat',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js
new file mode 100644 (file)
index 0000000..15a800e
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.repeat
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js
new file mode 100644 (file)
index 0000000..f7b8750
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'foo';
+
+module.exports = function () {
+       if (typeof str.repeat !== 'function') return false;
+       return (str.repeat(2) === 'foofoo');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js
new file mode 100644 (file)
index 0000000..0a3928b
--- /dev/null
@@ -0,0 +1,22 @@
+// Thanks: http://www.2ality.com/2014/01/efficient-string-repeat.html
+
+'use strict';
+
+var value     = require('../../../object/valid-value')
+  , toInteger = require('../../../number/to-integer');
+
+module.exports = function (count) {
+       var str = String(value(this)), result;
+       count = toInteger(count);
+       if (count < 0) throw new RangeError("Count must be >= 0");
+       if (!isFinite(count)) throw new RangeError("Count must be < ∞");
+       result = '';
+       if (!count) return result;
+       while (true) {
+               if (count & 1) result += str;
+               count >>>= 1;
+               if (count <= 0) break;
+               str += str;
+       }
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js
new file mode 100644 (file)
index 0000000..d4f1eaf
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'startsWith',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js
new file mode 100644 (file)
index 0000000..ec66a7c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.startsWith
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js
new file mode 100644 (file)
index 0000000..a0556f1
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var str = 'razdwatrzy';
+
+module.exports = function () {
+       if (typeof str.startsWith !== 'function') return false;
+       return ((str.startsWith('trzy') === false) &&
+               (str.startsWith('raz') === true));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js
new file mode 100644 (file)
index 0000000..aa5aaf4
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var value     = require('../../../object/valid-value')
+  , toInteger = require('../../../number/to-integer')
+
+  , max = Math.max, min = Math.min;
+
+module.exports = function (searchString/*, position*/) {
+       var start, self = String(value(this));
+       start = min(max(toInteger(arguments[1]), 0), self.length);
+       return (self.indexOf(searchString, start) === start);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js
new file mode 100644 (file)
index 0000000..f1de1e3
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var isCallable = require('../object/is-callable')
+  , value      = require('../object/valid-value')
+
+  , call = Function.prototype.call;
+
+module.exports = function (fmap) {
+       fmap = Object(value(fmap));
+       return function (pattern) {
+               var context = value(this);
+               pattern = String(pattern);
+               return pattern.replace(/%([a-zA-Z]+)|\\([\u0000-\uffff])/g,
+                       function (match, token, escape) {
+                               var t, r;
+                               if (escape) return escape;
+                               t = token;
+                               while (t && !(r = fmap[t])) t = t.slice(0, -1);
+                               if (!r) return match;
+                               if (isCallable(r)) r = call.call(r, context);
+                               return r + token.slice(t.length);
+                       });
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js
new file mode 100644 (file)
index 0000000..b062331
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String, 'fromCodePoint', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js
new file mode 100644 (file)
index 0000000..3f3110b
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.fromCodePoint
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js
new file mode 100644 (file)
index 0000000..840a20e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var fromCodePoint = String.fromCodePoint;
+       if (typeof fromCodePoint !== 'function') return false;
+       return fromCodePoint(0x1D306, 0x61, 0x1D307) === '\ud834\udf06a\ud834\udf07';
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js
new file mode 100644 (file)
index 0000000..41fd737
--- /dev/null
@@ -0,0 +1,30 @@
+// Based on:
+// http://norbertlindenberg.com/2012/05/ecmascript-supplementary-characters/
+// and:
+// https://github.com/mathiasbynens/String.fromCodePoint/blob/master
+// /fromcodepoint.js
+
+'use strict';
+
+var floor = Math.floor, fromCharCode = String.fromCharCode;
+
+module.exports = function (codePoint/*, …codePoints*/) {
+       var chars = [], l = arguments.length, i, c, result = '';
+       for (i = 0; i < l; ++i) {
+               c = Number(arguments[i]);
+               if (!isFinite(c) || c < 0 || c > 0x10FFFF || floor(c) !== c) {
+                       throw new RangeError("Invalid code point " + c);
+               }
+
+               if (c < 0x10000) {
+                       chars.push(c);
+               } else {
+                       c -= 0x10000;
+                       chars.push((c >> 10) + 0xD800, (c % 0x400) + 0xDC00);
+               }
+               if (i + 1 !== l && chars.length <= 0x4000) continue;
+               result += fromCharCode.apply(null, chars);
+               chars.length = 0;
+       }
+       return result;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js
new file mode 100644 (file)
index 0000000..dbbcdf6
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = {
+       '#':           require('./#'),
+       formatMethod:  require('./format-method'),
+       fromCodePoint: require('./from-code-point'),
+       isString:      require('./is-string'),
+       randomUniq:    require('./random-uniq'),
+       raw:           require('./raw')
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js
new file mode 100644 (file)
index 0000000..719aeec
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call('');
+
+module.exports = function (x) {
+       return (typeof x === 'string') || (x && (typeof x === 'object') &&
+               ((x instanceof String) || (toString.call(x) === id))) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js
new file mode 100644 (file)
index 0000000..54ae6f8
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var generated = Object.create(null)
+
+  , random = Math.random;
+
+module.exports = function () {
+       var str;
+       do { str = random().toString(36).slice(2); } while (generated[str]);
+       return str;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js
new file mode 100644 (file)
index 0000000..c417e65
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String, 'raw', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js
new file mode 100644 (file)
index 0000000..504a5de
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.raw
+       : require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js
new file mode 100644 (file)
index 0000000..d7204c0
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function () {
+       var raw = String.raw, test;
+       if (typeof raw !== 'function') return false;
+       test = ['foo\nbar', 'marko\n'];
+       test.raw = ['foo\\nbar', 'marko\\n'];
+       return raw(test, 'INSE\nRT') === 'foo\\nbarINSE\nRTmarko\\n';
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js
new file mode 100644 (file)
index 0000000..7096efb
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var toPosInt   = require('../../number/to-pos-integer')
+  , validValue = require('../../object/valid-value')
+
+  , reduce = Array.prototype.reduce;
+
+module.exports = function (callSite/*,  …substitutions*/) {
+       var args, rawValue = Object(validValue(Object(validValue(callSite)).raw));
+       if (!toPosInt(rawValue.length)) return '';
+       args = arguments;
+       return reduce.call(rawValue, function (a, b, i) {
+               return a + String(args[i]) + b;
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/__tad.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/__tad.js
new file mode 100644 (file)
index 0000000..8845778
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+exports.context = null;
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..f060539
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/@@iterator/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..e590d8f
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: '1', done: false });
+       a.deep(iterator.next(), { value: '2', done: false });
+       a.deep(iterator.next(), { value: '3', done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/_compare-by-length.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/_compare-by-length.js
new file mode 100644 (file)
index 0000000..e40c305
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = [4, 5, 6], y = { length: 8 }, w = {}, z = { length: 1 };
+
+       a.deep([x, y, w, z].sort(t), [w, z, x, y]);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/binary-search.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/binary-search.js
new file mode 100644 (file)
index 0000000..cf33173
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var compare  = function (value) { return this - value; };
+
+module.exports = function (t, a) {
+       var arr;
+       arr = [2, 5, 5, 8, 34, 67, 98, 345, 678];
+
+       // highest, equal match
+       a(t.call(arr, compare.bind(1)), 0, "All higher");
+       a(t.call(arr, compare.bind(679)), arr.length - 1, "All lower");
+       a(t.call(arr, compare.bind(4)), 0, "Mid");
+       a(t.call(arr, compare.bind(5)), 2, "Match");
+       a(t.call(arr, compare.bind(6)), 2, "Above");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/clear.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/clear.js
new file mode 100644 (file)
index 0000000..a5b1c97
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = [1, 2, {}, 4];
+       a(t.call(x), x, "Returns same array");
+       a.deep(x, [], "Empties array");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/compact.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/compact.js
new file mode 100644 (file)
index 0000000..6390eb2
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this).length, 3);
+       },
+       "": function (t, a) {
+               var o, x, y, z;
+               o = {};
+               x = [0, 1, "", null, o, false, undefined, true];
+               y = x.slice(0);
+
+               a.not(z = t.call(x), x, "Returns different object");
+               a.deep(x, y, "Origin not changed");
+               a.deep(z, [0, 1, "", o, false, true], "Result");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/implement.js
new file mode 100644 (file)
index 0000000..3bdbe86
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/concat/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/shim.js
new file mode 100644 (file)
index 0000000..c30eb7e
--- /dev/null
@@ -0,0 +1,26 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr = [1, 3, 45], x = {}, subArr, subArr2, result;
+
+       a.deep(t.call(arr, '2d', x, ['ere', 'fe', x], false, null),
+               [1, 3, 45, '2d', x, 'ere', 'fe', x, false, null], "Plain array");
+
+       subArr = new SubArray('lol', 'miszko');
+       subArr2 = new SubArray('elo', 'fol');
+
+       result = t.call(subArr, 'df', arr, 'fef', subArr2, null);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, ['lol', 'miszko', 'df', 1, 3, 45, 'fef', 'elo', 'fol', null],
+               "Spreable by default");
+
+       SubArray.prototype['@@isConcatSpreadable'] = false;
+
+       result = t.call(subArr, 'df', arr, 'fef', subArr2, null);
+       a.deep(result, ['lol', 'miszko', 'df', 1, 3, 45, 'fef', subArr2, null],
+               "Non spreadable");
+
+       delete SubArray.prototype['@@isConcatSpreadable'];
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/contains.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/contains.js
new file mode 100644 (file)
index 0000000..21404a1
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this, this[1]), true, "Contains");
+               a(t.call(this, {}), false, "Does Not contain");
+       },
+       "": function (t, a) {
+               var o, x = {}, y = {};
+
+               o = [1, 'raz', x];
+
+               a(t.call(o, 1), true, "First");
+               a(t.call(o, '1'), false, "Type coercion");
+               a(t.call(o, 'raz'), true, "Primitive");
+               a(t.call(o, 'foo'), false, "Primitive not found");
+               a(t.call(o, x), true, "Object found");
+               a(t.call(o, y), false, "Object not found");
+               a(t.call(o, 1, 1), false, "Position");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/implement.js
new file mode 100644 (file)
index 0000000..3607047
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/copy-within/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/shim.js
new file mode 100644 (file)
index 0000000..93c85ea
--- /dev/null
@@ -0,0 +1,29 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var args, x;
+
+       a.h1("2 args");
+       x = [1, 2, 3, 4, 5];
+       t.call(x, 0, 3);
+       a.deep(x, [4, 5, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 3), [1, 4, 5, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 2), [1, 3, 4, 5, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 2, 2), [1, 2, 3, 4, 5]);
+
+       a.h1("3 args");
+       a.deep(t.call([1, 2, 3, 4, 5], 0, 3, 4), [4, 2, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 3, 4), [1, 4, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 2, 4), [1, 3, 4, 4, 5]);
+
+       a.h1("Negative args");
+       a.deep(t.call([1, 2, 3, 4, 5], 0, -2), [4, 5, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 0, -2, -1), [4, 2, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], -4, -3, -2), [1, 3, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], -4, -3, -1), [1, 3, 4, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], -4, -3), [1, 3, 4, 5, 5]);
+
+       a.h1("Array-likes");
+       args = { 0: 1, 1: 2, 2: 3, length: 3 };
+       a.deep(t.call(args, -2, 0), { '0': 1, '1': 1, '2': 2, length: 3 });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/diff.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/diff.js
new file mode 100644 (file)
index 0000000..bcfa3a0
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a.deep(t.call(this, this), []);
+       },
+       "": function (t, a) {
+               var x = {}, y = {};
+
+               a.deep(t.call([1, 'raz', x, 2, 'trzy', y], [x, 2, 'trzy']), [1, 'raz', y],
+                       "Scope longer");
+               a.deep(t.call([1, 'raz', x], [x, 2, 'trzy', 1, y]), ['raz'],
+                       "Arg longer");
+               a.deep(t.call([1, 'raz', x], []), [1, 'raz', x], "Empty arg");
+               a.deep(t.call([], [1, y, 'sdfs']), [], "Empty scope");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-index-of.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-index-of.js
new file mode 100644 (file)
index 0000000..4cf6c63
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([3, 'raz', {}, x, {}], x), 3, "Regular");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN), 2, "NaN");
+       a(t.call([3, 'raz', 0, {}, -0], -0), 2, "-0");
+       a(t.call([3, 'raz', -0, {}, 0], +0), 2, "+0");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, 3), 4, "fromIndex");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, -1), 4, "fromIndex negative #1");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, -2), 4, "fromIndex negative #2");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, -3), 2, "fromIndex negative #3");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-last-index-of.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-last-index-of.js
new file mode 100644 (file)
index 0000000..ed4f700
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([3, 'raz', {}, x, {}, x], x), 5, "Regular");
+       a(t.call([3, 'raz', NaN, {}, x], NaN), 2, "NaN");
+       a(t.call([3, 'raz', 0, {}, -0], -0), 4, "-0");
+       a(t.call([3, 'raz', -0, {}, 0], +0), 4, "+0");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, 3), 2, "fromIndex");
+       a(t.call([3, 'raz', NaN, 2, NaN], NaN, -1), 4, "Negative fromIndex #1");
+       a(t.call([3, 'raz', NaN, 2, NaN], NaN, -2), 2, "Negative fromIndex #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/implement.js
new file mode 100644 (file)
index 0000000..733209a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/entries/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/shim.js
new file mode 100644 (file)
index 0000000..bf40d31
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: [0, '1'], done: false });
+       a.deep(iterator.next(), { value: [1, '2'], done: false });
+       a.deep(iterator.next(), { value: [2, '3'], done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/exclusion.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/exclusion.js
new file mode 100644 (file)
index 0000000..07b32d8
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var x = {};
+               a.deep(t.call(this, this, [this[0], this[2], x]), [x]);
+       },
+       "": function (t, a) {
+               var x = {}, y = {};
+
+               a.deep(t.call([x, y]), [x, y], "No arguments");
+               a.deep(t.call([x, 1], [], []), [x, 1], "Empty arguments");
+               a.deep(t.call([1, 'raz', x], [2, 'raz', y], [2, 'raz', x]), [1, y]);
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/implement.js
new file mode 100644 (file)
index 0000000..2a01d28
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/fill/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/shim.js
new file mode 100644 (file)
index 0000000..d67300f
--- /dev/null
@@ -0,0 +1,18 @@
+// Taken from https://github.com/paulmillr/es6-shim/blob/master/test/array.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+
+       x = [1, 2, 3, 4, 5, 6];
+       a(t.call(x, -1), x, "Returns self object");
+       a.deep(x, [-1, -1, -1, -1, -1, -1], "Value");
+
+       a.deep(t.call([1, 2, 3, 4, 5, 6], -1, 3), [1, 2, 3, -1, -1, -1],
+               "Positive start");
+       a.deep(t.call([1, 2, 3, 4, 5, 6], -1, -3), [1, 2, 3, -1, -1, -1],
+               "Negative start");
+       a.deep(t.call([1, 2, 3, 4, 5, 6], -1, 9), [1, 2, 3, 4, 5, 6],
+               "Large start");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/implement.js
new file mode 100644 (file)
index 0000000..6d6b87c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/filter/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/shim.js
new file mode 100644 (file)
index 0000000..e8b5c39
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, Boolean), ['foo', '2d', x], "Plain array");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, Boolean);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, ['foo', '2d', x], "Result of subclass");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/implement.js
new file mode 100644 (file)
index 0000000..8d85e61
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/find-index/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/shim.js
new file mode 100644 (file)
index 0000000..b5fee46
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var count = 0, o = {}, self = Object(this);
+       a(t.call(self, function (value, i, scope) {
+               a(value, this[i], "Value");
+               a(i, count++, "Index");
+               a(scope, this, "Scope");
+       }, self), -1, "Falsy result");
+       a(count, 3);
+
+       count = -1;
+       a(t.call(this, function () {
+               return ++count ? o : null;
+       }, this), 1, "Truthy result");
+       a(count, 1);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/implement.js
new file mode 100644 (file)
index 0000000..29fac41
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/find/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/shim.js
new file mode 100644 (file)
index 0000000..ad2e645
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var count = 0, o = {}, self = Object(this);
+       a(t.call(self, function (value, i, scope) {
+               a(value, this[i], "Value");
+               a(i, count++, "Index");
+               a(scope, this, "Scope");
+       }, self), undefined, "Falsy result");
+       a(count, 3);
+
+       count = -1;
+       a(t.call(this, function () {
+               return ++count ? o : null;
+       }, this), this[1], "Truthy result");
+       a(count, 1);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first-index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first-index.js
new file mode 100644 (file)
index 0000000..4aebad6
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a(t.call([]), null, "Empty");
+       a(t.call([null]), 0, "One value");
+       a(t.call([1, 2, 3]), 0, "Many values");
+       a(t.call(new Array(1000)), null, "Sparse empty");
+       x = [];
+       x[883] = undefined;
+       x[890] = null;
+       a(t.call(x), 883, "Manual sparse, distant value");
+       x = new Array(1000);
+       x[657] = undefined;
+       x[700] = null;
+       a(t.call(x), 657, "Sparse, distant value");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first.js
new file mode 100644 (file)
index 0000000..87fde03
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       a(t.call(this), this[0]);
+};
+exports[''] = function (t, a) {
+       var x;
+       a(t.call([]), undefined, "Empty");
+       a(t.call(new Array(234), undefined, "Sparse empty"));
+       x = new Array(2342);
+       x[434] = {};
+       a(t.call(x), x[434], "Sparse");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/flatten.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/flatten.js
new file mode 100644 (file)
index 0000000..65f1214
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var o = [1, 2, [3, 4, [5, 6], 7, 8], 9, 10];
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this).length, 3);
+       },
+       "Nested Arrays": function (t, a) {
+               a(t.call(o).length, 10);
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/for-each-right.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/for-each-right.js
new file mode 100644 (file)
index 0000000..2d24569
--- /dev/null
@@ -0,0 +1,36 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var count = 0, first, last, x, icount = this.length;
+               t.call(this, function (item, index, col) {
+                       ++count;
+                       if (!first) {
+                               first = item;
+                       }
+                       last = item;
+                       x = col;
+                       a(index, --icount, "Index");
+               });
+               a(count, this.length, "Iterated");
+               a(first, this[this.length - 1], "First is last");
+               a(last, this[0], "Last is first");
+               a.deep(x, Object(this), "Collection as third argument"); //jslint: skip
+       },
+       "": function (t, a) {
+               var x = {}, y, count;
+               t.call([1], function () { y = this; }, x);
+               a(y, x, "Scope");
+               y = 0;
+               t.call([3, 4, 4], function (a, i) { y += i; });
+               a(y, 3, "Indexes");
+
+               x = [1, 3];
+               x[5] = 'x';
+               y = 0;
+               count = 0;
+               t.call(x, function (a, i) { ++count; y += i; });
+               a(y, 6, "Misssing Indexes");
+               a(count, 3, "Misssing Indexes, count");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/group.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/group.js
new file mode 100644 (file)
index 0000000..32dc8c2
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var count = 0, self;
+
+               self = Object(this);
+               a.deep(t.call(self, function (v, i, scope) {
+                       a(v, this[i], "Value");
+                       a(i, count++, "Index");
+                       a(scope, this, "Scope");
+                       return i;
+               }, self), { 0: [this[0]], 1: [this[1]], 2: [this[2]] });
+       },
+       "": function (t, a) {
+               var r;
+               r = t.call([2, 3, 3, 4, 5, 6, 7, 7, 23, 45, 34, 56],
+                       function (v) {
+                               return v % 2 ? 'odd' : 'even';
+                       });
+               a.deep(r.odd, [3, 3, 5, 7, 7, 23, 45]);
+               a.deep(r.even, [2, 4, 6, 34, 56]);
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/indexes-of.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/indexes-of.js
new file mode 100644 (file)
index 0000000..3364170
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a.deep(t.call(this, this[1]), [1]);
+       },
+       "": function (t, a) {
+               var x = {};
+               a.deep(t.call([1, 3, 5, 3, 5], 6), [], "No result");
+               a.deep(t.call([1, 3, 5, 1, 3, 5, 1], 1), [0, 3, 6], "Some results");
+               a.deep(t.call([], x), [], "Empty array");
+               a.deep(t.call([x, 3, {}, x, 3, 5, x], x), [0, 3, 6], "Search for object");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/intersection.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/intersection.js
new file mode 100644 (file)
index 0000000..b72b2fb
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var toArray = require('../../../array/to-array');
+
+module.exports = {
+       __generic: function (t, a) {
+               a.deep(t.call(this, this, this), toArray(this));
+       },
+       "": function (t, a) {
+               var x = {}, y = {}, p, r;
+               a.deep(t.call([], [2, 3, 4]), [], "Empty #1");
+               a.deep(t.call([2, 3, 4], []), [], "Empty #2");
+               a.deep(t.call([2, 3, x], [y, 5, 7]), [], "Different");
+               p = t.call([3, 5, 'raz', {}, 'dwa', x], [1, 3, 'raz', 'dwa', 'trzy', x, {}],
+                       [3, 'raz', x, 65]);
+               r = [3, 'raz', x];
+               p.sort();
+               r.sort();
+               a.deep(p, r, "Same parts");
+               a.deep(t.call(r, r), r, "Same");
+               a.deep(t.call([1, 2, x, 4, 5, y, 7], [7, y, 5, 4, x, 2, 1]),
+                       [1, 2, x, 4, 5, y, 7], "Long reverse same");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-copy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-copy.js
new file mode 100644 (file)
index 0000000..e7f80e7
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([], []), true, "Empty");
+       a(t.call([], {}), true, "Empty lists");
+       a(t.call([1, x, 'raz'], [1, x, 'raz']), true, "Same");
+       a(t.call([1, x, 'raz'], { 0: 1, 1: x, 2: 'raz', length: 3 }), true,
+                       "Same lists");
+       a(t.call([1, x, 'raz'], [x, 1, 'raz']), false, "Diff order");
+       a(t.call([1, x], [1, x, 'raz']), false, "Diff length #1");
+       a(t.call([1, x, 'raz'], [1, x]), false, "Diff length #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-uniq.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-uniq.js
new file mode 100644 (file)
index 0000000..7349ba3
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([]), true, "Empty");
+       a(t.call({}), true, "Empty lists");
+       a(t.call([1, x, 'raz']), true, "Uniq");
+       a(t.call([1, x, 1, 'raz']), false, "Not Uniq: primitive");
+       a(t.call([1, x, '1', 'raz']), true, "Uniq: primitive");
+       a(t.call([1, x, 1, {}, 'raz']), false, "Not Uniq: Obj");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/implement.js
new file mode 100644 (file)
index 0000000..b0c1aa0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/keys/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/shim.js
new file mode 100644 (file)
index 0000000..a43c04c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: 0, done: false });
+       a.deep(iterator.next(), { value: 1, done: false });
+       a.deep(iterator.next(), { value: 2, done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last-index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last-index.js
new file mode 100644 (file)
index 0000000..a1cac10
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a(t.call([]), null, "Empty");
+       a(t.call([null]), 0, "One value");
+       a(t.call([1, 2, 3]), 2, "Many values");
+       a(t.call(new Array(1000)), null, "Sparse empty");
+       x = [];
+       x[883] = null;
+       x[890] = undefined;
+       a(t.call(x), 890, "Manual sparse, distant value");
+       x = new Array(1000);
+       x[657] = null;
+       x[700] = undefined;
+       a(t.call(x), 700, "Sparse, distant value");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last.js
new file mode 100644 (file)
index 0000000..8d051bc
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       a(t.call(this), this[this.length - 1]);
+};
+
+exports[''] = function (t, a) {
+       var x;
+       a(t.call([]), undefined, "Empty");
+       a(t.call(new Array(234), undefined, "Sparse empty"));
+       x = new Array(2342);
+       x[434] = {};
+       x[450] = {};
+       a(t.call(x), x[450], "Sparse");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/implement.js
new file mode 100644 (file)
index 0000000..cdcbc8d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/map/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/shim.js
new file mode 100644 (file)
index 0000000..bbfefe8
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, Boolean), [true, false, false, true, false, true, false],
+               "Plain array");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, Boolean);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, [true, false, false, true, false, true, false],
+               "Result of subclass");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/remove.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/remove.js
new file mode 100644 (file)
index 0000000..3ebdca2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var y = {}, z = {}, x = [9, z, 5, y, 'foo'];
+       t.call(x, y);
+       a.deep(x, [9, z, 5, 'foo']);
+       t.call(x, {});
+       a.deep(x, [9, z, 5, 'foo'], "Not existing");
+       t.call(x, 5);
+       a.deep(x, [9, z, 'foo'], "Primitive");
+       x = [9, z, 5, y, 'foo'];
+       t.call(x, z, 5, 'foo');
+       a.deep(x, [9, y], "More than one argument");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/separate.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/separate.js
new file mode 100644 (file)
index 0000000..42918b5
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = [], y = {}, z = {};
+       a.deep(t.call(x, y), [], "Empty");
+       a.not(t.call(x), x, "Returns copy");
+       a.deep(t.call([1], y), [1], "One");
+       a.deep(t.call([1, 'raz'], y), [1, y, 'raz'], "One");
+       a.deep(t.call([1, 'raz', x], y), [1, y, 'raz', y, x], "More");
+       x = new Array(1000);
+       x[23] = 2;
+       x[3453] = 'raz';
+       x[500] = z;
+       a.deep(t.call(x, y), [2, y, z, y, 'raz'], "Sparse");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/implement.js
new file mode 100644 (file)
index 0000000..855ae2f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/slice/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/shim.js
new file mode 100644 (file)
index 0000000..f674f34
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, 2, 4), [0, '2d'], "Plain array: result");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, 2, 4);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, [0, '2d'], "Subclass: result");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/some-right.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/some-right.js
new file mode 100644 (file)
index 0000000..900771a
--- /dev/null
@@ -0,0 +1,43 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var count = 0, first, last, x, icount = this.length;
+               t.call(this, function (item, index, col) {
+                       ++count;
+                       if (!first) {
+                               first = item;
+                       }
+                       last = item;
+                       x = col;
+                       a(index, --icount, "Index");
+               });
+               a(count, this.length, "Iterated");
+               a(first, this[this.length - 1], "First is last");
+               a(last, this[0], "Last is first");
+               a.deep(x, Object(this), "Collection as third argument"); //jslint: skip
+       },
+       "": function (t, a) {
+               var x = {}, y, count;
+               t.call([1], function () { y = this; }, x);
+               a(y, x, "Scope");
+               y = 0;
+               t.call([3, 4, 4], function (a, i) { y += i; });
+               a(y, 3, "Indexes");
+
+               x = [1, 3];
+               x[5] = 'x';
+               y = 0;
+               count = 0;
+               a(t.call(x, function (a, i) { ++count; y += i; }), false, "Return");
+               a(y, 6, "Misssing Indexes");
+               a(count, 3, "Misssing Indexes, count");
+
+               count = 0;
+               a(t.call([-2, -3, -4, 2, -5], function (item) {
+                       ++count;
+                       return item > 0;
+               }), true, "Return");
+               a(count, 2, "Break after true is returned");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/implement.js
new file mode 100644 (file)
index 0000000..0d9f461
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/splice/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/shim.js
new file mode 100644 (file)
index 0000000..2c751e6
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, 2, 2, 'bar'), [0, '2d'], "Plain array: result");
+       a.deep(arr, ["foo", undefined, "bar", false, x, null], "Plain array: change");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, 2, 2, 'bar');
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, [0, '2d'], "Subclass: result");
+       a.deep(subArr, ["foo", undefined, "bar", false, x, null], "Subclass: change");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/uniq.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/uniq.js
new file mode 100644 (file)
index 0000000..2f7e6c4
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this).length, 3);
+       },
+       "": function (t, a) {
+               var o, x = {}, y = {}, z = {}, w;
+               o = [1, 2, x, 3, 1, 'raz', '1', y, x, 'trzy', z, 'raz'];
+
+               a.not(w = t.call(o), o, "Returns different object");
+               a.deep(w, [1, 2, x, 3, 'raz', '1', y, 'trzy', z], "Result");
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/implement.js
new file mode 100644 (file)
index 0000000..9f40138
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/values/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/shim.js
new file mode 100644 (file)
index 0000000..e590d8f
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: '1', done: false });
+       a.deep(iterator.next(), { value: '2', done: false });
+       a.deep(iterator.next(), { value: '3', done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/__scopes.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/__scopes.js
new file mode 100644 (file)
index 0000000..fc240d3
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.Array = ['1', '2', '3'];
+
+exports.Arguments = (function () {
+       return arguments;
+}('1', '2', '3'));
+
+exports.String = "123";
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_is-extensible.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_is-extensible.js
new file mode 100644 (file)
index 0000000..d387126
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'boolean');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js
new file mode 100644 (file)
index 0000000..29d8699
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var isArray = Array.isArray;
+
+module.exports = function (t, a) {
+       t((t === null) || isArray(t.prototype), true);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy.js
new file mode 100644 (file)
index 0000000..29d8699
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var isArray = Array.isArray;
+
+module.exports = function (t, a) {
+       t((t === null) || isArray(t.prototype), true);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/implement.js
new file mode 100644 (file)
index 0000000..e0db846
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../array/from/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/shim.js
new file mode 100644 (file)
index 0000000..310302a
--- /dev/null
@@ -0,0 +1,60 @@
+// Some tests taken from: https://github.com/mathiasbynens/Array.from/blob/master/tests/tests.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       var o = [1, 2, 3], MyType;
+       a.not(t(o), o, "Array");
+       a.deep(t(o), o, "Array: same content");
+       a.deep(t('12r3v'), ['1', '2', 'r', '3', 'v'], "String");
+       a.deep(t((function () { return arguments; }(3, o, 'raz'))),
+               [3, o, 'raz'], "Arguments");
+       a.deep(t((function () { return arguments; }(3))), [3],
+               "Arguments with one numeric value");
+
+       a.deep(t({ 0: 'raz', 1: 'dwa', length: 2 }), ['raz', 'dwa'], "Other");
+
+       a.deep(t(o, function (val) { return (val + 2) * 10; }, 10), [30, 40, 50],
+               "Mapping");
+
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.deep(t(3), [], "Primitive");
+
+       a(t.length, 1, "Length");
+       a.deep(t({ length: 0 }), [], "No values Array-like");
+       a.deep(t({ length: -1 }), [], "Invalid length Array-like");
+       a.deep(t({ length: -Infinity }), [], "Invalid length Array-like #2");
+       a.throws(function () { t(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.deep(t(false), [], "Boolean");
+       a.deep(t(-Infinity), [], "Inifity");
+       a.deep(t(-0), [], "-0");
+       a.deep(t(+0), [], "+0");
+       a.deep(t(1), [], "1");
+       a.deep(t(+Infinity), [], "+Infinity");
+       a.deep(t({}), [], "Plain object");
+       a.deep(t({ length: 1 }), [undefined], "Sparse array-like");
+       a.deep(t({ '0': 'a', '1': 'b', length: 2 }, function (x) { return x + x; }), ['aa', 'bb'],
+               "Map");
+       a.deep(t({ '0': 'a', '1': 'b', length: 2 }, function (x) { return String(this); }, undefined),
+               ['undefined', 'undefined'], "Map context");
+       a.deep(t({ '0': 'a', '1': 'b', length: 2 }, function (x) { return String(this); }, 'x'),
+               ['x', 'x'], "Map primitive context");
+       a.throws(function () { t({}, 'foo', 'x'); }, TypeError, "Non callable for map");
+
+       a.deep(t.call(null, { length: 1, '0': 'a' }), ['a'], "Null context");
+
+       a(t({ __proto__: { '0': 'abc', length: 1 } })[0], 'abc', "Values on prototype");
+
+       a.throws(function () { t.call(function () { return Object.freeze({}); }, {}); },
+               TypeError, "Contructor producing freezed objects");
+
+       // Ensure no setters are called for the indexes
+       // Ensure no setters are called for the indexes
+       MyType = function () {};
+       Object.defineProperty(MyType.prototype, '0', {
+               set: function (x) { throw new Error('Setter called: ' + x); }
+       });
+       a.deep(t.call(MyType, { '0': 'abc', length: 1 }), { '0': 'abc', length: 1 },
+               "Defined not set");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/generate.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/generate.js
new file mode 100644 (file)
index 0000000..d72e056
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = {};
+       a.deep(t(3), [undefined, undefined, undefined], "Just length");
+       a.deep(t(0, 'x'), [], "No repeat");
+       a.deep(t(1, x, y), [x], "Arguments length larger than repeat number");
+       a.deep(t(3, x), [x, x, x], "Single argument");
+       a.deep(t(5, x, y), [x, y, x, y, x], "Many arguments");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/is-plain-array.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/is-plain-array.js
new file mode 100644 (file)
index 0000000..871a08a
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var SubArray = require('../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr = [1, 2, 3];
+       a(t(arr), true, "Array");
+       a(t(null), false, "Null");
+       a(t(), false, "Undefined");
+       a(t('234'), false, "String");
+       a(t(23), false, "Number");
+       a(t({}), false, "Plain object");
+       a(t({ length: 1, 0: 'raz' }), false, "Array-like");
+       a(t(Object.create(arr)), false, "Array extension");
+       if (!SubArray) return;
+       a(t(new SubArray(23)), false, "Subclass instance");
+       a(t(Array.prototype), false, "Array.prototype");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/implement.js
new file mode 100644 (file)
index 0000000..30d53be
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../array/of/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/shim.js
new file mode 100644 (file)
index 0000000..e697442
--- /dev/null
@@ -0,0 +1,68 @@
+// Most tests taken from https://github.com/mathiasbynens/Array.of/blob/master/tests/tests.js
+// Thanks @mathiasbynens
+
+'use strict';
+
+var defineProperty = Object.defineProperty;
+
+module.exports = function (t, a) {
+       var x = {}, testObject, MyType;
+
+       a.deep(t(), [], "No arguments");
+       a.deep(t(3), [3], "One numeric argument");
+       a.deep(t(3, 'raz', null, x, undefined), [3, 'raz', null, x, undefined],
+               "Many arguments");
+
+       a(t.length, 0, "Length");
+
+       a.deep(t('abc'), ['abc'], "String");
+       a.deep(t(undefined), [undefined], "Undefined");
+       a.deep(t(null), [null], "Null");
+       a.deep(t(false), [false], "Boolean");
+       a.deep(t(-Infinity), [-Infinity], "Infinity");
+       a.deep(t(-0), [-0], "-0");
+       a.deep(t(+0), [+0], "+0");
+       a.deep(t(1), [1], "1");
+       a.deep(t(1, 2, 3), [1, 2, 3], "Numeric args");
+       a.deep(t(+Infinity), [+Infinity], "+Infinity");
+       a.deep(t({ '0': 'a', '1': 'b', '2': 'c', length: 3 }),
+               [{ '0': 'a', '1': 'b', '2': 'c', length: 3 }], "Array like");
+       a.deep(t(undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity),
+               [undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity], "Falsy arguments");
+
+       a.h1("Null context");
+       a.deep(t.call(null, 'abc'), ['abc'], "String");
+       a.deep(t.call(null, undefined), [undefined], "Undefined");
+       a.deep(t.call(null, null), [null], "Null");
+       a.deep(t.call(null, false), [false], "Boolean");
+       a.deep(t.call(null, -Infinity), [-Infinity], "-Infinity");
+       a.deep(t.call(null, -0), [-0], "-0");
+       a.deep(t.call(null, +0), [+0], "+0");
+       a.deep(t.call(null, 1), [1], "1");
+       a.deep(t.call(null, 1, 2, 3), [1, 2, 3], "Numeric");
+       a.deep(t.call(null, +Infinity), [+Infinity], "+Infinity");
+       a.deep(t.call(null, { '0': 'a', '1': 'b', '2': 'c', length: 3 }),
+               [{ '0': 'a', '1': 'b', '2': 'c', length: 3 }], "Array-like");
+       a.deep(t.call(null, undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity),
+               [undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity], "Falsy");
+
+       a.h1("Other constructor context");
+       a.deep(t.call(Object, 1, 2, 3), { '0': 1, '1': 2, '2': 3, length: 3 }, "Many arguments");
+
+       testObject = Object(3);
+       testObject[0] = 1;
+       testObject[1] = 2;
+       testObject[2] = 3;
+       testObject.length = 3;
+       a.deep(t.call(Object, 1, 2, 3), testObject, "Test object");
+       a(t.call(Object).length, 0, "No arguments");
+       a.throws(function () { t.call(function () { return Object.freeze({}); }); }, TypeError,
+               "Frozen instance");
+
+       // Ensure no setters are called for the indexes
+       MyType = function () {};
+       defineProperty(MyType.prototype, '0', {
+               set: function (x) { throw new Error('Setter called: ' + x); }
+       });
+       a.deep(t.call(MyType, 'abc'), { '0': 'abc', length: 1 }, "Define, not set");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/to-array.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/to-array.js
new file mode 100644 (file)
index 0000000..4985b5e
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = [1, 2, 3];
+       a(t(o), o, "Array");
+       a.deep(t('12r3v'), ['1', '2', 'r', '3', 'v'], "String");
+       a.deep(t((function () { return arguments; }(3, o, 'raz'))),
+               [3, o, 'raz'], "Arguments");
+       a.deep(t((function () { return arguments; }(3))), [3],
+               "Arguments with one numeric value");
+
+       a.deep(t({ 0: 'raz', 1: 'dwa', length: 2 }), ['raz', 'dwa'], "Other");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/valid-array.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/valid-array.js
new file mode 100644 (file)
index 0000000..3732192
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.throws(function () { t(0); }, TypeError, "Number");
+       a.throws(function () { t(true); }, TypeError, "Boolean");
+       a.throws(function () { t('raz'); }, TypeError, "String");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a.throws(function () { t({}); }, TypeError, "Object");
+       a.throws(function () { t({ length: 0 }); }, TypeError, "Array-like");
+       a(t(x = []), x, "Array");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean/is-boolean.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean/is-boolean.js
new file mode 100644 (file)
index 0000000..4e6b3cb
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(false), true, "Boolean");
+       a(t(new Boolean(false)), true, "Boolean object");
+       a(t(new Date()), false, "Date");
+       a(t(new String('raz')), false, "String object");
+       a(t({}), false, "Plain object");
+       a(t(/a/), false, "Regular expression");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/copy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/copy.js
new file mode 100644 (file)
index 0000000..767c5e1
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = new Date(), o2;
+
+       o2 = t.call(o);
+       a.not(o, o2, "Different objects");
+       a.ok(o2 instanceof Date, "Instance of Date");
+       a(o.getTime(), o2.getTime(), "Same time");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/days-in-month.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/days-in-month.js
new file mode 100644 (file)
index 0000000..9ddba55
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2001, 0, 1)), 31, "January");
+       a(t.call(new Date(2001, 1, 1)), 28, "February");
+       a(t.call(new Date(2000, 1, 1)), 29, "February (leap)");
+       a(t.call(new Date(2001, 2, 1)), 31, "March");
+       a(t.call(new Date(2001, 3, 1)), 30, "April");
+       a(t.call(new Date(2001, 4, 1)), 31, "May");
+       a(t.call(new Date(2001, 5, 1)), 30, "June");
+       a(t.call(new Date(2001, 6, 1)), 31, "July");
+       a(t.call(new Date(2001, 7, 1)), 31, "August");
+       a(t.call(new Date(2001, 8, 1)), 30, "September");
+       a(t.call(new Date(2001, 9, 1)), 31, "October");
+       a(t.call(new Date(2001, 10, 1)), 30, "November");
+       a(t.call(new Date(2001, 11, 1)), 31, "December");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-day.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-day.js
new file mode 100644 (file)
index 0000000..d4f4a90
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2000, 0, 1, 13, 32, 34, 234)).valueOf(),
+               new Date(2000, 0, 1).valueOf());
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-month.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-month.js
new file mode 100644 (file)
index 0000000..b4a81be
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2000, 0, 15, 13, 32, 34, 234)).valueOf(),
+               new Date(2000, 0, 1).valueOf());
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-year.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-year.js
new file mode 100644 (file)
index 0000000..aae117e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2000, 5, 13, 13, 32, 34, 234)).valueOf(),
+               new Date(2000, 0, 1).valueOf());
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/format.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/format.js
new file mode 100644 (file)
index 0000000..e68e4bf
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var dt = new Date(2011, 2, 3, 3, 5, 5, 32);
+       a(t.call(dt, ' %Y.%y.%m.%d.%H.%M.%S.%L '), ' 2011.11.03.03.03.05.05.032 ');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/is-date.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/is-date.js
new file mode 100644 (file)
index 0000000..109093d
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(true), false, "Boolean");
+       a(t(new Date()), true, "Date");
+       a(t(new String('raz')), false, "String object");
+       a(t({}), false, "Plain object");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/valid-date.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/valid-date.js
new file mode 100644 (file)
index 0000000..98787e4
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var d = new Date();
+       a(t(d), d, "Date");
+       a.throws(function () {
+               t({});
+       }, "Object");
+       a.throws(function () {
+               t({ valueOf: function () { return 20; } });
+       }, "Number object");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#/throw.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#/throw.js
new file mode 100644 (file)
index 0000000..1213cfc
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var e = new Error();
+       try {
+               t.call(e);
+       } catch (e2) {
+               a(e2, e);
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/custom.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/custom.js
new file mode 100644 (file)
index 0000000..d4ff500
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var T = t, err = new T('My Error', 'MY_ERROR', { errno: 123 });
+       a(err instanceof Error, true, "Instance of error");
+       a(err.constructor, Error, "Constructor");
+       a(err.name, 'Error', "Name");
+       a(String(err), 'Error: My Error', "String representation");
+       a(err.code, 'MY_ERROR', "Code");
+       a(err.errno, 123, "Errno");
+       a(typeof err.stack, 'string', "Stack trace");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/is-error.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/is-error.js
new file mode 100644 (file)
index 0000000..f8b5e20
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(), false, "Undefined");
+       a(t(1), false, "Primitive");
+       a(t({}), false, "Objectt");
+       a(t({ toString: function () { return '[object Error]'; } }), false,
+               "Fake error");
+       a(t(new Error()), true, "Error");
+       a(t(new EvalError()), true, "EvalError");
+       a(t(new RangeError()), true, "RangeError");
+       a(t(new ReferenceError()), true, "ReferenceError");
+       a(t(new SyntaxError()), true, "SyntaxError");
+       a(t(new TypeError()), true, "TypeError");
+       a(t(new URIError()), true, "URIError");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/valid-error.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/valid-error.js
new file mode 100644 (file)
index 0000000..e04cdb3
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var e = new Error();
+       a(t(e), e, "Error");
+       a.throws(function () {
+               t({});
+       }, "Other");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/compose.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/compose.js
new file mode 100644 (file)
index 0000000..83de5e8
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var f = function (a, b) { return ['a', arguments.length, a, b]; }
+  , g = function (a) { return ['b', arguments.length].concat(a); }
+  , h = function (a) { return ['c', arguments.length].concat(a); };
+
+module.exports = function (t, a) {
+       a.deep(t.call(h, g, f)(1, 2), ['c', 1, 'b', 1, 'a', 2, 1, 2]);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/copy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/copy.js
new file mode 100644 (file)
index 0000000..7a22e2f
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var foo = 'raz', bar = 'dwa'
+         , fn = function marko(a, b) { return this + a + b + foo + bar; }
+         , result, o = {};
+
+       fn.prototype = o;
+
+       fn.foo = 'raz';
+
+       result = t.call(fn);
+
+       a(result.length, fn.length, "Length");
+       a(result.name, fn.name, "Length");
+       a(result.call('marko', 'el', 'fe'), 'markoelferazdwa', "Body");
+       a(result.prototype, fn.prototype, "Prototype");
+       a(result.foo, fn.foo, "Custom property");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/curry.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/curry.js
new file mode 100644 (file)
index 0000000..18fb038
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var toArray = require('../../../array/to-array')
+
+  , f = function () { return toArray(arguments); };
+
+module.exports = function (t, a) {
+       var x, y = {}, z;
+       a.deep(t.call(f, 0, 1, 2)(3), [], "0 arguments");
+       x = t.call(f, 5, {});
+       a(x.length, 5, "Length #1");
+       z = x(1, 2);
+       a(z.length, 3, "Length #2");
+       z = z(3, 4);
+       a(z.length, 1, "Length #1");
+       a.deep(z(5, 6), [1, 2, 3, 4, 5], "Many arguments");
+       a.deep(x(8, 3)(y, 45)('raz', 6), [8, 3, y, 45, 'raz'], "Many arguments #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/lock.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/lock.js
new file mode 100644 (file)
index 0000000..44a12d7
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(function () {
+               return arguments.length;
+       })(1, 2, 3), 0);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/not.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/not.js
new file mode 100644 (file)
index 0000000..c0f5e9d
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var identity = require('../../../function/identity')
+  , noop     = require('../../../function/noop');
+
+module.exports = function (t, a) {
+       a(t.call(identity)(''), true, "Falsy");
+       a(t.call(noop)(), true, "Undefined");
+       a(t.call(identity)({}), false, "Any object");
+       a(t.call(identity)(true), false, "True");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/partial.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/partial.js
new file mode 100644 (file)
index 0000000..bd00ce7
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toArray = require('../../../array/to-array')
+
+  , f = function () { return toArray(arguments); };
+
+module.exports = function (t, a) {
+       a.deep(t.call(f, 1)(2, 3), [1, 2, 3]);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/spread.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/spread.js
new file mode 100644 (file)
index 0000000..b82dfec
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var f = function (a, b) { return this[a] + this[b]; }
+  , o = { a: 3, b: 4 };
+
+module.exports = function (t, a) {
+       a(t.call(f).call(o, ['a', 'b']), 7);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/to-string-tokens.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/to-string-tokens.js
new file mode 100644 (file)
index 0000000..4c54d30
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t.call(function (a, b) { return this[a] + this[b]; }),
+               { args: 'a, b', body: ' return this[a] + this[b]; ' });
+       a.deep(t.call(function () {}),
+               { args: '', body: '' });
+       a.deep(t.call(function (raz) {}),
+               { args: 'raz', body: '' });
+       a.deep(t.call(function () { Object(); }),
+               { args: '', body: ' Object(); ' });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/_define-length.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/_define-length.js
new file mode 100644 (file)
index 0000000..8f037e8
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var foo = 'raz', bar = 'dwa'
+         , fn = function (a, b) { return this + a + b + foo + bar; }
+         , result;
+
+       result = t(fn, 3);
+       a(result.call('marko', 'el', 'fe'), 'markoelferazdwa', "Content");
+       a(result.length, 3, "Length");
+       a(result.prototype, fn.prototype, "Prototype");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/constant.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/constant.js
new file mode 100644 (file)
index 0000000..fda52aa
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var o = {};
+
+module.exports = function (t, a) {
+       a(t(o)(), o);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/identity.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/identity.js
new file mode 100644 (file)
index 0000000..8013e2e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var o = {};
+
+module.exports = function (t, a) {
+       a(t(o), o);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/invoke.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/invoke.js
new file mode 100644 (file)
index 0000000..fcce4aa
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var constant = require('../../function/constant')
+
+  , o = { b: constant('c') };
+
+module.exports = function (t, a) {
+       a(t('b')(o), 'c');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-arguments.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-arguments.js
new file mode 100644 (file)
index 0000000..f8de881
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var args, dummy;
+       args = (function () { return arguments; }());
+       dummy = { '0': 1, '1': 2 };
+       Object.defineProperty(dummy, 'length', { value: 2 });
+       a(t(args), true, "Arguments");
+       a(t(dummy), false, "Dummy");
+       a(t([]), false, "Array");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-function.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-function.js
new file mode 100644 (file)
index 0000000..83acc42
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var o = { call: Function.prototype.call, apply: Function.prototype.apply };
+
+module.exports = function (t, a) {
+       a(t(function () {}), true, "Function is function");
+       a(t(o), false, "Plain object is not function");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/noop.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/noop.js
new file mode 100644 (file)
index 0000000..4305c6f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t(1, 2, 3), 'undefined');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/pluck.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/pluck.js
new file mode 100644 (file)
index 0000000..5bf9583
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var o = { foo: 'bar' };
+
+module.exports = function (t, a) {
+       a(t('foo')(o), o.foo);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/valid-function.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/valid-function.js
new file mode 100644 (file)
index 0000000..59b1623
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var f = function () {};
+       a(t(f), f, "Function");
+       f = new Function();
+       a(t(f), f, "Function");
+       a.throws(function () {
+               t({});
+       }, "Object");
+       a.throws(function () {
+               t(/re/);
+       }, "RegExp");
+       a.throws(function () {
+               t({ call: function () { return 20; } });
+       }, "Plain object");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/global.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/global.js
new file mode 100644 (file)
index 0000000..1f452ae
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.ok(t && typeof t === 'object');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/for-each.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/for-each.js
new file mode 100644 (file)
index 0000000..0fed8ad
--- /dev/null
@@ -0,0 +1,40 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array')
+
+  , slice = Array.prototype.slice;
+
+module.exports = function (t, a) {
+       var i = 0, x = ['raz', 'dwa', 'trzy'], y = {};
+       t(x, function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Array " + i + "#");
+               a(this, y, "Array: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t((function () { return arguments; }('raz', 'dwa', 'trzy')), function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Arguments" + i + "#");
+               a(this, y, "Arguments: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t({ 0: 'raz', 1: 'dwa', 2: 'trzy', length: 3 }, function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Array-like" + i + "#");
+               a(this, y, "Array-like: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(x = 'foo', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Regular String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       x = ['r', '💩', 'z'];
+       t('r💩z', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Unicode String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(new ArrayIterator(x), function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Iterator " + i + "#");
+               a(this, y, "Iterator: context:  " + (i++) + "#");
+       }, y);
+
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/is.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/is.js
new file mode 100644 (file)
index 0000000..c0d2a43
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (t, a) {
+       var x;
+       a(t([]), true, "Array");
+       a(t(""), true, "String");
+       a(t((function () { return arguments; }())), true, "Arguments");
+       a(t({ length: 0 }), true, "List object");
+       a(t(function () {}), false, "Function");
+       a(t({}), false, "Plain object");
+       a(t(/raz/), false, "Regexp");
+       a(t(), false, "No argument");
+       a(t(null), false, "Null");
+       a(t(undefined), false, "Undefined");
+       x = {};
+       x[iteratorSymbol] = function () {};
+       a(t(x), true, "Iterable");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate-object.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate-object.js
new file mode 100644 (file)
index 0000000..da12529
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a.throws(function () { t(''); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+       x = {};
+       x[iteratorSymbol] = function () {};
+       a(t(x), x, "Iterable");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate.js
new file mode 100644 (file)
index 0000000..bcc2ad3
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a(t(''), '', "''");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+       x = {};
+       x[iteratorSymbol] = function () {};
+       a(t(x), x, "Iterable");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_pack-ieee754.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_pack-ieee754.js
new file mode 100644 (file)
index 0000000..9041431
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t(1.337, 8, 23), [63, 171, 34, 209]);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_unpack-ieee754.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_unpack-ieee754.js
new file mode 100644 (file)
index 0000000..ca30b82
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t([63, 171, 34, 209], 8, 23), 1.3370000123977661);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/implement.js
new file mode 100644 (file)
index 0000000..01fb6d0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/acosh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/shim.js
new file mode 100644 (file)
index 0000000..3d710c7
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-1), NaN, "Negative");
+       a(t(0), NaN, "Zero");
+       a(t(0.5), NaN, "Below 1");
+       a(t(1), 0, "1");
+       a(t(2), 1.3169578969248166, "Other");
+       a(t(Infinity), Infinity, "Infinity");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/implement.js
new file mode 100644 (file)
index 0000000..d1fcece
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/asinh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/shim.js
new file mode 100644 (file)
index 0000000..d9fbe49
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(-2), -1.4436354751788103, "Negative");
+       a(t(2), 1.4436354751788103, "Positive");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/implement.js
new file mode 100644 (file)
index 0000000..cba8fad
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/atanh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/shim.js
new file mode 100644 (file)
index 0000000..a857b49
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-2), NaN, "Less than -1");
+       a(t(2), NaN, "Greater than 1");
+       a(t(-1), -Infinity, "-1");
+       a(t(1), Infinity, "1");
+       a(t(0), 0, "Zero");
+       a(t(0.5), 0.5493061443340549, "Ohter");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/implement.js
new file mode 100644 (file)
index 0000000..374d4b3
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/cbrt/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/shim.js
new file mode 100644 (file)
index 0000000..43ab68b
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(-1), -1, "-1");
+       a(t(1), 1, "1");
+       a(t(2), 1.2599210498948732, "Ohter");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/implement.js
new file mode 100644 (file)
index 0000000..44f8815
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/clz32/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/shim.js
new file mode 100644 (file)
index 0000000..a769b39
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(1), 31, "1");
+       a(t(1000), 22, "1000");
+       a(t(), 32, "No arguments");
+       a(t(Infinity), 32, "Infinity");
+       a(t(-Infinity), 32, "-Infinity");
+       a(t("foo"), 32, "String");
+       a(t(true), 31, "Boolean");
+       a(t(3.5), 30, "Float");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/implement.js
new file mode 100644 (file)
index 0000000..f3c712b
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/cosh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/shim.js
new file mode 100644 (file)
index 0000000..419c123
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 1, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), Infinity, "-Infinity");
+       a(t(1), 1.5430806348152437, "1");
+       a(t(Number.MAX_VALUE), Infinity);
+       a(t(-Number.MAX_VALUE), Infinity);
+       a(t(Number.MIN_VALUE), 1);
+       a(t(-Number.MIN_VALUE), 1);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/implement.js
new file mode 100644 (file)
index 0000000..c212967
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/expm1/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/shim.js
new file mode 100644 (file)
index 0000000..15f0e79
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -1, "-Infinity");
+       a(t(1).toFixed(15), '1.718281828459045', "1");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/implement.js
new file mode 100644 (file)
index 0000000..c909af7
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/fround/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/shim.js
new file mode 100644 (file)
index 0000000..4ef6d4e
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(1.337), 1.3370000123977661, "1");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/implement.js
new file mode 100644 (file)
index 0000000..9946646
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/hypot/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/shim.js
new file mode 100644 (file)
index 0000000..91d950a
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(), 0, "No arguments");
+       a(t(0, -0, 0), 0, "Zeros");
+       a(t(4, NaN, Infinity), Infinity, "Infinity");
+       a(t(4, NaN, -Infinity), Infinity, "Infinity");
+       a(t(4, NaN, 34), NaN, "NaN");
+       a(t(3, 4), 5, "#1");
+       a(t(3, 4, 5), 7.0710678118654755, "#2");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/implement.js
new file mode 100644 (file)
index 0000000..7b2a2a6
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/imul/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/shim.js
new file mode 100644 (file)
index 0000000..a2ca7fe
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(), 0, "No arguments");
+       a(t(0, 0), 0, "Zeros");
+       a(t(2, 4), 8, "#1");
+       a(t(-1, 8), -8, "#2");
+       a(t(0xfffffffe, 5), -10, "#3");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/implement.js
new file mode 100644 (file)
index 0000000..4b3b4a4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/log10/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/shim.js
new file mode 100644 (file)
index 0000000..5fa0d5b
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-0.5), NaN, "Less than 0");
+       a(t(0), -Infinity, "0");
+       a(t(1), 0, "1");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(2), 0.3010299956639812, "Other");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/implement.js
new file mode 100644 (file)
index 0000000..5d269bd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/log1p/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/shim.js
new file mode 100644 (file)
index 0000000..d495ce0
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-1.5), NaN, "Less than -1");
+       a(t(-1), -Infinity, "-1");
+       a(t(0), 0, "0");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(1), 0.6931471805599453, "Other");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/implement.js
new file mode 100644 (file)
index 0000000..92b501a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/log2/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/shim.js
new file mode 100644 (file)
index 0000000..faa9c32
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-0.5), NaN, "Less than 0");
+       a(t(0), -Infinity, "0");
+       a(t(1), 0, "1");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(3).toFixed(15), '1.584962500721156', "Other");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/implement.js
new file mode 100644 (file)
index 0000000..5875c42
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/sign/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/shim.js
new file mode 100644 (file)
index 0000000..b6b89c1
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var is = require('../../../object/is');
+
+module.exports = function (t, a) {
+       a(is(t(0), +0), true, "+0");
+       a(is(t(-0), -0), true, "-0");
+       a(t({}), NaN, true, "NaN");
+       a(t(-234234234), -1, "Negative");
+       a(t(234234234), 1, "Positive");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/implement.js
new file mode 100644 (file)
index 0000000..e52089e
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/sinh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/shim.js
new file mode 100644 (file)
index 0000000..4f63b59
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(1), 1.1752011936438014, "1");
+       a(t(Number.MAX_VALUE), Infinity);
+       a(t(-Number.MAX_VALUE), -Infinity);
+       a(t(Number.MIN_VALUE), 5e-324);
+       a(t(-Number.MIN_VALUE), -5e-324);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/implement.js
new file mode 100644 (file)
index 0000000..a96bf19
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/tanh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/shim.js
new file mode 100644 (file)
index 0000000..2c67aaf
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), 1, "Infinity");
+       a(t(-Infinity), -1, "-Infinity");
+       a(t(1), 0.7615941559557649, "1");
+       a(t(Number.MAX_VALUE), 1);
+       a(t(-Number.MAX_VALUE), -1);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/implement.js
new file mode 100644 (file)
index 0000000..1830e61
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/trunc/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/shim.js
new file mode 100644 (file)
index 0000000..9e5eed7
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var is = require('../../../object/is');
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(is(t(0.234), 0), true, "0");
+       a(is(t(-0.234), -0), true, "-0");
+       a(t(13.7), 13, "Positive #1");
+       a(t(12.3), 12, "Positive #2");
+       a(t(-12.3), -12, "Negative #1");
+       a(t(-14.7), -14, "Negative #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#/pad.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#/pad.js
new file mode 100644 (file)
index 0000000..e020823
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(78, 4), '0078');
+       a(t.call(65.12323, 4, 3), '0065.123', "Precision");
+       a(t.call(65, 4, 3), '0065.000', "Precision integer");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/implement.js
new file mode 100644 (file)
index 0000000..574da75
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/epsilon/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/index.js
new file mode 100644 (file)
index 0000000..c892fd4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/implement.js
new file mode 100644 (file)
index 0000000..b35345f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-finite/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/shim.js
new file mode 100644 (file)
index 0000000..5205d1c
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), true, "Number");
+       a(t('23'), false, "Not numeric");
+       a(t(NaN), false, "NaN");
+       a(t(Infinity), false, "Infinity");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/implement.js
new file mode 100644 (file)
index 0000000..127149c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/shim.js
new file mode 100644 (file)
index 0000000..3f3985c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), true, "Number");
+       a(t(2.34), false, "Float");
+       a(t('23'), false, "Not numeric");
+       a(t(NaN), false, "NaN");
+       a(t(Infinity), false, "Infinity");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/implement.js
new file mode 100644 (file)
index 0000000..2f01d6d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-nan/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/shim.js
new file mode 100644 (file)
index 0000000..425723e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), false, "Number");
+       a(t({}), false, "Not numeric");
+       a(t(NaN), true, "NaN");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-number.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-number.js
new file mode 100644 (file)
index 0000000..2751334
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(0), true, "Zero");
+       a(t(NaN), true, "NaN");
+       a(t(Infinity), true, "Infinity");
+       a(t(12), true, "Number");
+       a(t(false), false, "Boolean");
+       a(t(new Date()), false, "Date");
+       a(t(new Number(2)), true, "Number object");
+       a(t('asdfaf'), false, "String");
+       a(t(''), false, "Empty String");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..33667e2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-safe-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/shim.js
new file mode 100644 (file)
index 0000000..77e0667
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), true, "Number");
+       a(t(2.34), false, "Float");
+       a(t(Math.pow(2, 53)), false, "Too large");
+       a(t(Math.pow(2, 53) - 1), true, "Maximum");
+       a(t('23'), false, "Not numeric");
+       a(t(NaN), false, "NaN");
+       a(t(Infinity), false, "Infinity");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..bef00ca
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/max-safe-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/index.js
new file mode 100644 (file)
index 0000000..c892fd4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..fa44024
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/min-safe-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/index.js
new file mode 100644 (file)
index 0000000..c892fd4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'number');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-integer.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-integer.js
new file mode 100644 (file)
index 0000000..ff326ba
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "NaN");
+       a(t(20), 20, "Positive integer");
+       a(t('-20'), -20, "String negative integer");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(15.343), 15, "Float");
+       a(t(-15.343), -15, "Negative float");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-pos-integer.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-pos-integer.js
new file mode 100644 (file)
index 0000000..2f3b4e6
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "NaN");
+       a(t(20), 20, "Positive integer");
+       a(t(-20), 0, "Negative integer");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(15.343), 15, "Float");
+       a(t(-15.343), 0, "Negative float");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-uint32.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-uint32.js
new file mode 100644 (file)
index 0000000..00d05bd
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "Not numeric");
+       a(t(-4), 4294967292, "Negative");
+       a(t(133432), 133432, "Positive");
+       a(t(8589934592), 0, "Greater than maximum");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/_iterate.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/_iterate.js
new file mode 100644 (file)
index 0000000..179afed
--- /dev/null
@@ -0,0 +1,30 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { raz: 1, dwa: 2, trzy: 3 }
+         , o2 = {}, o3 = {}, arr, i = -1;
+
+       t = t('forEach');
+       t(o, function (value, name, self, index) {
+               o2[name] = value;
+               a(index, ++i, "Index");
+               a(self, o, "Self");
+               a(this, o3, "Scope");
+       }, o3);
+       a.deep(o2, o);
+
+       arr = [];
+       o2 = {};
+       i = -1;
+       t(o, function (value, name, self, index) {
+               arr.push(value);
+               o2[name] = value;
+               a(index, ++i, "Index");
+               a(self, o, "Self");
+               a(this, o3, "Scope");
+       }, o3, function (a, b) {
+               return o[b] - o[a];
+       });
+       a.deep(o2, o, "Sort by Values: Content");
+       a.deep(arr, [3, 2, 1], "Sort by Values: Order");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/implement.js
new file mode 100644 (file)
index 0000000..4006559
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../object/assign/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/shim.js
new file mode 100644 (file)
index 0000000..9afe5f6
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o1 = { a: 1, b: 2 }
+         , o2 = { b: 3, c: 4 };
+
+       a(t(o1, o2), o1, "Returns self");
+       a.deep(o1, { a: 1, b: 3, c: 4 }, "Single: content");
+
+       a.deep(t({}, o1, o2), { a: 1, b: 3, c: 4 }, "Multi argument");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/clear.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/clear.js
new file mode 100644 (file)
index 0000000..bfc08cc
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var isEmpty = require('../../object/is-empty');
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t(x), x, "Empty: Returns same object");
+       a(isEmpty(x), true, "Empty: Not changed");
+       x.foo = 'raz';
+       x.bar = 'dwa';
+       a(t(x), x, "Same object");
+       a(isEmpty(x), true, "Emptied");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compact.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compact.js
new file mode 100644 (file)
index 0000000..9c9064c
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = {}, z;
+       z = t(x);
+       a.not(z, x, "Returns different object");
+       a.deep(z, {}, "Empty on empty");
+
+       x = { foo: 'bar', a: 0, b: false, c: '', d: '0', e: null, bar: y,
+               elo: undefined };
+       z = t(x);
+       a.deep(z, { foo: 'bar', a: 0, b: false, c: '', d: '0', bar: y },
+               "Cleared null values");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compare.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compare.js
new file mode 100644 (file)
index 0000000..cb94241
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var d = new Date();
+
+       a.ok(t(12, 3) > 0, "Numbers");
+       a.ok(t(2, 13) < 0, "Numbers #2");
+       a.ok(t("aaa", "aa") > 0, "Strings");
+       a.ok(t("aa", "ab") < 0, "Strings #2");
+       a(t("aa", "aa"), 0, "Strings same");
+       a(t(d, new Date(d.getTime())), 0, "Same date");
+       a.ok(t(d, new Date(d.getTime() + 1)) < 0, "Different date");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy-deep.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy-deep.js
new file mode 100644 (file)
index 0000000..a4023bc
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var stringify = JSON.stringify;
+
+module.exports = function (t, a) {
+       var o = { 1: 'raz', 2: 'dwa', 3: 'trzy' }
+         , no = t(o);
+
+       a.not(no, o, "Return different object");
+       a(stringify(no), stringify(o), "Match properties and values");
+
+       o = { foo: 'bar', raz: { dwa: 'dwa',
+               trzy: { cztery: 'pięć', 'sześć': 'siedem' }, osiem: {},
+               'dziewięć': function () { } }, 'dziesięć': 10 };
+       o.raz.rec = o;
+
+       no = t(o);
+       a.not(o.raz, no.raz, "Deep");
+       a.not(o.raz.trzy, no.raz.trzy, "Deep #2");
+       a(stringify(o.raz.trzy), stringify(no.raz.trzy), "Deep content");
+       a(no.raz.rec, no, "Recursive");
+       a.not(o.raz.osiem, no.raz.osiem, "Empty object");
+       a(o.raz['dziewięć'], no.raz['dziewięć'], "Function");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy.js
new file mode 100644 (file)
index 0000000..2f222ef
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var stringify = JSON.stringify;
+
+module.exports = function (t, a) {
+       var o = { 1: 'raz', 2: 'dwa', 3: 'trzy' }
+         , no = t(o);
+
+       a.not(no, o, "Return different object");
+       a(stringify(no), stringify(o), "Match properties and values");
+
+       o = { foo: 'bar', raz: { dwa: 'dwa',
+               trzy: { cztery: 'pięć', 'sześć': 'siedem' }, osiem: {},
+               'dziewięć': function () { } }, 'dziesięć': 10 };
+       o.raz.rec = o;
+
+       no = t(o);
+       a(o.raz, no.raz, "Shallow");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/count.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/count.js
new file mode 100644 (file)
index 0000000..494f4f1
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "Empty");
+       a(t({ raz: 1, dwa: null, trzy: undefined, cztery: 0 }), 4,
+               "Some properties");
+       a(t(Object.defineProperties({}, {
+               raz: { value: 'raz' },
+               dwa: { value: 'dwa', enumerable: true }
+       })), 1, "Some properties hidden");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/create.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/create.js
new file mode 100644 (file)
index 0000000..8b7be21
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var setPrototypeOf = require('../../object/set-prototype-of')
+
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+       var x = {}, obj;
+
+       a(getPrototypeOf(t(x)), x, "Normal object");
+       a(getPrototypeOf(t(null)),
+               (setPrototypeOf && setPrototypeOf.nullPolyfill) || null, "Null");
+
+       a.h1("Properties");
+       a.h2("Normal object");
+       a(getPrototypeOf(obj = t(x, { foo: { value: 'bar' } })), x, "Prototype");
+       a(obj.foo, 'bar', "Property");
+       a.h2("Null");
+       a(getPrototypeOf(obj = t(null, { foo: { value: 'bar2' } })),
+               (setPrototypeOf && setPrototypeOf.nullPolyfill) || null, "Prototype");
+       a(obj.foo, 'bar2', "Property");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/eq.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/eq.js
new file mode 100644 (file)
index 0000000..02b3f00
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = {};
+       a(t(o, {}), false, "Different objects");
+       a(t(o, o), true, "Same objects");
+       a(t('1', '1'), true, "Same primitive");
+       a(t('1', 1), false, "Different primitive types");
+       a(t(NaN, NaN), true, "NaN");
+       a(t(0, 0), true, "0,0");
+       a(t(0, -0), true, "0,-0");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/every.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/every.js
new file mode 100644 (file)
index 0000000..07d5bbb
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+       var o2 = {};
+       t(o, function (value, name) {
+               o2[name] = value;
+               return true;
+       });
+       a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+       a(t(o, function () {
+               return true;
+       }), true, "Succeeds");
+
+       a(t(o, function () {
+               return false;
+       }), false, "Fails");
+
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/filter.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/filter.js
new file mode 100644 (file)
index 0000000..7307da8
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ 1: 1, 2: 2, 3: 3, 4: 4 },
+               function (value) { return Boolean(value % 2); }), { 1: 1, 3: 3 });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/first-key.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/first-key.js
new file mode 100644 (file)
index 0000000..8169cd2
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = Object.create(null);
+       a(t(x), null, "Normal: Empty");
+       a(t(y), null, "Null extension: Empty");
+       x.foo = 'raz';
+       x.bar = 343;
+       a(['foo', 'bar'].indexOf(t(x)) !== -1, true, "Normal");
+       y.elo = 'foo';
+       y.mar = 'wew';
+       a(['elo', 'mar'].indexOf(t(y)) !== -1, true, "Null extension");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/flatten.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/flatten.js
new file mode 100644 (file)
index 0000000..ca342ea
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ a: { aa: 1, ab: 2 }, b: { ba: 3, bb: 4 } }),
+               { aa: 1, ab: 2, ba: 3, bb: 4 });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/for-each.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/for-each.js
new file mode 100644 (file)
index 0000000..8690d1e
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { raz: 1, dwa: 2, trzy: 3 }
+         , o2 = {};
+       a(t(o, function (value, name) {
+               o2[name] = value;
+       }), undefined, "Return");
+       a.deep(o2, o);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/get-property-names.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/get-property-names.js
new file mode 100644 (file)
index 0000000..b91c3dd
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { first: 1, second: 4 }, r1, r2;
+       o = Object.create(o, {
+               third: { value: null }
+       });
+       o.first = 2;
+       o = Object.create(o);
+       o.fourth = 3;
+
+       r1 = t(o);
+       r1.sort();
+       r2 = ['first', 'second', 'third', 'fourth']
+               .concat(Object.getOwnPropertyNames(Object.prototype));
+       r2.sort();
+       a.deep(r1, r2);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-array-like.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-array-like.js
new file mode 100644 (file)
index 0000000..6295973
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t([]), true, "Array");
+       a(t(""), true, "String");
+       a(t((function () { return arguments; }())), true, "Arguments");
+       a(t({ length: 0 }), true, "List object");
+       a(t(function () {}), false, "Function");
+       a(t({}), false, "Plain object");
+       a(t(/raz/), false, "Regexp");
+       a(t(), false, "No argument");
+       a(t(null), false, "Null");
+       a(t(undefined), false, "Undefined");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-callable.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-callable.js
new file mode 100644 (file)
index 0000000..625e221
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(function () {}), true, "Function");
+       a(t({}), false, "Object");
+       a(t(), false, "Undefined");
+       a(t(null), false, "Null");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy-deep.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy-deep.js
new file mode 100644 (file)
index 0000000..4f14cbb
--- /dev/null
@@ -0,0 +1,46 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x, y;
+
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 3 }), true, "Same");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Different property value");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2 }), false,
+               "Property only in source");
+       a(t({ 1: 1, 2: 2 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Property only in target");
+
+       a(t("raz", "dwa"), false, "String: diff");
+       a(t("raz", "raz"), true, "String: same");
+       a(t("32", 32), false, "String & Number");
+
+       a(t([1, 'raz', true], [1, 'raz', true]), true, "Array: same");
+       a(t([1, 'raz', undefined], [1, 'raz']), false, "Array: diff");
+       a(t(['foo'], ['one']), false, "Array: One value comparision");
+
+       x = { foo: { bar: { mar: {} } } };
+       y = { foo: { bar: { mar: {} } } };
+       a(t(x, y), true, "Deep");
+
+       a(t({ foo: { bar: { mar: 'foo' } } }, { foo: { bar: { mar: {} } } }),
+               false, "Deep: false");
+
+       x = { foo: { bar: { mar: {} } } };
+       x.rec = { foo: x };
+
+       y = { foo: { bar: { mar: {} } } };
+       y.rec = { foo: x };
+
+       a(t(x, y), true, "Object: Infinite Recursion: Same #1");
+
+       x.rec.foo = y;
+       a(t(x, y), true, "Object: Infinite Recursion: Same #2");
+
+       x.rec.foo = x;
+       y.rec.foo = y;
+       a(t(x, y), true, "Object: Infinite Recursion: Same #3");
+
+       y.foo.bar.mar = 'raz';
+       a(t(x, y), false, "Object: Infinite Recursion: Diff");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy.js
new file mode 100644 (file)
index 0000000..394e2ed
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 3 }), true, "Same");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Different property value");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2 }), false,
+               "Property only in source");
+       a(t({ 1: 1, 2: 2 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Property only in target");
+
+       a(t("raz", "dwa"), false, "String: diff");
+       a(t("raz", "raz"), true, "String: same");
+       a(t("32", 32), false, "String & Number");
+
+       a(t([1, 'raz', true], [1, 'raz', true]), true, "Array: same");
+       a(t([1, 'raz', undefined], [1, 'raz']), false, "Array: diff");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-empty.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-empty.js
new file mode 100644 (file)
index 0000000..b560c2c
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), true, "Empty");
+       a(t({ 1: 1 }), false, "Not empty");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-object.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-object.js
new file mode 100644 (file)
index 0000000..72c8aa6
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(true), false, "Boolean");
+       a(t(null), false, "Null");
+       a(t(new Date()), true, "Date");
+       a(t(new String('raz')), true, "String object");
+       a(t({}), true, "Plain object");
+       a(t(/a/), true, "Regular expression");
+       a(t(function () {}), true, "Function");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-plain-object.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-plain-object.js
new file mode 100644 (file)
index 0000000..e988829
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), true, "Empty {} is plain object");
+       a(t({ a: true }), true, "{} with property is plain object");
+       a(t({ prototype: 1, constructor: 2, __proto__:  3 }), true,
+               "{} with any property keys is plain object");
+       a(t(null), false, "Null is not plain object");
+       a(t('string'), false, "Primitive is not plain object");
+       a(t(function () {}), false, "Function is not plain object");
+       a(t(Object.create({})), false,
+               "Object whose prototype is not Object.prototype is not plain object");
+       a(t(Object.create(Object.prototype)), true,
+               "Object whose prototype is Object.prototype is plain object");
+       a(t(Object.create(null)), true,
+               "Object whose prototype is null is plain object");
+       a(t(Object.prototype), false, "Object.prototype");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is.js
new file mode 100644 (file)
index 0000000..4f8948c
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = {};
+       a(t(o, {}), false, "Different objects");
+       a(t(o, o), true, "Same objects");
+       a(t('1', '1'), true, "Same primitive");
+       a(t('1', 1), false, "Different primitive types");
+       a(t(NaN, NaN), true, "NaN");
+       a(t(0, 0), true, "0,0");
+       a(t(0, -0), false, "0,-0");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/key-of.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/key-of.js
new file mode 100644 (file)
index 0000000..a9225a0
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = {}
+         , o = { foo: 'bar', raz: x, trzy: 'cztery', five: '6' };
+
+       a(t(o, 'bar'), 'foo', "First property");
+       a(t(o, 6), null, "Primitive that's not there");
+       a(t(o, x), 'raz', "Object");
+       a(t(o, y), null, "Object that's not there");
+       a(t(o, '6'), 'five', "Last property");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/implement.js
new file mode 100644 (file)
index 0000000..179e1e5
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../object/keys/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/shim.js
new file mode 100644 (file)
index 0000000..ed29eeb
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ foo: 'bar' }), ['foo'], "Object");
+       a.deep(t('raz'), ['0', '1', '2'], "Primitive");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Undefined");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map-keys.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map-keys.js
new file mode 100644 (file)
index 0000000..be84825
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ 1: 1, 2: 2, 3: 3 }, function (key, value) {
+               return 'x' + (key + value);
+       }), { x11: 1, x22: 2, x33: 3 });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map.js
new file mode 100644 (file)
index 0000000..f9cc09c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var obj = { 1: 1, 2: 2, 3: 3 };
+       a.deep(t(obj, function (value, key, context) {
+               a(context, obj, "Context argument");
+               return (value + 1) + key;
+       }), { 1: '21', 2: '32', 3: '43' });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin-prototypes.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin-prototypes.js
new file mode 100644 (file)
index 0000000..d1c727a
--- /dev/null
@@ -0,0 +1,67 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o, o1, o2, x, y = {}, z = {};
+       o = { inherited: true, visible: 23 };
+       o1 = Object.create(o);
+       o1.visible = z;
+       o1.nonremovable = 'raz';
+       Object.defineProperty(o1, 'hidden', { value: 'hidden' });
+
+       o2 = Object.defineProperties({}, { nonremovable: { value: y } });
+       o2.other = 'other';
+
+       try { t(o2, o1); } catch (ignore) {}
+
+       a(o2.visible, z, "Enumerable");
+       a(o1.hidden, 'hidden', "Not Enumerable");
+       a(o2.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(o2.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(o2.inherited, true, "Extend deep");
+
+       a(o2.nonremovable, y, "Do not overwrite non configurable");
+       a(o2.other, 'other', "Own kept");
+
+       x = {};
+       t(x, o2);
+       try { t(x, o1); } catch (ignore) {}
+
+       a(x.visible, z, "Enumerable");
+       a(x.hidden, 'hidden', "Not Enumerable");
+       a(x.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(x.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(x.inherited, true, "Extend deep");
+
+       a(x.nonremovable, y, "Ignored non configurable");
+       a(x.other, 'other', "Other");
+
+       x.visible = 3;
+       a(x.visible, 3, "Writable is writable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               x.hidden = 3;
+       }, "Not writable is not writable");
+
+       x = {};
+       t(x, o1);
+       delete x.visible;
+       a.ok(!x.hasOwnProperty('visible'), "Configurable is configurable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               delete x.hidden;
+       }, "Not configurable is not configurable");
+
+       x = Object.defineProperty({}, 'foo',
+               { configurable: false, writable: true, enumerable: false, value: 'bar' });
+
+       try { t(x, { foo: 'lorem' }); } catch (ignore) {}
+       a(x.foo, 'bar', "Writable, not enumerable");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin.js
new file mode 100644 (file)
index 0000000..866005b
--- /dev/null
@@ -0,0 +1,69 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o, o1, o2, x, y = {}, z = {};
+       o = { inherited: true };
+       o1 = Object.create(o);
+       o1.visible = z;
+       o1.nonremovable = 'raz';
+       Object.defineProperty(o1, 'hidden', { value: 'hidden' });
+
+       o2 = Object.defineProperties({}, { nonremovable: { value: y } });
+       o2.other = 'other';
+
+       try { t(o2, o1); } catch (ignore) {}
+
+       a(o2.visible, z, "Enumerable");
+       a(o1.hidden, 'hidden', "Not Enumerable");
+       a(o2.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(o2.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(o2.hasOwnProperty('inherited'), false, "Extend only own");
+       a(o2.inherited, undefined, "Extend ony own: value");
+
+       a(o2.nonremovable, y, "Do not overwrite non configurable");
+       a(o2.other, 'other', "Own kept");
+
+       x = {};
+       t(x, o2);
+       try { t(x, o1); } catch (ignore) {}
+
+       a(x.visible, z, "Enumerable");
+       a(x.hidden, 'hidden', "Not Enumerable");
+       a(x.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(x.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(x.hasOwnProperty('inherited'), false, "Extend only own");
+       a(x.inherited, undefined, "Extend ony own: value");
+
+       a(x.nonremovable, y, "Ignored non configurable");
+       a(x.other, 'other', "Other");
+
+       x.visible = 3;
+       a(x.visible, 3, "Writable is writable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               x.hidden = 3;
+       }, "Not writable is not writable");
+
+       x = {};
+       t(x, o1);
+       delete x.visible;
+       a.ok(!x.hasOwnProperty('visible'), "Configurable is configurable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               delete x.hidden;
+       }, "Not configurable is not configurable");
+
+       x = Object.defineProperty({}, 'foo',
+               { configurable: false, writable: true, enumerable: false, value: 'bar' });
+
+       try { t(x, { foo: 'lorem' }); } catch (ignore) {}
+       a(x.foo, 'bar', "Writable, not enumerable");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/normalize-options.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/normalize-options.js
new file mode 100644 (file)
index 0000000..0d2d4da
--- /dev/null
@@ -0,0 +1,32 @@
+'use strict';
+
+var create = Object.create, defineProperty = Object.defineProperty;
+
+module.exports = function (t, a) {
+       var x = { foo: 'raz', bar: 'dwa' }, y;
+       y = t(x);
+       a.not(y, x, "Returns copy");
+       a.deep(y, x, "Plain");
+
+       x = { raz: 'one', dwa: 'two' };
+       defineProperty(x, 'get', {
+               configurable: true,
+               enumerable: true,
+               get: function () { return this.dwa; }
+       });
+       x = create(x);
+       x.trzy = 'three';
+       x.cztery = 'four';
+       x = create(x);
+       x.dwa = 'two!';
+       x.trzy = 'three!';
+       x.piec = 'five';
+       x.szesc = 'six';
+
+       a.deep(t(x), { raz: 'one', dwa: 'two!', trzy: 'three!', cztery: 'four',
+               piec: 'five', szesc: 'six', get: 'two!' }, "Deep object");
+
+       a.deep(t({ marko: 'raz', raz: 'foo' }, x, { szesc: 'elo', siedem: 'bibg' }),
+               { marko: 'raz', raz: 'one', dwa: 'two!', trzy: 'three!', cztery: 'four',
+                       piec: 'five', szesc: 'elo', siedem: 'bibg', get: 'two!' }, "Multiple options");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/primitive-set.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/primitive-set.js
new file mode 100644 (file)
index 0000000..839857e
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var getPropertyNames = require('../../object/get-property-names')
+  , isPlainObject    = require('../../object/is-plain-object');
+
+module.exports = function (t, a) {
+       var x = t();
+       a(isPlainObject(x), true, "Plain object");
+       a.deep(getPropertyNames(x), [], "No properties");
+       x.foo = 'bar';
+       a.deep(getPropertyNames(x), ['foo'], "Extensible");
+
+       a.deep(t('raz', 'dwa', 3), { raz: true, dwa: true, 3: true },
+               "Arguments handling");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/safe-traverse.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/safe-traverse.js
new file mode 100644 (file)
index 0000000..d30cdef
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var obj = { foo: { bar: { lorem: 12  } } };
+       a(t(obj), obj, "No props");
+       a(t(obj, 'foo'), obj.foo, "One");
+       a(t(obj, 'raz'), undefined, "One: Fail");
+       a(t(obj, 'foo', 'bar'), obj.foo.bar, "Two");
+       a(t(obj, 'dsd', 'raz'), undefined, "Two: Fail #1");
+       a(t(obj, 'foo', 'raz'), undefined, "Two: Fail #2");
+       a(t(obj, 'foo', 'bar', 'lorem'), obj.foo.bar.lorem, "Three");
+       a(t(obj, 'dsd', 'raz', 'fef'), undefined, "Three: Fail #1");
+       a(t(obj, 'foo', 'raz', 'asdf'), undefined, "Three: Fail #2");
+       a(t(obj, 'foo', 'bar', 'asd'), undefined, "Three: Fail #3");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/serialize.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/serialize.js
new file mode 100644 (file)
index 0000000..43eed6a
--- /dev/null
@@ -0,0 +1,25 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var fn = function (raz, dwa) { return raz + dwa; };
+       a(t(), 'undefined', "Undefined");
+       a(t(null), 'null', "Null");
+       a(t(null), 'null', "Null");
+       a(t('raz'), '"raz"', "String");
+       a(t('raz"ddwa\ntrzy'), '"raz\\"ddwa\\ntrzy"', "String with escape");
+       a(t(false), 'false', "Booelean");
+       a(t(fn), String(fn), "Function");
+
+       a(t(/raz-dwa/g), '/raz-dwa/g', "RegExp");
+       a(t(new Date(1234567)), 'new Date(1234567)', "Date");
+       a(t([]), '[]', "Empty array");
+       a(t([undefined, false, null, 'raz"ddwa\ntrzy', fn, /raz/g, new Date(1234567), ['foo']]),
+               '[undefined,false,null,"raz\\"ddwa\\ntrzy",' + String(fn) +
+               ',/raz/g,new Date(1234567),["foo"]]', "Rich Array");
+       a(t({}), '{}', "Empty object");
+       a(t({ raz: undefined, dwa: false, trzy: null, cztery: 'raz"ddwa\ntrzy', piec: fn, szesc: /raz/g,
+               siedem: new Date(1234567), osiem: ['foo', 32], dziewiec: { foo: 'bar', dwa: 343 } }),
+               '{"raz":undefined,"dwa":false,"trzy":null,"cztery":"raz\\"ddwa\\ntrzy","piec":' + String(fn) +
+               ',"szesc":/raz/g,"siedem":new Date(1234567),"osiem":["foo",32],' +
+               '"dziewiec":{"foo":"bar","dwa":343}}', "Rich object");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/implement.js
new file mode 100644 (file)
index 0000000..30b2ac4
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var create        = require('../../../object/create')
+  , isImplemented = require('../../../object/set-prototype-of/is-implemented');
+
+module.exports = function (a) { a(isImplemented(create), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/index.js
new file mode 100644 (file)
index 0000000..aec2605
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var create = require('../../../object/create')
+
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+       var x = {}, y = {};
+
+       if (t === null) return;
+       a(t(x, y), x, "Return self object");
+       a(getPrototypeOf(x), y, "Object");
+       a.throws(function () { t(x); }, TypeError, "Undefined");
+       a.throws(function () { t('foo'); }, TypeError, "Primitive");
+       a(getPrototypeOf(t(x, null)), t.nullPolyfill || null, "Null");
+       x = create(null);
+       a.h1("Change null prototype");
+       a(t(x, y), x, "Result");
+       a(getPrototypeOf(x), y, "Prototype");
+       a.h1("Set null prototype");
+       a(t(y, null), y, "Result");
+       a(getPrototypeOf(y), t.nullPolyfill || null, "Prototype");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/shim.js
new file mode 100644 (file)
index 0000000..aec2605
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var create = require('../../../object/create')
+
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+       var x = {}, y = {};
+
+       if (t === null) return;
+       a(t(x, y), x, "Return self object");
+       a(getPrototypeOf(x), y, "Object");
+       a.throws(function () { t(x); }, TypeError, "Undefined");
+       a.throws(function () { t('foo'); }, TypeError, "Primitive");
+       a(getPrototypeOf(t(x, null)), t.nullPolyfill || null, "Null");
+       x = create(null);
+       a.h1("Change null prototype");
+       a(t(x, y), x, "Result");
+       a(getPrototypeOf(x), y, "Prototype");
+       a.h1("Set null prototype");
+       a(t(y, null), y, "Result");
+       a(getPrototypeOf(y), t.nullPolyfill || null, "Prototype");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/some.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/some.js
new file mode 100644 (file)
index 0000000..490431e
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+       var o2 = {}, i = 0;
+       t(o, function (value, name) {
+               o2[name] = value;
+               return false;
+       });
+       a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+       a(t(o, function () {
+               ++i;
+               return true;
+       }), true, "Succeeds");
+       a(i, 1, "Stops iteration after condition is met");
+
+       a(t(o, function () {
+               return false;
+       }), false, "Fails");
+
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/to-array.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/to-array.js
new file mode 100644 (file)
index 0000000..1f4beef
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { 1: 1, 2: 2, 3: 3 }, o1 = {}
+         , o2 = t(o, function (value, name, self) {
+               a(self, o, "Self");
+               a(this, o1, "Scope");
+               return value + Number(name);
+       }, o1);
+       a.deep(o2, [2, 4, 6]);
+
+       t(o).sort().forEach(function (item) {
+               a.deep(item, [item[0], o[item[0]]], "Default");
+       });
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/unserialize.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/unserialize.js
new file mode 100644 (file)
index 0000000..405eef1
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var fn = function (raz, dwa) { return raz + dwa; };
+       a(t('undefined'), undefined, "Undefined");
+       a(t('null'), null, "Null");
+       a(t('"raz"'), 'raz', "String");
+       a(t('"raz\\"ddwa\\ntrzy"'), 'raz"ddwa\ntrzy', "String with escape");
+       a(t('false'), false, "Booelean");
+       a(String(t(String(fn))), String(fn), "Function");
+
+       a.deep(t('/raz-dwa/g'), /raz-dwa/g, "RegExp");
+       a.deep(t('new Date(1234567)'), new Date(1234567), "Date");
+       a.deep(t('[]'), [], "Empty array");
+       a.deep(t('[undefined,false,null,"raz\\"ddwa\\ntrzy",/raz/g,new Date(1234567),["foo"]]'),
+               [undefined, false, null, 'raz"ddwa\ntrzy', /raz/g, new Date(1234567), ['foo']], "Rich Array");
+       a.deep(t('{}'), {}, "Empty object");
+       a.deep(t('{"raz":undefined,"dwa":false,"trzy":null,"cztery":"raz\\"ddwa\\ntrzy",' +
+               '"szesc":/raz/g,"siedem":new Date(1234567),"osiem":["foo",32],' +
+               '"dziewiec":{"foo":"bar","dwa":343}}'),
+               { raz: undefined, dwa: false, trzy: null, cztery: 'raz"ddwa\ntrzy', szesc: /raz/g,
+                       siedem: new Date(1234567), osiem: ['foo', 32], dziewiec: { foo: 'bar', dwa: 343 } },
+               "Rich object");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-callable.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-callable.js
new file mode 100644 (file)
index 0000000..b40540b
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var f = function () {};
+       a(t(f), f, "Function");
+       a.throws(function () {
+               t({});
+       }, "Not Function");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-object.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-object.js
new file mode 100644 (file)
index 0000000..eaa8e7b
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a.throws(function () { t(''); }, TypeError, "''");
+       a(t(x = {}), x, "Object");
+       a(t(x = function () {}), x, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+       a(t(x = new Date()), x, "Date");
+
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-value.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-value.js
new file mode 100644 (file)
index 0000000..f1eeafa
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var numIsNaN = require('../../number/is-nan');
+
+module.exports = function (t, a) {
+       var x;
+       a(t(0), 0, "0");
+       a(t(false), false, "false");
+       a(t(''), '', "''");
+       a(numIsNaN(t(NaN)), true, "NaN");
+       a(t(x = {}), x, "{}");
+
+       a.throws(function () {
+               t();
+       }, "Undefined");
+       a.throws(function () {
+               t(null);
+       }, "null");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like-object.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like-object.js
new file mode 100644 (file)
index 0000000..2f3e31b
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a.throws(function () { t(''); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like.js
new file mode 100644 (file)
index 0000000..53bd112
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a(t(''), '', "''");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable-value.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable-value.js
new file mode 100644 (file)
index 0000000..ae9bd17
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a(t(0), "0");
+       a(t(false), "false");
+       a(t(''), "");
+       a(t({}), String({}), "Object");
+       a(t(x = function () {}), String(x), "Function");
+       a(t(x = new String('raz')), String(x), "String object"); //jslint: ignore
+       a(t(x = new Date()), String(x), "Date");
+
+       a.throws(function () { t(Object.create(null)); }, TypeError, "Null prototype object");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable.js
new file mode 100644 (file)
index 0000000..4a46bb5
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a(t(), 'undefined', "Undefined");
+       a(t(null), 'null', "Null");
+       a(t(0), "0");
+       a(t(false), "false");
+       a(t(''), "");
+       a(t({}), String({}), "Object");
+       a(t(x = function () {}), String(x), "Function");
+       a(t(x = new String('raz')), String(x), "String object"); //jslint: ignore
+       a(t(x = new Date()), String(x), "Date");
+
+       a.throws(function () { t(Object.create(null)); }, TypeError, "Null prototype object");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/index.js
new file mode 100644 (file)
index 0000000..ca2bd65
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexTest = require('tad/lib/utils/index-test')
+
+  , path = require('path').resolve(__dirname, '../../../reg-exp/#');
+
+module.exports = function (t, a, d) {
+       indexTest(indexTest.readDir(path).aside(function (data) {
+               delete data.sticky;
+               delete data.unicode;
+       }))(t, a, d);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-sticky.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-sticky.js
new file mode 100644 (file)
index 0000000..e154ac2
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var re;
+       a(t.call(/raz/), false, "Normal");
+       a(t.call(/raz/g), false, "Global");
+       try { re = new RegExp('raz', 'y'); } catch (ignore) {}
+       if (!re) return;
+       a(t.call(re), true, "Sticky");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-unicode.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-unicode.js
new file mode 100644 (file)
index 0000000..2ffb9e8
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var re;
+       a(t.call(/raz/), false, "Normal");
+       a(t.call(/raz/g), false, "Global");
+       try { re = new RegExp('raz', 'u'); } catch (ignore) {}
+       if (!re) return;
+       a(t.call(re), true, "Unicode");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/implement.js
new file mode 100644 (file)
index 0000000..89825a4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/match/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/shim.js
new file mode 100644 (file)
index 0000000..5249139
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var result = ['foo'];
+       result.index = 0;
+       result.input = 'foobar';
+       a.deep(t.call(/foo/, 'foobar'), result);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/implement.js
new file mode 100644 (file)
index 0000000..c32b23a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/replace/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/shim.js
new file mode 100644 (file)
index 0000000..2b378fd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(/foo/, 'foobar', 'mar'), 'marbar');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/implement.js
new file mode 100644 (file)
index 0000000..ff1b808
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/search/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/shim.js
new file mode 100644 (file)
index 0000000..596bcdb
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(/foo/, 'barfoo'), 3);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/implement.js
new file mode 100644 (file)
index 0000000..1cee441
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/split/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/shim.js
new file mode 100644 (file)
index 0000000..6a95cd0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t.call(/\|/, 'bar|foo'), ['bar', 'foo']);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js
new file mode 100644 (file)
index 0000000..d94e7b9
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/sticky/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js
new file mode 100644 (file)
index 0000000..9b1aa0f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/unicode/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/escape.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/escape.js
new file mode 100644 (file)
index 0000000..5b00f67
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var str = "(?:^te|er)s{2}t\\[raz]+$";
+       a(RegExp('^' + t(str) + '$').test(str), true);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/is-reg-exp.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/is-reg-exp.js
new file mode 100644 (file)
index 0000000..785ca28
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(true), false, "Boolean");
+       a(t(new Date()), false, "Date");
+       a(t(new String('raz')), false, "String object");
+       a(t({}), false, "Plain object");
+       a(t(/a/), true, "Regular expression");
+       a(t(new RegExp('a')), true, "Regular expression via constructor");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js
new file mode 100644 (file)
index 0000000..cd12cf1
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var r = /raz/;
+       a(t(r), r, "Direct");
+       r = new RegExp('foo');
+       a(t(r), r, "Constructor");
+       a.throws(function () {
+               t({});
+       }, "Object");
+       a.throws(function () {
+               t(function () {});
+       }, "Function");
+       a.throws(function () {
+               t({ exec: function () { return 20; } });
+       }, "Plain object");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..09bf336
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/@@iterator/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..3b0e0b7
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var it = t.call('r💩z');
+       a.deep(it.next(), { done: false, value: 'r' }, "#1");
+       a.deep(it.next(), { done: false, value: '💩' }, "#2");
+       a.deep(it.next(), { done: false, value: 'z' }, "#3");
+       a.deep(it.next(), { done: true, value: undefined }, "End");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/at.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/at.js
new file mode 100644 (file)
index 0000000..2447a9f
--- /dev/null
@@ -0,0 +1,97 @@
+// See tests at https://github.com/mathiasbynens/String.prototype.at
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.length, 1, "Length");
+
+       a.h1("BMP");
+       a(t.call('abc\uD834\uDF06def', -Infinity), '', "-Infinity");
+       a(t.call('abc\uD834\uDF06def', -1), '', "-1");
+       a(t.call('abc\uD834\uDF06def', -0), 'a', "-0");
+       a(t.call('abc\uD834\uDF06def', +0), 'a', "+0");
+       a(t.call('abc\uD834\uDF06def', 1), 'b', "1");
+       a(t.call('abc\uD834\uDF06def', 3), '\uD834\uDF06', "3");
+       a(t.call('abc\uD834\uDF06def', 4), '\uDF06', "4");
+       a(t.call('abc\uD834\uDF06def', 5), 'd', "5");
+       a(t.call('abc\uD834\uDF06def', 42), '', "42");
+       a(t.call('abc\uD834\uDF06def', +Infinity), '', "+Infinity");
+       a(t.call('abc\uD834\uDF06def', null), 'a', "null");
+       a(t.call('abc\uD834\uDF06def', undefined), 'a', "undefined");
+       a(t.call('abc\uD834\uDF06def'), 'a', "No argument");
+       a(t.call('abc\uD834\uDF06def', false), 'a', "false");
+       a(t.call('abc\uD834\uDF06def', NaN), 'a', "NaN");
+       a(t.call('abc\uD834\uDF06def', ''), 'a', "Empty string");
+       a(t.call('abc\uD834\uDF06def', '_'), 'a', "_");
+       a(t.call('abc\uD834\uDF06def', '1'), 'b', "'1'");
+       a(t.call('abc\uD834\uDF06def', []), 'a', "[]");
+       a(t.call('abc\uD834\uDF06def', {}), 'a', "{}");
+       a(t.call('abc\uD834\uDF06def', -0.9), 'a', "-0.9");
+       a(t.call('abc\uD834\uDF06def', 1.9), 'b', "1.9");
+       a(t.call('abc\uD834\uDF06def', 7.9), 'f', "7.9");
+       a(t.call('abc\uD834\uDF06def', Math.pow(2, 32)), '', "Big number");
+
+       a.h1("Astral symbol");
+       a(t.call('\uD834\uDF06def', -Infinity), '', "-Infinity");
+       a(t.call('\uD834\uDF06def', -1), '', "-1");
+       a(t.call('\uD834\uDF06def', -0), '\uD834\uDF06', "-0");
+       a(t.call('\uD834\uDF06def', +0), '\uD834\uDF06', "+0");
+       a(t.call('\uD834\uDF06def', 1), '\uDF06', "1");
+       a(t.call('\uD834\uDF06def', 2), 'd', "2");
+       a(t.call('\uD834\uDF06def', 3), 'e', "3");
+       a(t.call('\uD834\uDF06def', 4), 'f', "4");
+       a(t.call('\uD834\uDF06def', 42), '', "42");
+       a(t.call('\uD834\uDF06def', +Infinity), '', "+Infinity");
+       a(t.call('\uD834\uDF06def', null), '\uD834\uDF06', "null");
+       a(t.call('\uD834\uDF06def', undefined), '\uD834\uDF06', "undefined");
+       a(t.call('\uD834\uDF06def'), '\uD834\uDF06', "No arguments");
+       a(t.call('\uD834\uDF06def', false), '\uD834\uDF06', "false");
+       a(t.call('\uD834\uDF06def', NaN), '\uD834\uDF06', "NaN");
+       a(t.call('\uD834\uDF06def', ''), '\uD834\uDF06', "Empty string");
+       a(t.call('\uD834\uDF06def', '_'), '\uD834\uDF06', "_");
+       a(t.call('\uD834\uDF06def', '1'), '\uDF06', "'1'");
+
+       a.h1("Lone high surrogates");
+       a(t.call('\uD834abc', -Infinity), '', "-Infinity");
+       a(t.call('\uD834abc', -1), '',  "-1");
+       a(t.call('\uD834abc', -0), '\uD834', "-0");
+       a(t.call('\uD834abc', +0), '\uD834', "+0");
+       a(t.call('\uD834abc', 1), 'a', "1");
+       a(t.call('\uD834abc', 42), '', "42");
+       a(t.call('\uD834abc', +Infinity), '', "Infinity");
+       a(t.call('\uD834abc', null), '\uD834', "null");
+       a(t.call('\uD834abc', undefined), '\uD834', "undefined");
+       a(t.call('\uD834abc'), '\uD834', "No arguments");
+       a(t.call('\uD834abc', false), '\uD834', "false");
+       a(t.call('\uD834abc', NaN), '\uD834', "NaN");
+       a(t.call('\uD834abc', ''), '\uD834', "Empty string");
+       a(t.call('\uD834abc', '_'), '\uD834', "_");
+       a(t.call('\uD834abc', '1'), 'a', "'a'");
+
+       a.h1("Lone low surrogates");
+       a(t.call('\uDF06abc', -Infinity), '', "-Infinity");
+       a(t.call('\uDF06abc', -1), '', "-1");
+       a(t.call('\uDF06abc', -0), '\uDF06', "-0");
+       a(t.call('\uDF06abc', +0), '\uDF06', "+0");
+       a(t.call('\uDF06abc', 1), 'a', "1");
+       a(t.call('\uDF06abc', 42), '', "42");
+       a(t.call('\uDF06abc', +Infinity), '', "+Infinity");
+       a(t.call('\uDF06abc', null), '\uDF06', "null");
+       a(t.call('\uDF06abc', undefined), '\uDF06', "undefined");
+       a(t.call('\uDF06abc'), '\uDF06', "No arguments");
+       a(t.call('\uDF06abc', false), '\uDF06', "false");
+       a(t.call('\uDF06abc', NaN), '\uDF06', "NaN");
+       a(t.call('\uDF06abc', ''), '\uDF06', "Empty string");
+       a(t.call('\uDF06abc', '_'), '\uDF06', "_");
+       a(t.call('\uDF06abc', '1'), 'a', "'1'");
+
+       a.h1("Context");
+       a.throws(function () { t.call(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t.call(undefined, 4); }, TypeError,
+               "Undefined + argument");
+       a.throws(function () { t.call(null); }, TypeError, "Null");
+       a.throws(function () { t.call(null, 4); }, TypeError, "Null + argument");
+       a(t.call(42, 0), '4', "Number #1");
+       a(t.call(42, 1), '2', "Number #2");
+       a(t.call({ toString: function () { return 'abc'; } }, 2), 'c', "Object");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/camel-to-hyphen.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/camel-to-hyphen.js
new file mode 100644 (file)
index 0000000..8b47a81
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('razDwaTRzy4yFoo45My'), 'raz-dwa-t-rzy4y-foo45-my');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/capitalize.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/capitalize.js
new file mode 100644 (file)
index 0000000..fa11ff8
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('raz'), 'Raz', "Word");
+       a(t.call('BLA'), 'BLA', "Uppercase");
+       a(t.call(''), '', "Empty");
+       a(t.call('a'), 'A', "One letter");
+       a(t.call('this is a test'), 'This is a test', "Sentence");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/case-insensitive-compare.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/case-insensitive-compare.js
new file mode 100644 (file)
index 0000000..01a90c3
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call("AA", "aa"), 0, "Same");
+       a.ok(t.call("Amber", "zebra") < 0, "Less");
+       a.ok(t.call("Zebra", "amber") > 0, "Greater");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/implement.js
new file mode 100644 (file)
index 0000000..5e33cd7
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var isImplemented =
+       require('../../../../string/#/code-point-at/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/shim.js
new file mode 100644 (file)
index 0000000..0df4751
--- /dev/null
@@ -0,0 +1,81 @@
+// Taken from: https://github.com/mathiasbynens/String.prototype.codePointAt
+//             /blob/master/tests/tests.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.length, 1, "Length");
+
+       // String that starts with a BMP symbol
+       a(t.call('abc\uD834\uDF06def', ''), 0x61);
+       a(t.call('abc\uD834\uDF06def', '_'), 0x61);
+       a(t.call('abc\uD834\uDF06def'), 0x61);
+       a(t.call('abc\uD834\uDF06def', -Infinity), undefined);
+       a(t.call('abc\uD834\uDF06def', -1), undefined);
+       a(t.call('abc\uD834\uDF06def', -0), 0x61);
+       a(t.call('abc\uD834\uDF06def', 0), 0x61);
+       a(t.call('abc\uD834\uDF06def', 3), 0x1D306);
+       a(t.call('abc\uD834\uDF06def', 4), 0xDF06);
+       a(t.call('abc\uD834\uDF06def', 5), 0x64);
+       a(t.call('abc\uD834\uDF06def', 42), undefined);
+       a(t.call('abc\uD834\uDF06def', Infinity), undefined);
+       a(t.call('abc\uD834\uDF06def', Infinity), undefined);
+       a(t.call('abc\uD834\uDF06def', NaN), 0x61);
+       a(t.call('abc\uD834\uDF06def', false), 0x61);
+       a(t.call('abc\uD834\uDF06def', null), 0x61);
+       a(t.call('abc\uD834\uDF06def', undefined), 0x61);
+
+       // String that starts with an astral symbol
+       a(t.call('\uD834\uDF06def', ''), 0x1D306);
+       a(t.call('\uD834\uDF06def', '1'), 0xDF06);
+       a(t.call('\uD834\uDF06def', '_'), 0x1D306);
+       a(t.call('\uD834\uDF06def'), 0x1D306);
+       a(t.call('\uD834\uDF06def', -1), undefined);
+       a(t.call('\uD834\uDF06def', -0), 0x1D306);
+       a(t.call('\uD834\uDF06def', 0), 0x1D306);
+       a(t.call('\uD834\uDF06def', 1), 0xDF06);
+       a(t.call('\uD834\uDF06def', 42), undefined);
+       a(t.call('\uD834\uDF06def', false), 0x1D306);
+       a(t.call('\uD834\uDF06def', null), 0x1D306);
+       a(t.call('\uD834\uDF06def', undefined), 0x1D306);
+
+       // Lone high surrogates
+       a(t.call('\uD834abc', ''), 0xD834);
+       a(t.call('\uD834abc', '_'), 0xD834);
+       a(t.call('\uD834abc'), 0xD834);
+       a(t.call('\uD834abc', -1), undefined);
+       a(t.call('\uD834abc', -0), 0xD834);
+       a(t.call('\uD834abc', 0), 0xD834);
+       a(t.call('\uD834abc', false), 0xD834);
+       a(t.call('\uD834abc', NaN), 0xD834);
+       a(t.call('\uD834abc', null), 0xD834);
+       a(t.call('\uD834abc', undefined), 0xD834);
+
+       // Lone low surrogates
+       a(t.call('\uDF06abc', ''), 0xDF06);
+       a(t.call('\uDF06abc', '_'), 0xDF06);
+       a(t.call('\uDF06abc'), 0xDF06);
+       a(t.call('\uDF06abc', -1), undefined);
+       a(t.call('\uDF06abc', -0), 0xDF06);
+       a(t.call('\uDF06abc', 0), 0xDF06);
+       a(t.call('\uDF06abc', false), 0xDF06);
+       a(t.call('\uDF06abc', NaN), 0xDF06);
+       a(t.call('\uDF06abc', null), 0xDF06);
+       a(t.call('\uDF06abc', undefined), 0xDF06);
+
+       a.throws(function () { t.call(undefined); }, TypeError);
+       a.throws(function () { t.call(undefined, 4); }, TypeError);
+       a.throws(function () { t.call(null); }, TypeError);
+       a.throws(function () { t.call(null, 4); }, TypeError);
+       a(t.call(42, 0), 0x34);
+       a(t.call(42, 1), 0x32);
+       a(t.call({ toString: function () { return 'abc'; } }, 2), 0x63);
+
+       a.throws(function () { t.apply(undefined); }, TypeError);
+       a.throws(function () { t.apply(undefined, [4]); }, TypeError);
+       a.throws(function () { t.apply(null); }, TypeError);
+       a.throws(function () { t.apply(null, [4]); }, TypeError);
+       a(t.apply(42, [0]), 0x34);
+       a(t.apply(42, [1]), 0x32);
+       a(t.apply({ toString: function () { return 'abc'; } }, [2]), 0x63);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/implement.js
new file mode 100644 (file)
index 0000000..220f50d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/contains/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/shim.js
new file mode 100644 (file)
index 0000000..a0ea4db
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('raz', ''), true, "Empty");
+       a(t.call('', ''), true, "Both Empty");
+       a(t.call('raz', 'raz'), true, "Same");
+       a(t.call('razdwa', 'raz'), true, "Starts with");
+       a(t.call('razdwa', 'dwa'), true, "Ends with");
+       a(t.call('razdwa', 'zdw'), true, "In middle");
+       a(t.call('', 'raz'), false, "Something in empty");
+       a(t.call('az', 'raz'), false, "Longer");
+       a(t.call('azasdfasdf', 'azff'), false, "Not found");
+       a(t.call('razdwa', 'raz', 1), false, "Position");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/implement.js
new file mode 100644 (file)
index 0000000..93bd2dd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/ends-with/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/shim.js
new file mode 100644 (file)
index 0000000..e4b93c4
--- /dev/null
@@ -0,0 +1,16 @@
+// In some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog/
+// string/string_test.html
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('abc', ''), true, "Empty needle");
+       a(t.call('abcd', 'cd'), true, "Ends with needle");
+       a(t.call('abcd', 'abcd'), true, "Needle equals haystack");
+       a(t.call('abcd', 'ab'), false, "Doesn't end with needle");
+       a(t.call('abc', 'defg'), false, "Length trick");
+       a(t.call('razdwa', 'zd', 3), false, "Position: false");
+       a(t.call('razdwa', 'zd', 4), true, "Position: true");
+       a(t.call('razdwa', 'zd', 5), false, "Position: false #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/hyphen-to-camel.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/hyphen-to-camel.js
new file mode 100644 (file)
index 0000000..bd7ded4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('raz-dwa-t-rzy-4y-rtr4-tiu-45-pa'), 'razDwaTRzy4yRtr4Tiu45Pa');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/indent.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/indent.js
new file mode 100644 (file)
index 0000000..eb92b36
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('ra\nzz', ''), 'ra\nzz', "Empty");
+       a(t.call('ra\nzz', '\t', 3), '\t\t\tra\n\t\t\tzz', "String repeat");
+       a(t.call('ra\nzz\nsss\nfff\n', '\t'), '\tra\n\tzz\n\tsss\n\tfff\n',
+               "Multi-line");
+       a(t.call('ra\n\nzz\n', '\t'), '\tra\n\n\tzz\n', "Don't touch empty lines");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/last.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/last.js
new file mode 100644 (file)
index 0000000..ad36a21
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(''), null, "Null");
+       a(t.call('abcdef'), 'f', "String");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/_data.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/_data.js
new file mode 100644 (file)
index 0000000..c741add
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t[0], 'object'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/implement.js
new file mode 100644 (file)
index 0000000..4886c9b
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/normalize/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/shim.js
new file mode 100644 (file)
index 0000000..28e27f5
--- /dev/null
@@ -0,0 +1,13 @@
+// Taken from: https://github.com/walling/unorm/blob/master/test/es6-shim.js
+
+'use strict';
+
+var str = 'äiti';
+
+module.exports = function (t, a) {
+       a(t.call(str), "\u00e4iti");
+       a(t.call(str, "NFC"), "\u00e4iti");
+       a(t.call(str, "NFD"), "a\u0308iti");
+       a(t.call(str, "NFKC"), "\u00e4iti");
+       a(t.call(str, "NFKD"), "a\u0308iti");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/pad.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/pad.js
new file mode 100644 (file)
index 0000000..28c3fca
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var partial = require('../../../function/#/partial');
+
+module.exports = {
+       Left: function (t, a) {
+               t = partial.call(t, 'x', 5);
+
+               a(t.call('yy'), 'xxxyy');
+               a(t.call(''), 'xxxxx', "Empty string");
+
+               a(t.call('yyyyy'), 'yyyyy', 'Equal length');
+               a(t.call('yyyyyyy'), 'yyyyyyy', 'Longer');
+       },
+       Right: function (t, a) {
+               t = partial.call(t, 'x', -5);
+
+               a(t.call('yy'), 'yyxxx');
+               a(t.call(''), 'xxxxx', "Empty string");
+
+               a(t.call('yyyyy'), 'yyyyy', 'Equal length');
+               a(t.call('yyyyyyy'), 'yyyyyyy', 'Longer');
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace-all.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace-all.js
new file mode 100644 (file)
index 0000000..a425c87
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('razdwatrzy', 'dwa', 'olera'), 'razoleratrzy', "Basic");
+       a(t.call('razdwatrzy', 'dwa', 'ole$&a'), 'razole$&atrzy', "Inserts");
+       a(t.call('razdwa', 'ola', 'sdfs'), 'razdwa', "No replace");
+
+       a(t.call('$raz$$dwa$trzy$', '$', '&&'), '&&raz&&&&dwa&&trzy&&', "Multi");
+       a(t.call('$raz$$dwa$$$$trzy$', '$$', '&'), '$raz&dwa&&trzy$',
+               "Multi many chars");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace.js
new file mode 100644 (file)
index 0000000..54522ed
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('razdwatrzy', 'dwa', 'olera'), 'razoleratrzy', "Basic");
+       a(t.call('razdwatrzy', 'dwa', 'ole$&a'), 'razole$&atrzy', "Inserts");
+       a(t.call('razdwa', 'ola', 'sdfs'), 'razdwa', "No replace");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/implement.js
new file mode 100644 (file)
index 0000000..7ff65a8
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/repeat/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/shim.js
new file mode 100644 (file)
index 0000000..7e0d077
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('a', 0), '', "Empty");
+       a(t.call('a', 1), 'a', "1");
+       a(t.call('\t', 5), '\t\t\t\t\t', "Whitespace");
+       a(t.call('raz', 3), 'razrazraz', "Many chars");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/implement.js
new file mode 100644 (file)
index 0000000..fc8490f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/starts-with/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/shim.js
new file mode 100644 (file)
index 0000000..e0e123b
--- /dev/null
@@ -0,0 +1,14 @@
+// Inspired and in some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog
+// /string/string_test.html
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('abc', ''), true, "Empty needle");
+       a(t.call('abcd', 'ab'), true, "Starts with needle");
+       a(t.call('abcd', 'abcd'), true, "Needle equals haystack");
+       a(t.call('abcd', 'bcde', 1), false, "Needle larger than haystack");
+       a(!t.call('abcd', 'cd'), true, "Doesn't start with needle");
+       a(t.call('abcd', 'bc', 1), true, "Position");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/format-method.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/format-method.js
new file mode 100644 (file)
index 0000000..bb5561e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       t = t({ a: 'A', aa: 'B', ab: 'C', b: 'D',
+               c: function () { return ++this.a; } });
+       a(t.call({ a: 0 }, ' %a%aab%abb%b\\%aa%ab%c%c '), ' ABbCbD%aaC12 ');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/implement.js
new file mode 100644 (file)
index 0000000..0aceb97
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../string/from-code-point/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/shim.js
new file mode 100644 (file)
index 0000000..88cda3d
--- /dev/null
@@ -0,0 +1,47 @@
+// Taken from: https://github.com/mathiasbynens/String.fromCodePoint/blob/master
+//             /tests/tests.js
+
+'use strict';
+
+var pow = Math.pow;
+
+module.exports = function (t, a) {
+       var counter, result;
+
+       a(t.length, 1, "Length");
+       a(String.propertyIsEnumerable('fromCodePoint'), false, "Not enumerable");
+
+       a(t(''), '\0', "Empty string");
+       a(t(), '', "No arguments");
+       a(t(-0), '\0', "-0");
+       a(t(0), '\0', "0");
+       a(t(0x1D306), '\uD834\uDF06', "Unicode");
+       a(t(0x1D306, 0x61, 0x1D307), '\uD834\uDF06a\uD834\uDF07', "Complex unicode");
+       a(t(0x61, 0x62, 0x1D307), 'ab\uD834\uDF07', "Complex");
+       a(t(false), '\0', "false");
+       a(t(null), '\0', "null");
+
+       a.throws(function () { t('_'); }, RangeError, "_");
+       a.throws(function () { t(Infinity); }, RangeError, "Infinity");
+       a.throws(function () { t(-Infinity); }, RangeError, "-Infinity");
+       a.throws(function () { t(-1); }, RangeError, "-1");
+       a.throws(function () { t(0x10FFFF + 1); }, RangeError, "Range error #1");
+       a.throws(function () { t(3.14); }, RangeError, "Range error #2");
+       a.throws(function () { t(3e-2); }, RangeError, "Range error #3");
+       a.throws(function () { t(-Infinity); }, RangeError, "Range error #4");
+       a.throws(function () { t(+Infinity); }, RangeError, "Range error #5");
+       a.throws(function () { t(NaN); }, RangeError, "Range error #6");
+       a.throws(function () { t(undefined); }, RangeError, "Range error #7");
+       a.throws(function () { t({}); }, RangeError, "Range error #8");
+       a.throws(function () { t(/re/); }, RangeError, "Range error #9");
+
+       counter = pow(2, 15) * 3 / 2;
+       result = [];
+       while (--counter >= 0) result.push(0); // one code unit per symbol
+       t.apply(null, result); // must not throw
+
+       counter = pow(2, 15) * 3 / 2;
+       result = [];
+       while (--counter >= 0) result.push(0xFFFF + 1); // two code units per symbol
+       t.apply(null, result); // must not throw
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/is-string.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/is-string.js
new file mode 100644 (file)
index 0000000..32f5958
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(null), false, "Null");
+       a(t(''), true, "Empty string");
+       a(t(12), false, "Number");
+       a(t(false), false, "Boolean");
+       a(t(new Date()), false, "Date");
+       a(t(new String('raz')), true, "String object");
+       a(t('asdfaf'), true, "String");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/random-uniq.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/random-uniq.js
new file mode 100644 (file)
index 0000000..6791ac2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var isValidFormat = RegExp.prototype.test.bind(/^[a-z0-9]+$/);
+
+module.exports = function (t, a) {
+       a(typeof t(), 'string');
+       a.ok(t().length > 7);
+       a.not(t(), t());
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/implement.js
new file mode 100644 (file)
index 0000000..59416de
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../string/raw/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/shim.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/shim.js
new file mode 100644 (file)
index 0000000..025ed78
--- /dev/null
@@ -0,0 +1,15 @@
+// Partially taken from:
+// https://github.com/paulmillr/es6-shim/blob/master/test/string.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       var callSite = [];
+
+       callSite.raw = ["The total is ", " ($", " with tax)"];
+       a(t(callSite, '{total}', '{total * 1.01}'),
+               'The total is {total} (${total * 1.01} with tax)');
+
+       callSite.raw = [];
+       a(t(callSite, '{total}', '{total * 1.01}'), '');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js
new file mode 100644 (file)
index 0000000..6dc1543
--- /dev/null
@@ -0,0 +1,40 @@
+'use strict';
+
+var setPrototypeOf = require('es5-ext/object/set-prototype-of')
+  , d              = require('d')
+  , Iterator       = require('../')
+  , validIterable  = require('../valid-iterable')
+
+  , push = Array.prototype.push
+  , defineProperties = Object.defineProperties
+  , IteratorChain;
+
+IteratorChain = function (iterators) {
+       defineProperties(this, {
+               __iterators__: d('', iterators),
+               __current__: d('w', iterators.shift())
+       });
+};
+if (setPrototypeOf) setPrototypeOf(IteratorChain, Iterator);
+
+IteratorChain.prototype = Object.create(Iterator.prototype, {
+       constructor: d(IteratorChain),
+       next: d(function () {
+               var result;
+               if (!this.__current__) return { done: true, value: undefined };
+               result = this.__current__.next();
+               while (result.done) {
+                       this.__current__ = this.__iterators__.shift();
+                       if (!this.__current__) return { done: true, value: undefined };
+                       result = this.__current__.next();
+               }
+               return result;
+       })
+});
+
+module.exports = function () {
+       var iterators = [this];
+       push.apply(iterators, arguments);
+       iterators.forEach(validIterable);
+       return new IteratorChain(iterators);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.lint b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.lint
new file mode 100644 (file)
index 0000000..cf54d81
--- /dev/null
@@ -0,0 +1,11 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.npmignore b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.travis.yml b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.travis.yml
new file mode 100644 (file)
index 0000000..02c277c
--- /dev/null
@@ -0,0 +1,11 @@
+language: node_js
+node_js:
+  - 0.8
+  - 0.10
+  - 0.11
+
+notifications:
+  email:
+    - medikoo+es6-iterator@medikoo.com
+
+script: "npm test && npm run lint"
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/CHANGES b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/CHANGES
new file mode 100644 (file)
index 0000000..a2d1ec7
--- /dev/null
@@ -0,0 +1,28 @@
+v0.1.3  --  2015.02.02
+* Update dependencies
+* Fix spelling of LICENSE
+
+v0.1.2  --  2014.11.19
+* Optimise internal `_next` to not verify internal's list length at all times
+  (#2 thanks @RReverser)
+* Fix documentation examples
+* Configure lint scripts
+
+v0.1.1  --  2014.04.29
+* Fix es6-symbol dependency version
+
+v0.1.0  --  2014.04.29
+* Assure strictly npm hosted dependencies
+* Remove sparse arrays dedicated handling (as per spec)
+* Add: isIterable, validIterable and chain (method)
+* Remove toArray, it's addressed by Array.from (polyfil can be found in es5-ext/array/from)
+* Add break possiblity to 'forOf' via 'doBreak' function argument
+* Provide dedicated iterator for array-likes (ArrayIterator) and for strings (StringIterator)
+* Provide @@toStringTag symbol
+* When available rely on @@iterator symbol
+* Remove 32bit integer maximum list length restriction
+* Improve Iterator internals
+* Update to use latest version of dependencies
+
+v0.0.0  --  2013.10.12
+Initial (dev version)
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/LICENSE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/LICENSE
new file mode 100644 (file)
index 0000000..04724a3
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/README.md
new file mode 100644 (file)
index 0000000..288373d
--- /dev/null
@@ -0,0 +1,148 @@
+# es6-iterator
+## ECMAScript 6 Iterator interface
+
+### Installation
+
+       $ npm install es6-iterator
+       
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+## API
+
+### Constructors
+
+#### Iterator(list) _(es6-iterator)_
+
+Abstract Iterator interface. Meant for extensions and not to be used on its own.
+
+Accepts any _list_ object (technically object with numeric _length_ property).
+
+_Mind it doesn't iterate strings properly, for that use dedicated [StringIterator](#string-iterator)_
+
+```javascript
+var Iterator = require('es6-iterator')
+var iterator = new Iterator([1, 2, 3]);
+
+iterator.next(); // { value: 1, done: false }
+iterator.next(); // { value: 2, done: false }
+iterator.next(); // { value: 3, done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+
+#### ArrayIterator(arrayLike[, kind]) _(es6-iterator/array)_
+
+Dedicated for arrays and array-likes. Supports three iteration kinds:
+* __value__ _(default)_ - Iterates values
+* __key__ - Iterates indexes
+* __key+value__ - Iterates keys and indexes, each iteration value is in _[key, value]_ form.
+
+
+```javascript
+var ArrayIterator = require('es6-iterator/array')
+var iterator = new ArrayIterator([1, 2, 3], 'key+value');
+
+iterator.next(); // { value: [0, 1], done: false }
+iterator.next(); // { value: [1, 2], done: false }
+iterator.next(); // { value: [2, 3], done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+May also be used for _arguments_ objects:
+
+```javascript
+(function () {
+  var iterator = new ArrayIterator(arguments);
+
+  iterator.next(); // { value: 1, done: false }
+  iterator.next(); // { value: 2, done: false }
+  iterator.next(); // { value: 3, done: false }
+  iterator.next(); // { value: undefined, done: true }
+}(1, 2, 3));
+```
+
+#### StringIterator(str) _(es6-iterator/string)_
+
+Assures proper iteration over unicode symbols.  
+See: http://mathiasbynens.be/notes/javascript-unicode
+
+```javascript
+var StringIterator = require('es6-iterator/string');
+var iterator = new StringIterator('f🙈o🙉o🙊');
+
+iterator.next(); // { value: 'f', done: false }
+iterator.next(); // { value: '🙈', done: false }
+iterator.next(); // { value: 'o', done: false }
+iterator.next(); // { value: '🙉', done: false }
+iterator.next(); // { value: 'o', done: false }
+iterator.next(); // { value: '🙊', done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+### Function utilities
+
+#### forOf(iterable, callback[, thisArg]) _(es6-iterator/for-of)_
+
+Polyfill for ECMAScript 6 [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) statement.
+
+```
+var forOf = require('es6-iterator/for-of');
+var result = [];
+
+forOf('🙈🙉🙊', function (monkey) { result.push(monkey); });
+console.log(result); // ['🙈', '🙉', '🙊'];
+```
+
+Optionally you can break iteration at any point:
+
+```javascript
+var result = [];
+
+forOf([1,2,3,4]', function (val, doBreak) {
+  result.push(monkey);
+  if (val >= 3) doBreak();
+});
+console.log(result); // [1, 2, 3];
+```
+
+#### get(obj) _(es6-iterator/get)_
+
+Return iterator for any iterable object.
+
+```javascript
+var getIterator = require('es6-iterator/get');
+var iterator = get([1,2,3]);
+
+iterator.next(); // { value: 1, done: false }
+iterator.next(); // { value: 2, done: false }
+iterator.next(); // { value: 3, done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+#### isIterable(obj) _(es6-iterator/is-iterable)_
+
+Whether _obj_ is iterable
+
+```javascript
+var isIterable = require('es6-iterator/is-iterable');
+
+isIterable(null); // false
+isIterable(true); // false
+isIterable('str'); // true
+isIterable(['a', 'r', 'r']); // true
+isIterable(new ArrayIterator([])); // true
+```
+
+#### validIterable(obj) _(es6-iterator/valid-iterable)_
+
+If _obj_ is an iterable it is returned. Otherwise _TypeError_ is thrown.
+
+### Method extensions
+
+#### iterator.chain(iterator1[, …iteratorn]) _(es6-iterator/#/chain)_
+
+Chain multiple iterators into one.
+
+### Tests [![Build Status](https://travis-ci.org/medikoo/es6-iterator.png)](https://travis-ci.org/medikoo/es6-iterator)
+
+       $ npm test
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js
new file mode 100644 (file)
index 0000000..885ad0a
--- /dev/null
@@ -0,0 +1,30 @@
+'use strict';
+
+var setPrototypeOf = require('es5-ext/object/set-prototype-of')
+  , contains       = require('es5-ext/string/#/contains')
+  , d              = require('d')
+  , Iterator       = require('./')
+
+  , defineProperty = Object.defineProperty
+  , ArrayIterator;
+
+ArrayIterator = module.exports = function (arr, kind) {
+       if (!(this instanceof ArrayIterator)) return new ArrayIterator(arr, kind);
+       Iterator.call(this, arr);
+       if (!kind) kind = 'value';
+       else if (contains.call(kind, 'key+value')) kind = 'key+value';
+       else if (contains.call(kind, 'key')) kind = 'key';
+       else kind = 'value';
+       defineProperty(this, '__kind__', d('', kind));
+};
+if (setPrototypeOf) setPrototypeOf(ArrayIterator, Iterator);
+
+ArrayIterator.prototype = Object.create(Iterator.prototype, {
+       constructor: d(ArrayIterator),
+       _resolve: d(function (i) {
+               if (this.__kind__ === 'value') return this.__list__[i];
+               if (this.__kind__ === 'key+value') return [i, this.__list__[i]];
+               return i;
+       }),
+       toString: d(function () { return '[object Array Iterator]'; })
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js
new file mode 100644 (file)
index 0000000..111f552
--- /dev/null
@@ -0,0 +1,44 @@
+'use strict';
+
+var callable = require('es5-ext/object/valid-callable')
+  , isString = require('es5-ext/string/is-string')
+  , get      = require('./get')
+
+  , isArray = Array.isArray, call = Function.prototype.call;
+
+module.exports = function (iterable, cb/*, thisArg*/) {
+       var mode, thisArg = arguments[2], result, doBreak, broken, i, l, char, code;
+       if (isArray(iterable)) mode = 'array';
+       else if (isString(iterable)) mode = 'string';
+       else iterable = get(iterable);
+
+       callable(cb);
+       doBreak = function () { broken = true; };
+       if (mode === 'array') {
+               iterable.some(function (value) {
+                       call.call(cb, thisArg, value, doBreak);
+                       if (broken) return true;
+               });
+               return;
+       }
+       if (mode === 'string') {
+               l = iterable.length;
+               for (i = 0; i < l; ++i) {
+                       char = iterable[i];
+                       if ((i + 1) < l) {
+                               code = char.charCodeAt(0);
+                               if ((code >= 0xD800) && (code <= 0xDBFF)) char += iterable[++i];
+                       }
+                       call.call(cb, thisArg, char, doBreak);
+                       if (broken) break;
+               }
+               return;
+       }
+       result = iterable.next();
+
+       while (!result.done) {
+               call.call(cb, thisArg, result.value, doBreak);
+               if (broken) return;
+               result = iterable.next();
+       }
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js
new file mode 100644 (file)
index 0000000..38230fd
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var isString = require('es5-ext/string/is-string')
+  , ArrayIterator  = require('./array')
+  , StringIterator = require('./string')
+  , iterable       = require('./valid-iterable')
+  , iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (obj) {
+       if (typeof iterable(obj)[iteratorSymbol] === 'function') return obj[iteratorSymbol]();
+       if (isString(obj)) return new StringIterator(obj);
+       return new ArrayIterator(obj);
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js
new file mode 100644 (file)
index 0000000..10fd089
--- /dev/null
@@ -0,0 +1,90 @@
+'use strict';
+
+var clear    = require('es5-ext/array/#/clear')
+  , assign   = require('es5-ext/object/assign')
+  , callable = require('es5-ext/object/valid-callable')
+  , value    = require('es5-ext/object/valid-value')
+  , d        = require('d')
+  , autoBind = require('d/auto-bind')
+  , Symbol   = require('es6-symbol')
+
+  , defineProperty = Object.defineProperty
+  , defineProperties = Object.defineProperties
+  , Iterator;
+
+module.exports = Iterator = function (list, context) {
+       if (!(this instanceof Iterator)) return new Iterator(list, context);
+       defineProperties(this, {
+               __list__: d('w', value(list)),
+               __context__: d('w', context),
+               __nextIndex__: d('w', 0)
+       });
+       if (!context) return;
+       callable(context.on);
+       context.on('_add', this._onAdd);
+       context.on('_delete', this._onDelete);
+       context.on('_clear', this._onClear);
+};
+
+defineProperties(Iterator.prototype, assign({
+       constructor: d(Iterator),
+       _next: d(function () {
+               var i;
+               if (!this.__list__) return;
+               if (this.__redo__) {
+                       i = this.__redo__.shift();
+                       if (i !== undefined) return i;
+               }
+               if (this.__nextIndex__ < this.__list__.length) return this.__nextIndex__++;
+               this._unBind();
+       }),
+       next: d(function () { return this._createResult(this._next()); }),
+       _createResult: d(function (i) {
+               if (i === undefined) return { done: true, value: undefined };
+               return { done: false, value: this._resolve(i) };
+       }),
+       _resolve: d(function (i) { return this.__list__[i]; }),
+       _unBind: d(function () {
+               this.__list__ = null;
+               delete this.__redo__;
+               if (!this.__context__) return;
+               this.__context__.off('_add', this._onAdd);
+               this.__context__.off('_delete', this._onDelete);
+               this.__context__.off('_clear', this._onClear);
+               this.__context__ = null;
+       }),
+       toString: d(function () { return '[object Iterator]'; })
+}, autoBind({
+       _onAdd: d(function (index) {
+               if (index >= this.__nextIndex__) return;
+               ++this.__nextIndex__;
+               if (!this.__redo__) {
+                       defineProperty(this, '__redo__', d('c', [index]));
+                       return;
+               }
+               this.__redo__.forEach(function (redo, i) {
+                       if (redo >= index) this.__redo__[i] = ++redo;
+               }, this);
+               this.__redo__.push(index);
+       }),
+       _onDelete: d(function (index) {
+               var i;
+               if (index >= this.__nextIndex__) return;
+               --this.__nextIndex__;
+               if (!this.__redo__) return;
+               i = this.__redo__.indexOf(index);
+               if (i !== -1) this.__redo__.splice(i, 1);
+               this.__redo__.forEach(function (redo, i) {
+                       if (redo > index) this.__redo__[i] = --redo;
+               }, this);
+       }),
+       _onClear: d(function () {
+               if (this.__redo__) clear.call(this.__redo__);
+               this.__nextIndex__ = 0;
+       })
+})));
+
+defineProperty(Iterator.prototype, Symbol.iterator, d(function () {
+       return this;
+}));
+defineProperty(Iterator.prototype, Symbol.toStringTag, d('', 'Iterator'));
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js
new file mode 100644 (file)
index 0000000..bbcf104
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var isString       = require('es5-ext/string/is-string')
+  , iteratorSymbol = require('es6-symbol').iterator
+
+  , isArray = Array.isArray;
+
+module.exports = function (value) {
+       if (value == null) return false;
+       if (isArray(value)) return true;
+       if (isString(value)) return true;
+       return (typeof value[iteratorSymbol] === 'function');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json
new file mode 100644 (file)
index 0000000..b861638
--- /dev/null
@@ -0,0 +1,66 @@
+{
+  "name": "es6-iterator",
+  "version": "0.1.3",
+  "description": "Iterator abstraction based on ES6 specification",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "iterator",
+    "array",
+    "list",
+    "set",
+    "map",
+    "generator"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es6-iterator.git"
+  },
+  "dependencies": {
+    "d": "~0.1.1",
+    "es5-ext": "~0.10.5",
+    "es6-symbol": "~2.0.1"
+  },
+  "devDependencies": {
+    "event-emitter": "~0.3.3",
+    "tad": "~0.2.1",
+    "xlint": "~0.2.2",
+    "xlint-jslint-medikoo": "~0.1.2"
+  },
+  "scripts": {
+    "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+    "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "2addc362c6f139e4941cf4726eeb59e5960c5cef",
+  "bugs": {
+    "url": "https://github.com/medikoo/es6-iterator/issues"
+  },
+  "homepage": "https://github.com/medikoo/es6-iterator",
+  "_id": "es6-iterator@0.1.3",
+  "_shasum": "d6f58b8c4fc413c249b4baa19768f8e4d7c8944e",
+  "_from": "es6-iterator@>=0.1.3 <0.2.0",
+  "_npmVersion": "2.3.0",
+  "_nodeVersion": "0.11.16",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "d6f58b8c4fc413c249b4baa19768f8e4d7c8944e",
+    "tarball": "http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js
new file mode 100644 (file)
index 0000000..cdb39ea
--- /dev/null
@@ -0,0 +1,37 @@
+// Thanks @mathiasbynens
+// http://mathiasbynens.be/notes/javascript-unicode#iterating-over-symbols
+
+'use strict';
+
+var setPrototypeOf = require('es5-ext/object/set-prototype-of')
+  , d              = require('d')
+  , Iterator       = require('./')
+
+  , defineProperty = Object.defineProperty
+  , StringIterator;
+
+StringIterator = module.exports = function (str) {
+       if (!(this instanceof StringIterator)) return new StringIterator(str);
+       str = String(str);
+       Iterator.call(this, str);
+       defineProperty(this, '__length__', d('', str.length));
+
+};
+if (setPrototypeOf) setPrototypeOf(StringIterator, Iterator);
+
+StringIterator.prototype = Object.create(Iterator.prototype, {
+       constructor: d(StringIterator),
+       _next: d(function () {
+               if (!this.__list__) return;
+               if (this.__nextIndex__ < this.__length__) return this.__nextIndex__++;
+               this._unBind();
+       }),
+       _resolve: d(function (i) {
+               var char = this.__list__[i], code;
+               if (this.__nextIndex__ === this.__length__) return char;
+               code = char.charCodeAt(0);
+               if ((code >= 0xD800) && (code <= 0xDBFF)) return char + this.__list__[this.__nextIndex__++];
+               return char;
+       }),
+       toString: d(function () { return '[object String Iterator]'; })
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#/chain.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#/chain.js
new file mode 100644 (file)
index 0000000..a414c66
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var Iterator = require('../../');
+
+module.exports = function (t, a) {
+       var i1 = new Iterator(['raz', 'dwa', 'trzy'])
+         , i2 = new Iterator(['cztery', 'pięć', 'sześć'])
+         , i3 = new Iterator(['siedem', 'osiem', 'dziewięć'])
+
+         , iterator = t.call(i1, i2, i3);
+
+       a.deep(iterator.next(), { done: false, value: 'raz' }, "#1");
+       a.deep(iterator.next(), { done: false, value: 'dwa' }, "#2");
+       a.deep(iterator.next(), { done: false, value: 'trzy' }, "#3");
+       a.deep(iterator.next(), { done: false, value: 'cztery' }, "#4");
+       a.deep(iterator.next(), { done: false, value: 'pięć' }, "#5");
+       a.deep(iterator.next(), { done: false, value: 'sześć' }, "#6");
+       a.deep(iterator.next(), { done: false, value: 'siedem' }, "#7");
+       a.deep(iterator.next(), { done: false, value: 'osiem' }, "#8");
+       a.deep(iterator.next(), { done: false, value: 'dziewięć' }, "#9");
+       a.deep(iterator.next(), { done: true, value: undefined }, "Done #1");
+       a.deep(iterator.next(), { done: true, value: undefined }, "Done #2");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/array.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/array.js
new file mode 100644 (file)
index 0000000..ae7c219
--- /dev/null
@@ -0,0 +1,67 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (T) {
+       return {
+               Values: function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it;
+
+                       it = new T(x);
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.splice(1, 0, 'elo');
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "Insert");
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       x.pop();
+                       a.deep(it.next(), { done: false, value: 'pięć' }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Keys & Values": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it;
+
+                       it = new T(x, 'key+value');
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       a.deep(it.next(), { done: false, value: [0, 'raz'] }, "#1");
+                       a.deep(it.next(), { done: false, value: [1, 'dwa'] }, "#2");
+                       x.splice(1, 0, 'elo');
+                       a.deep(it.next(), { done: false, value: [2, 'dwa'] }, "Insert");
+                       a.deep(it.next(), { done: false, value: [3, 'trzy'] }, "#3");
+                       a.deep(it.next(), { done: false, value: [4, 'cztery'] }, "#4");
+                       x.pop();
+                       a.deep(it.next(), { done: false, value: [5, 'pięć'] }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               Keys: function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it;
+
+                       it = new T(x, 'key');
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       a.deep(it.next(), { done: false, value: 0 }, "#1");
+                       a.deep(it.next(), { done: false, value: 1 }, "#2");
+                       x.splice(1, 0, 'elo');
+                       a.deep(it.next(), { done: false, value: 2 }, "Insert");
+                       a.deep(it.next(), { done: false, value: 3 }, "#3");
+                       a.deep(it.next(), { done: false, value: 4 }, "#4");
+                       x.pop();
+                       a.deep(it.next(), { done: false, value: 5 }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               Sparse: function (a) {
+                       var x = new Array(6), it;
+
+                       x[2] = 'raz';
+                       x[4] = 'dwa';
+                       it = new T(x);
+                       a.deep(it.next(), { done: false, value: undefined }, "#1");
+                       a.deep(it.next(), { done: false, value: undefined }, "#2");
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#3");
+                       a.deep(it.next(), { done: false, value: undefined }, "#4");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#5");
+                       a.deep(it.next(), { done: false, value: undefined }, "#6");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               }
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/for-of.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/for-of.js
new file mode 100644 (file)
index 0000000..502e7b7
--- /dev/null
@@ -0,0 +1,35 @@
+'use strict';
+
+var ArrayIterator = require('../array')
+
+  , slice = Array.prototype.slice;
+
+module.exports = function (t, a) {
+       var i = 0, x = ['raz', 'dwa', 'trzy'], y = {}, called = 0;
+       t(x, function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Array " + i + "#");
+               a(this, y, "Array: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(x = 'foo', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Regular String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       x = ['r', '💩', 'z'];
+       t('r💩z', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Unicode String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(new ArrayIterator(x), function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Iterator " + i + "#");
+               a(this, y, "Iterator: context:  " + (i++) + "#");
+       }, y);
+
+       t(x = ['raz', 'dwa', 'trzy'], function (value, doBreak) {
+               ++called;
+               return doBreak();
+       });
+       a(called, 1, "Break");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/get.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/get.js
new file mode 100644 (file)
index 0000000..7309590
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , Iterator       = require('../');
+
+module.exports = function (t, a) {
+       var iterator;
+       a.throws(function () { t(); }, TypeError, "Null");
+       a.throws(function () { t({}); }, TypeError, "Plain object");
+       a.throws(function () { t({ length: 0 }); }, TypeError, "Array-like");
+       iterator = {};
+       iterator[iteratorSymbol] = function () { return new Iterator([]); };
+       a(t(iterator) instanceof Iterator, true, "Iterator");
+       a(String(t([])), '[object Array Iterator]', " Array");
+       a(String(t('foo')), '[object String Iterator]', "String");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/index.js
new file mode 100644 (file)
index 0000000..ea3621a
--- /dev/null
@@ -0,0 +1,99 @@
+'use strict';
+
+var ee             = require('event-emitter')
+  , iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (T) {
+       return {
+               "": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć'], it, y, z;
+
+                       it = new T(x);
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       y = it.next();
+                       a.deep(y, { done: false, value: 'raz' }, "#1");
+                       z = it.next();
+                       a.not(y, z, "Recreate result");
+                       a.deep(z, { done: false, value: 'dwa' }, "#2");
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       a.deep(it.next(), { done: false, value: 'pięć' }, "#5");
+                       a.deep(y = it.next(), { done: true, value: undefined }, "End");
+                       a.not(y, it.next(), "Recreate result on dead");
+               },
+               Emited: function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       y.emit('_add', x.push('sześć') - 1);
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       x.splice(1, 0, 'półtora');
+                       y.emit('_add', 1);
+                       a.deep(it.next(), { done: false, value: 'półtora' }, "Insert");
+                       x.splice(5, 1);
+                       y.emit('_delete', 5);
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       a.deep(it.next(), { done: false, value: 'sześć' }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Emited #2": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.splice(1, 0, 'półtora');
+                       y.emit('_add', 1);
+                       x.splice(1, 0, '1.25');
+                       y.emit('_add', 1);
+                       x.splice(0, 1);
+                       y.emit('_delete', 0);
+                       a.deep(it.next(), { done: false, value: 'półtora' }, "Insert");
+                       a.deep(it.next(), { done: false, value: '1.25' }, "Insert #2");
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       x.splice(5, 1);
+                       y.emit('_delete', 5);
+                       a.deep(it.next(), { done: false, value: 'sześć' }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Emited: Clear #1": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.length = 0;
+                       y.emit('_clear');
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Emited: Clear #2": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.length = 0;
+                       y.emit('_clear');
+                       x.push('foo');
+                       x.push('bar');
+                       a.deep(it.next(), { done: false, value: 'foo' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'bar' }, "#4");
+                       x.splice(1, 0, 'półtora');
+                       y.emit('_add', 1);
+                       x.splice(1, 0, '1.25');
+                       y.emit('_add', 1);
+                       x.splice(0, 1);
+                       y.emit('_delete', 0);
+                       a.deep(it.next(), { done: false, value: 'półtora' }, "Insert");
+                       a.deep(it.next(), { done: false, value: '1.25' }, "Insert #2");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               }
+       };
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/is-iterable.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/is-iterable.js
new file mode 100644 (file)
index 0000000..7c5c59b
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , Iterator       = require('../');
+
+module.exports = function (t, a) {
+       var iterator;
+       a(t(), false, "Undefined");
+       a(t(123), false, "Number");
+       a(t({}), false, "Plain object");
+       a(t({ length: 0 }), false, "Array-like");
+       iterator = {};
+       iterator[iteratorSymbol] = function () { return new Iterator([]); };
+       a(t(iterator), true, "Iterator");
+       a(t([]), true, "Array");
+       a(t('foo'), true, "String");
+       a(t(''), true, "Empty string");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/string.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/string.js
new file mode 100644 (file)
index 0000000..d11855f
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (T, a) {
+       var it = new T('foobar');
+
+       a(it[iteratorSymbol](), it, "@@iterator");
+       a.deep(it.next(), { done: false, value: 'f' }, "#1");
+       a.deep(it.next(), { done: false, value: 'o' }, "#2");
+       a.deep(it.next(), { done: false, value: 'o' }, "#3");
+       a.deep(it.next(), { done: false, value: 'b' }, "#4");
+       a.deep(it.next(), { done: false, value: 'a' }, "#5");
+       a.deep(it.next(), { done: false, value: 'r' }, "#6");
+       a.deep(it.next(), { done: true, value: undefined }, "End");
+
+       a.h1("Outside of BMP");
+       it = new T('r💩z');
+       a.deep(it.next(), { done: false, value: 'r' }, "#1");
+       a.deep(it.next(), { done: false, value: '💩' }, "#2");
+       a.deep(it.next(), { done: false, value: 'z' }, "#3");
+       a.deep(it.next(), { done: true, value: undefined }, "End");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/valid-iterable.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/valid-iterable.js
new file mode 100644 (file)
index 0000000..7760b01
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , Iterator       = require('../');
+
+module.exports = function (t, a) {
+       var obj;
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t({}); }, TypeError, "Plain object");
+       a.throws(function () { t({ length: 0 }); }, TypeError, "Array-like");
+       obj = {};
+       obj[iteratorSymbol] = function () { return new Iterator([]); };
+       a(t(obj), obj, "Iterator");
+       obj = [];
+       a(t(obj), obj, 'Array');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js
new file mode 100644 (file)
index 0000000..d330997
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isIterable = require('./is-iterable');
+
+module.exports = function (value) {
+       if (!isIterable(value)) throw new TypeError(value + " is not iterable");
+       return value;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.lint b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.lint
new file mode 100644 (file)
index 0000000..1851752
--- /dev/null
@@ -0,0 +1,13 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
+newcap
+vars
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.npmignore b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.travis.yml b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.travis.yml
new file mode 100644 (file)
index 0000000..afd3509
--- /dev/null
@@ -0,0 +1,9 @@
+language: node_js
+node_js:
+  - 0.8
+  - 0.10
+  - 0.11
+
+notifications:
+  email:
+    - medikoo+es6-symbol@medikoo.com
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/CHANGES b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/CHANGES
new file mode 100644 (file)
index 0000000..df8c27e
--- /dev/null
@@ -0,0 +1,34 @@
+v2.0.1  --  2015.01.28
+* Fix Symbol.prototype[Symbol.isPrimitive] implementation
+* Improve validation within Symbol.prototype.toString and
+  Symbol.prototype.valueOf
+
+v2.0.0  --  2015.01.28
+* Update up to changes in specification:
+  * Implement `for` and `keyFor`
+  * Remove `Symbol.create` and `Symbol.isRegExp`
+  * Add `Symbol.match`, `Symbol.replace`, `Symbol.search`, `Symbol.species` and
+    `Symbol.split`
+* Rename `validSymbol` to `validateSymbol`
+* Improve documentation
+* Remove dead test modules
+
+v1.0.0  --  2015.01.26
+* Fix enumerability for symbol properties set normally (e.g. obj[symbol] = value)
+* Introduce initialization via hidden constructor
+* Fix isSymbol handling of polyfill values when native Symbol is present
+* Fix spelling of LICENSE
+* Configure lint scripts
+
+v0.1.1  --  2014.10.07
+* Fix isImplemented, so it returns true in case of polyfill
+* Improve documentations
+
+v0.1.0  --  2014.04.28
+* Assure strictly npm dependencies
+* Update to use latest versions of dependencies
+* Fix implementation detection so it doesn't crash on `String(symbol)`
+* throw on `new Symbol()` (as decided by TC39)
+
+v0.0.0  --  2013.11.15
+* Initial (dev) version
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/LICENSE b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/LICENSE
new file mode 100644 (file)
index 0000000..04724a3
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.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/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/README.md
new file mode 100644 (file)
index 0000000..95d6780
--- /dev/null
@@ -0,0 +1,71 @@
+# es6-symbol
+## ECMAScript 6 Symbol polyfill
+
+For more information about symbols see following links
+- [Symbols in ECMAScript 6 by Axel Rauschmayer](http://www.2ality.com/2014/12/es6-symbols.html)
+- [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol)
+- [Specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-constructor)
+
+### Limitations
+
+Underneath it uses real string property names which can easily be retrieved, however accidental collision with other property names is unlikely.
+
+### Usage
+
+If you'd like to use native version when it exists and fallback to polyfill if it doesn't (but without implementing `Symbol` on global scope), do:
+
+```javascript
+var Symbol = require('es6-symbol');
+```
+
+If you want to make sure your environment implements `Symbol`, do:
+
+```javascript
+require('es6-symbol/implement');
+```
+
+If you strictly want to use polyfill even if native `Symbol` exists (hard to find a good reason for that), do:
+
+```javascript
+var Symbol = require('es6-symbol/polyfill');
+```
+
+#### API
+
+Best is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-objects). Still if you want quick look, follow examples:
+
+```javascript
+var Symbol = require('es6-symbol');
+
+var symbol = Symbol('My custom symbol');
+var x = {};
+
+x[symbol] = 'foo';
+console.log(x[symbol]); 'foo'
+
+// Detect iterable:
+var iterator, result;
+if (possiblyIterable[Symbol.iterator]) {
+  iterator = possiblyIterable[Symbol.iterator]();
+  result = iterator.next();
+  while(!result.done) {
+    console.log(result.value);
+    result = iterator.next();
+  }
+}
+```
+
+### Installation
+#### NPM
+
+In your project path:
+
+       $ npm install es6-symbol
+
+##### Browser
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/es6-symbol.png)](https://travis-ci.org/medikoo/es6-symbol)
+
+       $ npm test
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js
new file mode 100644 (file)
index 0000000..153edac
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(require('es5-ext/global'), 'Symbol',
+               { value: require('./polyfill'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js
new file mode 100644 (file)
index 0000000..609f1fa
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ? Symbol : require('./polyfill');
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js
new file mode 100644 (file)
index 0000000..53759f3
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function () {
+       var symbol;
+       if (typeof Symbol !== 'function') return false;
+       symbol = Symbol('test symbol');
+       try { String(symbol); } catch (e) { return false; }
+       if (typeof Symbol.iterator === 'symbol') return true;
+
+       // Return 'true' for polyfills
+       if (typeof Symbol.isConcatSpreadable !== 'object') return false;
+       if (typeof Symbol.iterator !== 'object') return false;
+       if (typeof Symbol.toPrimitive !== 'object') return false;
+       if (typeof Symbol.toStringTag !== 'object') return false;
+       if (typeof Symbol.unscopables !== 'object') return false;
+
+       return true;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js
new file mode 100644 (file)
index 0000000..a8cb8b8
--- /dev/null
@@ -0,0 +1,8 @@
+// Exports true if environment provides native `Symbol` implementation
+
+'use strict';
+
+module.exports = (function () {
+       if (typeof Symbol !== 'function') return false;
+       return (typeof Symbol.iterator === 'symbol');
+}());
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js
new file mode 100644 (file)
index 0000000..beeba2c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (x) {
+       return (x && ((typeof x === 'symbol') || (x['@@toStringTag'] === 'Symbol'))) || false;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json
new file mode 100644 (file)
index 0000000..0efffea
--- /dev/null
@@ -0,0 +1,63 @@
+{
+  "name": "es6-symbol",
+  "version": "2.0.1",
+  "description": "ECMAScript6 Symbol polyfill",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "symbol",
+    "private",
+    "property",
+    "es6",
+    "ecmascript",
+    "harmony"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es6-symbol.git"
+  },
+  "dependencies": {
+    "d": "~0.1.1",
+    "es5-ext": "~0.10.5"
+  },
+  "devDependencies": {
+    "tad": "~0.2.1",
+    "xlint": "~0.2.2",
+    "xlint-jslint-medikoo": "~0.1.2"
+  },
+  "scripts": {
+    "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+    "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "51f6938d7830269fefa38f02eb912f5472b3ccd7",
+  "bugs": {
+    "url": "https://github.com/medikoo/es6-symbol/issues"
+  },
+  "homepage": "https://github.com/medikoo/es6-symbol",
+  "_id": "es6-symbol@2.0.1",
+  "_shasum": "761b5c67cfd4f1d18afb234f691d678682cb3bf3",
+  "_from": "es6-symbol@>=2.0.1 <2.1.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "761b5c67cfd4f1d18afb234f691d678682cb3bf3",
+    "tarball": "http://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js
new file mode 100644 (file)
index 0000000..735eb67
--- /dev/null
@@ -0,0 +1,77 @@
+'use strict';
+
+var d              = require('d')
+  , validateSymbol = require('./validate-symbol')
+
+  , create = Object.create, defineProperties = Object.defineProperties
+  , defineProperty = Object.defineProperty, objPrototype = Object.prototype
+  , Symbol, HiddenSymbol, globalSymbols = create(null);
+
+var generateName = (function () {
+       var created = create(null);
+       return function (desc) {
+               var postfix = 0, name;
+               while (created[desc + (postfix || '')]) ++postfix;
+               desc += (postfix || '');
+               created[desc] = true;
+               name = '@@' + desc;
+               defineProperty(objPrototype, name, d.gs(null, function (value) {
+                       defineProperty(this, name, d(value));
+               }));
+               return name;
+       };
+}());
+
+HiddenSymbol = function Symbol(description) {
+       if (this instanceof HiddenSymbol) throw new TypeError('TypeError: Symbol is not a constructor');
+       return Symbol(description);
+};
+module.exports = Symbol = function Symbol(description) {
+       var symbol;
+       if (this instanceof Symbol) throw new TypeError('TypeError: Symbol is not a constructor');
+       symbol = create(HiddenSymbol.prototype);
+       description = (description === undefined ? '' : String(description));
+       return defineProperties(symbol, {
+               __description__: d('', description),
+               __name__: d('', generateName(description))
+       });
+};
+defineProperties(Symbol, {
+       for: d(function (key) {
+               if (globalSymbols[key]) return globalSymbols[key];
+               return (globalSymbols[key] = Symbol(String(key)));
+       }),
+       keyFor: d(function (s) {
+               var key;
+               validateSymbol(s);
+               for (key in globalSymbols) if (globalSymbols[key] === s) return key;
+       }),
+       hasInstance: d('', Symbol('hasInstance')),
+       isConcatSpreadable: d('', Symbol('isConcatSpreadable')),
+       iterator: d('', Symbol('iterator')),
+       match: d('', Symbol('match')),
+       replace: d('', Symbol('replace')),
+       search: d('', Symbol('search')),
+       species: d('', Symbol('species')),
+       split: d('', Symbol('split')),
+       toPrimitive: d('', Symbol('toPrimitive')),
+       toStringTag: d('', Symbol('toStringTag')),
+       unscopables: d('', Symbol('unscopables'))
+});
+defineProperties(HiddenSymbol.prototype, {
+       constructor: d(Symbol),
+       toString: d('', function () { return this.__name__; })
+});
+
+defineProperties(Symbol.prototype, {
+       toString: d(function () { return 'Symbol (' + validateSymbol(this).__description__ + ')'; }),
+       valueOf: d(function () { return validateSymbol(this); })
+});
+defineProperty(Symbol.prototype, Symbol.toPrimitive, d('',
+       function () { return validateSymbol(this); }));
+defineProperty(Symbol.prototype, Symbol.toStringTag, d('c', 'Symbol'));
+
+defineProperty(HiddenSymbol.prototype, Symbol.toPrimitive,
+       d('c', Symbol.prototype[Symbol.toPrimitive]));
+defineProperty(HiddenSymbol.prototype, Symbol.toStringTag,
+       d('c', Symbol.prototype[Symbol.toStringTag]));
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/implement.js
new file mode 100644 (file)
index 0000000..eb35c30
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof Symbol, 'function'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/index.js
new file mode 100644 (file)
index 0000000..62b3296
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var d = require('d')
+
+  , defineProperty = Object.defineProperty;
+
+module.exports = function (T, a) {
+       var symbol = T('test'), x = {};
+       defineProperty(x, symbol, d('foo'));
+       a(x.test, undefined, "Name");
+       a(x[symbol], 'foo', "Get");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-implemented.js
new file mode 100644 (file)
index 0000000..bb0d645
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var global   = require('es5-ext/global')
+  , polyfill = require('../polyfill');
+
+module.exports = function (t, a) {
+       var cache;
+       a(typeof t(), 'boolean');
+       cache = global.Symbol;
+       global.Symbol = polyfill;
+       a(t(), true);
+       if (cache === undefined) delete global.Symbol;
+       else global.Symbol = cache;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-native-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-native-implemented.js
new file mode 100644 (file)
index 0000000..df8ba03
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t, 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-symbol.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-symbol.js
new file mode 100644 (file)
index 0000000..ac24b9a
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var SymbolPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       a(t(undefined), false, "Undefined");
+       a(t(null), false, "Null");
+       a(t(true), false, "Primitive");
+       a(t('raz'), false, "String");
+       a(t({}), false, "Object");
+       a(t([]), false, "Array");
+       if (typeof Symbol !== 'undefined') {
+               a(t(Symbol()), true, "Native");
+       }
+       a(t(SymbolPoly()), true, "Polyfill");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/polyfill.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/polyfill.js
new file mode 100644 (file)
index 0000000..83fb5e9
--- /dev/null
@@ -0,0 +1,27 @@
+'use strict';
+
+var d        = require('d')
+  , isSymbol = require('../is-symbol')
+
+  , defineProperty = Object.defineProperty;
+
+module.exports = function (T, a) {
+       var symbol = T('test'), x = {};
+       defineProperty(x, symbol, d('foo'));
+       a(x.test, undefined, "Name");
+       a(x[symbol], 'foo', "Get");
+       a(x instanceof T, false);
+
+       a(isSymbol(symbol), true, "Symbol");
+       a(isSymbol(T.iterator), true, "iterator");
+       a(isSymbol(T.toStringTag), true, "toStringTag");
+
+       x = {};
+       x[symbol] = 'foo';
+       a.deep(Object.getOwnPropertyDescriptor(x, symbol), { configurable: true, enumerable: false,
+               value: 'foo', writable: true });
+       symbol = T.for('marko');
+       a(isSymbol(symbol), true);
+       a(T.for('marko'), symbol);
+       a(T.keyFor(symbol), 'marko');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/validate-symbol.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/validate-symbol.js
new file mode 100644 (file)
index 0000000..2c8f84c
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var SymbolPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       var symbol;
+       a.throws(function () { t(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.throws(function () { t(true); }, TypeError, "Primitive");
+       a.throws(function () { t('raz'); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Object");
+       a.throws(function () { t([]); }, TypeError, "Array");
+       if (typeof Symbol !== 'undefined') {
+               symbol = Symbol();
+               a(t(symbol), symbol, "Native");
+       }
+       symbol = SymbolPoly();
+       a(t(symbol), symbol, "Polyfill");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js
new file mode 100644 (file)
index 0000000..4275004
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isSymbol = require('./is-symbol');
+
+module.exports = function (value) {
+       if (!isSymbol(value)) throw new TypeError(value + " is not a symbol");
+       return value;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json
new file mode 100644 (file)
index 0000000..07973df
--- /dev/null
@@ -0,0 +1,64 @@
+{
+  "name": "es6-weak-map",
+  "version": "0.1.4",
+  "description": "ECMAScript6 WeakMap polyfill",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "map",
+    "weakmap",
+    "collection",
+    "es6",
+    "harmony",
+    "list",
+    "hash",
+    "gc"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es6-weak-map.git"
+  },
+  "dependencies": {
+    "d": "~0.1.1",
+    "es5-ext": "~0.10.6",
+    "es6-iterator": "~0.1.3",
+    "es6-symbol": "~2.0.1"
+  },
+  "devDependencies": {
+    "tad": "~0.2.2"
+  },
+  "scripts": {
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "e68802395b82a700257374c379cfaafe84ee8552",
+  "bugs": {
+    "url": "https://github.com/medikoo/es6-weak-map/issues"
+  },
+  "homepage": "https://github.com/medikoo/es6-weak-map",
+  "_id": "es6-weak-map@0.1.4",
+  "_shasum": "706cef9e99aa236ba7766c239c8b9e286ea7d228",
+  "_from": "es6-weak-map@>=0.1.2 <0.2.0",
+  "_npmVersion": "2.7.4",
+  "_nodeVersion": "0.12.2",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "706cef9e99aa236ba7766c239c8b9e286ea7d228",
+    "tarball": "http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js
new file mode 100644 (file)
index 0000000..1d15660
--- /dev/null
@@ -0,0 +1,75 @@
+'use strict';
+
+var setPrototypeOf    = require('es5-ext/object/set-prototype-of')
+  , object            = require('es5-ext/object/valid-object')
+  , value             = require('es5-ext/object/valid-value')
+  , d                 = require('d')
+  , getIterator       = require('es6-iterator/get')
+  , forOf             = require('es6-iterator/for-of')
+  , toStringTagSymbol = require('es6-symbol').toStringTag
+  , isNative          = require('./is-native-implemented')
+
+  , isArray = Array.isArray, defineProperty = Object.defineProperty, random = Math.random
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , genId, WeakMapPoly;
+
+genId = (function () {
+       var generated = Object.create(null);
+       return function () {
+               var id;
+               do { id = random().toString(36).slice(2); } while (generated[id]);
+               generated[id] = true;
+               return id;
+       };
+}());
+
+module.exports = WeakMapPoly = function (/*iterable*/) {
+       var iterable = arguments[0];
+       if (!(this instanceof WeakMapPoly)) return new WeakMapPoly(iterable);
+       if (this.__weakMapData__ !== undefined) {
+               throw new TypeError(this + " cannot be reinitialized");
+       }
+       if (iterable != null) {
+               if (!isArray(iterable)) iterable = getIterator(iterable);
+       }
+       defineProperty(this, '__weakMapData__', d('c', '$weakMap$' + genId()));
+       if (!iterable) return;
+       forOf(iterable, function (val) {
+               value(val);
+               this.set(val[0], val[1]);
+       }, this);
+};
+
+if (isNative) {
+       if (setPrototypeOf) setPrototypeOf(WeakMapPoly, WeakMap);
+       WeakMapPoly.prototype = Object.create(WeakMap.prototype, {
+               constructor: d(WeakMapPoly)
+       });
+}
+
+Object.defineProperties(WeakMapPoly.prototype, {
+       clear: d(function () {
+               defineProperty(this, '__weakMapData__', d('c', '$weakMap$' + genId()));
+       }),
+       delete: d(function (key) {
+               if (hasOwnProperty.call(object(key), this.__weakMapData__)) {
+                       delete key[this.__weakMapData__];
+                       return true;
+               }
+               return false;
+       }),
+       get: d(function (key) {
+               if (hasOwnProperty.call(object(key), this.__weakMapData__)) {
+                       return key[this.__weakMapData__];
+               }
+       }),
+       has: d(function (key) {
+               return hasOwnProperty.call(object(key), this.__weakMapData__);
+       }),
+       set: d(function (key, value) {
+               defineProperty(object(key), this.__weakMapData__, d('c', value));
+               return this;
+       }),
+       toString: d(function () { return '[object WeakMap]'; })
+});
+defineProperty(WeakMapPoly.prototype, toStringTagSymbol, d('c', 'WeakMap'));
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/implement.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/implement.js
new file mode 100644 (file)
index 0000000..860027e
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof WeakMap, 'function'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/index.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/index.js
new file mode 100644 (file)
index 0000000..9b26e4f
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (T, a) {
+       var x = {};
+       a((new T([[x, 'foo']])).get(x), 'foo');
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-native-implemented.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-native-implemented.js
new file mode 100644 (file)
index 0000000..df8ba03
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t, 'boolean'); };
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-weak-map.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-weak-map.js
new file mode 100644 (file)
index 0000000..ba8c045
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var WeakMapPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       a(t(undefined), false, "Undefined");
+       a(t(null), false, "Null");
+       a(t(true), false, "Primitive");
+       a(t('raz'), false, "String");
+       a(t({}), false, "Object");
+       a(t([]), false, "Array");
+       if (typeof WeakMap !== 'undefined') {
+               a(t(new WeakMap()), true, "Native");
+       }
+       a(t(new WeakMapPoly()), true, "Polyfill");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/polyfill.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/polyfill.js
new file mode 100644 (file)
index 0000000..1a4885b
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+module.exports = function (T, a) {
+       var x = {}, y = {}, z = {}, arr = [[x, 'raz'], [y, 'dwa']], map = new T(arr);
+
+       a(map instanceof T, true, "WeakMap");
+       a(map.has(x), true, "Has: true");
+       a(map.get(x), 'raz', "Get: contains");
+       a(map.has(z), false, "Has: false");
+       a(map.get(z), undefined, "Get: doesn't contain");
+       a(map.set(z, 'trzy'), map, "Set: return");
+       a(map.has(z), true, "Add");
+       a(map.delete({}), false, "Delete: false");
+
+       a(map.delete(x), true, "Delete: true");
+       a(map.get(x), undefined, "Get: after delete");
+       a(map.has(x), false, "Has: after delete");
+
+       a(map.has(y), true, "Has: pre clear");
+       map.clear();
+       a(map.has(y), false, "Has: after clear");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/valid-weak-map.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/valid-weak-map.js
new file mode 100644 (file)
index 0000000..a782342
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var WeakMapPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       var map;
+       a.throws(function () { t(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.throws(function () { t(true); }, TypeError, "Primitive");
+       a.throws(function () { t('raz'); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Object");
+       a.throws(function () { t([]); }, TypeError, "Array");
+       if (typeof WeakMap !== 'undefined') {
+               map = new WeakMap();
+               a(t(map), map, "Native");
+       }
+       map = new WeakMapPoly();
+       a(t(map), map, "Polyfill");
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js
new file mode 100644 (file)
index 0000000..bfb579f
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isWeakMap = require('./is-weak-map');
+
+module.exports = function (x) {
+       if (!isWeakMap(x)) throw new TypeError(x + " is not a WeakMap");
+       return x;
+};
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/LICENSE.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/README.md
new file mode 100644 (file)
index 0000000..7c450e3
--- /dev/null
@@ -0,0 +1,36 @@
+# Mixto: A simple mixin superclass [![Build Status](https://travis-ci.org/atom/mixto.png?branch=master)](https://travis-ci.org/atom/mixto)
+
+To create a mixin, subclass mixto:
+
+```coffee
+Mixin = require 'mixto'
+
+class MyMixin extends Mixin
+  @classMethod: -> console.log("foo")
+  instanceMethod: -> console.log("bar")
+```
+
+Then mix into classes with `.includeInto`:
+
+```coffee
+class MyClass
+  MyMixin.includeInto(this)
+  
+MyClass.classMethod()
+(new MyClass).instanceMethod()
+```
+
+Or extend individual objects with `.extend`:
+
+```coffee-script
+myObject = {a: 1, b: 2}
+MyMixin.extend(myObject)
+myObject.instanceMethod()
+```
+
+Or build standalone instances of your 'mixin':
+
+```
+standalone = new MyMixin
+standalone.instanceMethod()
+```
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js
new file mode 100644 (file)
index 0000000..a6fdd4f
--- /dev/null
@@ -0,0 +1,51 @@
+(function() {
+  var ExcludedClassProperties, ExcludedPrototypeProperties, Mixin, name;
+
+  module.exports = Mixin = (function() {
+    Mixin.includeInto = function(constructor) {
+      var name, value, _ref;
+      this.extend(constructor.prototype);
+      for (name in this) {
+        value = this[name];
+        if (ExcludedClassProperties.indexOf(name) === -1) {
+          if (!constructor.hasOwnProperty(name)) {
+            constructor[name] = value;
+          }
+        }
+      }
+      return (_ref = this.included) != null ? _ref.call(constructor) : void 0;
+    };
+
+    Mixin.extend = function(object) {
+      var name, _i, _len, _ref, _ref1;
+      _ref = Object.getOwnPropertyNames(this.prototype);
+      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+        name = _ref[_i];
+        if (ExcludedPrototypeProperties.indexOf(name) === -1) {
+          if (!object.hasOwnProperty(name)) {
+            object[name] = this.prototype[name];
+          }
+        }
+      }
+      return (_ref1 = this.prototype.extended) != null ? _ref1.call(object) : void 0;
+    };
+
+    function Mixin() {
+      if (typeof this.extended === "function") {
+        this.extended();
+      }
+    }
+
+    return Mixin;
+
+  })();
+
+  ExcludedClassProperties = ['__super__'];
+
+  for (name in Mixin) {
+    ExcludedClassProperties.push(name);
+  }
+
+  ExcludedPrototypeProperties = ['constructor', 'extended'];
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json
new file mode 100644 (file)
index 0000000..1eace4a
--- /dev/null
@@ -0,0 +1,66 @@
+{
+  "name": "mixto",
+  "version": "1.0.0",
+  "description": "A mixin superclass. Its subclasses have `.extend` and `.includeInto` methods to mix behavior into other objects and classes.",
+  "main": "lib/mixin",
+  "scripts": {
+    "prepublish": "grunt clean coffee lint",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/mixto"
+  },
+  "keywords": [
+    "mixin",
+    "trait"
+  ],
+  "bugs": {
+    "url": "https://github.com/atom/mixto/issues"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/mixto/raw/master/LICENSE.md"
+    }
+  ],
+  "devDependencies": {
+    "coffee-script": "~1.6.3",
+    "jasmine-focused": "~0.19.0",
+    "grunt-contrib-coffee": "~0.7.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "rimraf": "~2.2.2"
+  },
+  "author": {
+    "name": "Nathan Sobo"
+  },
+  "_id": "mixto@1.0.0",
+  "dist": {
+    "shasum": "c320ef61b52f2898f522e17d8bbc6d506d8425b6",
+    "tarball": "http://registry.npmjs.org/mixto/-/mixto-1.0.0.tgz"
+  },
+  "_from": "mixto@>=1.0.0 <2.0.0",
+  "_npmVersion": "1.3.2",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    }
+  ],
+  "directories": {},
+  "_shasum": "c320ef61b52f2898f522e17d8bbc6d506d8425b6",
+  "_resolved": "https://registry.npmjs.org/mixto/-/mixto-1.0.0.tgz",
+  "readme": "ERROR: No README data found!",
+  "homepage": "https://github.com/atom/mixto"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/LICENSE.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/README.md
new file mode 100644 (file)
index 0000000..6ef1e04
--- /dev/null
@@ -0,0 +1,80 @@
+# Property Accessors Mixin [![Build Status](https://travis-ci.org/atom/property-accessors.svg?branch=master)](https://travis-ci.org/atom/property-accessors)
+
+A mixin for defining dynamic properties.
+
+## Basic Usage
+
+To define a basic property accessor, use the `accessor` declaration. If you've
+included the mixin into a class, you define a prototype property by calling
+`@::accessor` on its prototype.
+
+```coffee
+PropertyAccessors = require 'property-accessors'
+
+class Vehicle
+  PropertyAccessors.includeInto(this)
+
+  @::accessor 'type',
+    get: ->
+      switch @doorCount
+        when 4 then 'sedan' # i know this isn't strictly accurate
+        when 2 then 'coupe'
+    set: (type) ->
+      switch type
+        when 'sedan' then @doorCount = 4
+        when 'coupe' then @doorCount = 2
+
+car = new Vehicle
+car.doorCount = 2
+car.type # => 'coupe'
+```
+
+You can define a class-level property by *extending* with the mixin rather than
+including it (which extends the prototype).
+
+```coffee
+class Vehicle
+  PropertyAccessors.extend(this)
+
+  @accessor 'vehicleCount', get: -> @allVehicles.length  
+```
+
+You can just pass a single function if you only want to define a getter:
+
+```coffee
+class Vehicle
+  PropertyAccessors.includeInto(this)
+
+  @::accessor 'type', -> # ...
+```
+
+## Fancy Usage
+
+### Lazy Accessors
+
+Lazy accessors call a function the first time a property is accessed. You are
+still free to overwrite this value by assigning the property explicitly.
+
+```coffee
+class ScienceLab
+  PropertyAccessors.includeInto(this)
+
+  @::lazyAccessor 'crazyComputation', -> computeCrazyComputation()
+```
+
+### Advised Accessors
+
+Advised accessors allow you to call code before the reading or writing of a
+property value. If a property is being assigned, your advice function is called
+with the value being assigned and the old value.
+
+```coffee
+class SpyStation
+  @advisedAccessor 'online',
+    get: -> @ensureAllSystemsNominal()
+    set: -> @ensureUserIsSpy()
+
+station = new SpyStation
+station.online = true # ensures user is a spy, then assigns true
+station.online # ensures all systems are nominal, then returns true
+```
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js
new file mode 100644 (file)
index 0000000..4cb92d8
--- /dev/null
@@ -0,0 +1,74 @@
+(function() {
+  var Mixin, PropertyAccessors, WeakMap, _ref, _ref1,
+    __hasProp = {}.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; };
+
+  Mixin = require('mixto');
+
+  WeakMap = (_ref = global.WeakMap) != null ? _ref : require('es6-weak-map');
+
+  module.exports = PropertyAccessors = (function(_super) {
+    __extends(PropertyAccessors, _super);
+
+    function PropertyAccessors() {
+      _ref1 = PropertyAccessors.__super__.constructor.apply(this, arguments);
+      return _ref1;
+    }
+
+    PropertyAccessors.prototype.accessor = function(name, definition) {
+      if (typeof definition === 'function') {
+        definition = {
+          get: definition
+        };
+      }
+      return Object.defineProperty(this, name, definition);
+    };
+
+    PropertyAccessors.prototype.advisedAccessor = function(name, definition) {
+      var getAdvice, setAdvice, values;
+      if (typeof definition === 'function') {
+        getAdvice = definition;
+      } else {
+        getAdvice = definition.get;
+        setAdvice = definition.set;
+      }
+      values = new WeakMap;
+      return this.accessor(name, {
+        get: function() {
+          if (getAdvice != null) {
+            getAdvice.call(this);
+          }
+          return values.get(this);
+        },
+        set: function(newValue) {
+          if (setAdvice != null) {
+            setAdvice.call(this, newValue, values.get(this));
+          }
+          return values.set(this, newValue);
+        }
+      });
+    };
+
+    PropertyAccessors.prototype.lazyAccessor = function(name, definition) {
+      var values;
+      values = new WeakMap;
+      return this.accessor(name, {
+        get: function() {
+          if (values.has(this)) {
+            return values.get(this);
+          } else {
+            values.set(this, definition.call(this));
+            return values.get(this);
+          }
+        },
+        set: function(value) {
+          return values.set(this, value);
+        }
+      });
+    };
+
+    return PropertyAccessors;
+
+  })(Mixin);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json
new file mode 100644 (file)
index 0000000..7c7f365
--- /dev/null
@@ -0,0 +1,75 @@
+{
+  "name": "property-accessors",
+  "version": "1.1.3",
+  "description": "A mixin for declaring property accessors",
+  "main": "lib/property-accessors",
+  "scripts": {
+    "test": "grunt test",
+    "publish": "grunt"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/property-accessors"
+  },
+  "keywords": [
+    "property",
+    "accessors",
+    "metaprogramming"
+  ],
+  "author": {
+    "name": "Nathan Sobo"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/telepath/raw/master/LICENSE.md"
+    }
+  ],
+  "bugs": {
+    "url": "https://github.com/atom/property-accessors/issues"
+  },
+  "homepage": "http://atom.github.io/property-accessors/",
+  "dependencies": {
+    "mixto": "1.x",
+    "es6-weak-map": "^0.1.2"
+  },
+  "devDependencies": {
+    "jasmine-focused": "1.x",
+    "grunt-contrib-coffee": "~0.7.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "rimraf": "~2.2.2"
+  },
+  "gitHead": "c90f096dfc8f589ecb8186cadfbfcf97dc5f5cc6",
+  "_id": "property-accessors@1.1.3",
+  "_shasum": "1dde84024631865909ef30703365680c5f928b15",
+  "_from": "property-accessors@>=1.1.0 <2.0.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "1dde84024631865909ef30703365680c5f928b15",
+    "tarball": "http://registry.npmjs.org/property-accessors/-/property-accessors-1.1.3.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/property-accessors/-/property-accessors-1.1.3.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/node_modules/emissary/package.json
new file mode 100644 (file)
index 0000000..ccd6522
--- /dev/null
@@ -0,0 +1,78 @@
+{
+  "name": "emissary",
+  "version": "1.3.3",
+  "description": "Utility mixins for subscribing to and emitting events.",
+  "main": "lib/emissary.js",
+  "scripts": {
+    "test": "grunt test",
+    "prepublish": "grunt clean lint coffee"
+  },
+  "repository": {
+    "type": "git",
+    "url": "http://github.com/atom/emissary.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/emissary/issues"
+  },
+  "homepage": "http://atom.github.io/emissary",
+  "keywords": [
+    "event-emitter",
+    "events",
+    "subscribe",
+    "subscriber"
+  ],
+  "author": {
+    "name": "Nathan Sobo"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/emissary/raw/master/LICENSE.md"
+    }
+  ],
+  "dependencies": {
+    "underscore-plus": "1.x",
+    "mixto": "1.x",
+    "property-accessors": "^1.1",
+    "es6-weak-map": "^0.1.2"
+  },
+  "devDependencies": {
+    "jasmine-focused": "1.x",
+    "grunt-contrib-coffee": "~0.7.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "rimraf": "~2.2.2"
+  },
+  "gitHead": "13170d3e1f8b1cd4396d6dceb3c3bccf0887dae2",
+  "_id": "emissary@1.3.3",
+  "_shasum": "a618d92d682b232d31111dc3625a5df661799606",
+  "_from": "emissary@>=1.2.0 <2.0.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "a618d92d682b232d31111dc3625a5df661799606",
+    "tarball": "http://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/grim/package.json
new file mode 100644 (file)
index 0000000..ffbe7dc
--- /dev/null
@@ -0,0 +1,73 @@
+{
+  "name": "grim",
+  "version": "1.4.1",
+  "description": "Log usage of deprecated methods",
+  "main": "./lib/grim",
+  "scripts": {
+    "prepublish": "grunt clean lint coffee",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/grim.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/grim/issues"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/grim/raw/master/LICENSE.md"
+    }
+  ],
+  "dependencies": {
+    "coffeestack": "^1",
+    "emissary": "^1.2.0"
+  },
+  "devDependencies": {
+    "coffee-script": "^1.7.0",
+    "jasmine-focused": "^1.0.4",
+    "grunt-contrib-coffee": "^0.9.0",
+    "grunt-cli": "^0.1.8",
+    "grunt": "^0.4.1",
+    "grunt-shell": "^0.2.2",
+    "grunt-coffeelint": "^0.0.6",
+    "rimraf": "^2.2.2",
+    "coffee-cache": "^0.2.0",
+    "temp": "^0.6.0"
+  },
+  "gitHead": "dbcb234a130aaef6af1458bfa686f65c5b97690a",
+  "homepage": "https://github.com/atom/grim",
+  "_id": "grim@1.4.1",
+  "_shasum": "bd47bf11823bbfb1fc731914fab51016bea9e677",
+  "_from": "grim@>=1.0.0 <2.0.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "probablycorey",
+      "email": "probablycorey@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "nathansobo",
+      "email": "nathan@github.com"
+    }
+  ],
+  "dist": {
+    "shasum": "bd47bf11823bbfb1fc731914fab51016bea9e677",
+    "tarball": "http://registry.npmjs.org/grim/-/grim-1.4.1.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/grim/-/grim-1.4.1.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/.bowerrc b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/.bowerrc
new file mode 100644 (file)
index 0000000..baa91a3
--- /dev/null
@@ -0,0 +1,3 @@
+{
+  "directory": "bower_components"
+}
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/.jscsrc b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/.jscsrc
new file mode 100644 (file)
index 0000000..27f14e6
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       "preset": "jquery",
+
+       "excludeFiles": [ "src/intro.js", "src/outro.js", "src/sizzle/**/*" ]
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/.npmignore b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/.npmignore
new file mode 100644 (file)
index 0000000..60368eb
--- /dev/null
@@ -0,0 +1,14 @@
+.jshintignore
+.jshintrc
+
+/.editorconfig
+/.gitattributes
+/.jscs.json
+/.mailmap
+/.travis.yml
+
+/build
+/dist/cdn
+/speed
+/test
+/Gruntfile.js
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/AUTHORS.txt b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/AUTHORS.txt
new file mode 100644 (file)
index 0000000..d0a36dd
--- /dev/null
@@ -0,0 +1,227 @@
+Authors ordered by first contribution.
+
+John Resig <jeresig@gmail.com>
+Gilles van den Hoven <gilles0181@gmail.com>
+Michael Geary <mike@geary.com>
+Stefan Petre <stefan.petre@gmail.com>
+Yehuda Katz <wycats@gmail.com>
+Corey Jewett <cj@syntheticplayground.com>
+Klaus Hartl <klaus.hartl@gmail.com>
+Franck Marcia <franck.marcia@gmail.com>
+Jörn Zaefferer <joern.zaefferer@gmail.com>
+Paul Bakaus <paul.bakaus@gmail.com>
+Brandon Aaron <brandon.aaron@gmail.com>
+Mike Alsup <malsup@gmail.com>
+Dave Methvin <dave.methvin@gmail.com>
+Ed Engelhardt <edengelhardt@gmail.com>
+Sean Catchpole <littlecooldude@gmail.com>
+Paul Mclanahan <pmclanahan@gmail.com>
+David Serduke <davidserduke@gmail.com>
+Richard D. Worth <rdworth@gmail.com>
+Scott González <scott.gonzalez@gmail.com>
+Ariel Flesler <aflesler@gmail.com>
+Jon Evans <jon@springyweb.com>
+TJ Holowaychuk <tj@vision-media.ca>
+Michael Bensoussan <mickey@seesmic.com>
+Robert Katić <robert.katic@gmail.com>
+Louis-Rémi Babé <lrbabe@gmail.com>
+Earle Castledine <mrspeaker@gmail.com>
+Damian Janowski <damian.janowski@gmail.com>
+Rich Dougherty <rich@rd.gen.nz>
+Kim Dalsgaard <kim@kimdalsgaard.com>
+Andrea Giammarchi <andrea.giammarchi@gmail.com>
+Mark Gibson <jollytoad@gmail.com>
+Karl Swedberg <kswedberg@gmail.com>
+Justin Meyer <justinbmeyer@gmail.com>
+Ben Alman <cowboy@rj3.net>
+James Padolsey <cla@padolsey.net>
+David Petersen <public@petersendidit.com>
+Batiste Bieler <batiste@gmail.com>
+Alexander Farkas <info@corrupt-system.de>
+Rick Waldron <waldron.rick@gmail.com>
+Filipe Fortes <filipe@fortes.com>
+Neeraj Singh <neerajdotname@gmail.com>
+Paul Irish <paul.irish@gmail.com>
+Iraê Carvalho <irae@irae.pro.br>
+Matt Curry <matt@pseudocoder.com>
+Michael Monteleone <michael@michaelmonteleone.net>
+Noah Sloan <noah.sloan@gmail.com>
+Tom Viner <github@viner.tv>
+Douglas Neiner <doug@dougneiner.com>
+Adam J. Sontag <ajpiano@ajpiano.com>
+Dave Reed <dareed@microsoft.com>
+Ralph Whitbeck <ralph.whitbeck@gmail.com>
+Carl Fürstenberg <azatoth@gmail.com>
+Jacob Wright <jacwright@gmail.com>
+J. Ryan Stinnett <jryans@gmail.com>
+unknown <Igen005@.upcorp.ad.uprr.com>
+temp01 <temp01irc@gmail.com>
+Heungsub Lee <h@subl.ee>
+Colin Snover <github.com@zetafleet.com>
+Ryan W Tenney <ryan@10e.us>
+Pinhook <contact@pinhooklabs.com>
+Ron Otten <r.j.g.otten@gmail.com>
+Jephte Clain <Jephte.Clain@univ-reunion.fr>
+Anton Matzneller <obhvsbypqghgc@gmail.com>
+Alex Sexton <AlexSexton@gmail.com>
+Dan Heberden <danheberden@gmail.com>
+Henri Wiechers <hwiechers@gmail.com>
+Russell Holbrook <russell.holbrook@patch.com>
+Julian Aubourg <aubourg.julian@gmail.com>
+Gianni Alessandro Chiappetta <gianni@runlevel6.org>
+Scott Jehl <scottjehl@gmail.com>
+James Burke <jrburke@gmail.com>
+Jonas Pfenniger <jonas@pfenniger.name>
+Xavi Ramirez <xavi.rmz@gmail.com>
+Jared Grippe <jared@deadlyicon.com>
+Sylvester Keil <sylvester@keil.or.at>
+Brandon Sterne <bsterne@mozilla.com>
+Mathias Bynens <mathias@qiwi.be>
+Timmy Willison <timmywillisn@gmail.com>
+Corey Frang <gnarf37@gmail.com>
+Digitalxero <digitalxero>
+Anton Kovalyov <anton@kovalyov.net>
+David Murdoch <david@davidmurdoch.com>
+Josh Varner <josh.varner@gmail.com>
+Charles McNulty <cmcnulty@kznf.com>
+Jordan Boesch <jboesch26@gmail.com>
+Jess Thrysoee <jess@thrysoee.dk>
+Michael Murray <m@murz.net>
+Lee Carpenter <elcarpie@gmail.com>
+Alexis Abril <me@alexisabril.com>
+Rob Morgan <robbym@gmail.com>
+John Firebaugh <john_firebaugh@bigfix.com>
+Sam Bisbee <sam@sbisbee.com>
+Gilmore Davidson <gilmoreorless@gmail.com>
+Brian Brennan <me@brianlovesthings.com>
+Xavier Montillet <xavierm02.net@gmail.com>
+Daniel Pihlstrom <sciolist.se@gmail.com>
+Sahab Yazdani <sahab.yazdani+github@gmail.com>
+avaly <github-com@agachi.name>
+Scott Hughes <hi@scott-hughes.me>
+Mike Sherov <mike.sherov@gmail.com>
+Greg Hazel <ghazel@gmail.com>
+Schalk Neethling <schalk@ossreleasefeed.com>
+Denis Knauf <Denis.Knauf@gmail.com>
+Timo Tijhof <krinklemail@gmail.com>
+Steen Nielsen <swinedk@gmail.com>
+Anton Ryzhov <anton@ryzhov.me>
+Shi Chuan <shichuanr@gmail.com>
+Berker Peksag <berker.peksag@gmail.com>
+Toby Brain <tobyb@freshview.com>
+Matt Mueller <mattmuelle@gmail.com>
+Justin <drakefjustin@gmail.com>
+Daniel Herman <daniel.c.herman@gmail.com>
+Oleg Gaidarenko <markelog@gmail.com>
+Richard Gibson <richard.gibson@gmail.com>
+Rafaël Blais Masson <rafbmasson@gmail.com>
+cmc3cn <59194618@qq.com>
+Joe Presbrey <presbrey@gmail.com>
+Sindre Sorhus <sindresorhus@gmail.com>
+Arne de Bree <arne@bukkie.nl>
+Vladislav Zarakovsky <vlad.zar@gmail.com>
+Andrew E Monat <amonat@gmail.com>
+Oskari <admin@o-programs.com>
+Joao Henrique de Andrade Bruni <joaohbruni@yahoo.com.br>
+tsinha <tsinha@Anthonys-MacBook-Pro.local>
+Matt Farmer <matt@frmr.me>
+Trey Hunner <treyhunner@gmail.com>
+Jason Moon <jmoon@socialcast.com>
+Jeffery To <jeffery.to@gmail.com>
+Kris Borchers <kris.borchers@gmail.com>
+Vladimir Zhuravlev <private.face@gmail.com>
+Jacob Thornton <jacobthornton@gmail.com>
+Chad Killingsworth <chadkillingsworth@missouristate.edu>
+Nowres Rafid <nowres.rafed@gmail.com>
+David Benjamin <davidben@mit.edu>
+Uri Gilad <antishok@gmail.com>
+Chris Faulkner <thefaulkner@gmail.com>
+Elijah Manor <elijah.manor@gmail.com>
+Daniel Chatfield <chatfielddaniel@gmail.com>
+Nikita Govorov <nikita.govorov@gmail.com>
+Wesley Walser <waw325@gmail.com>
+Mike Pennisi <mike@mikepennisi.com>
+Markus Staab <markus.staab@redaxo.de>
+Dave Riddle <david@joyvuu.com>
+Callum Macrae <callum@lynxphp.com>
+Benjamin Truyman <bentruyman@gmail.com>
+James Huston <james@jameshuston.net>
+Erick Ruiz de Chávez <erickrdch@gmail.com>
+David Bonner <dbonner@cogolabs.com>
+Akintayo Akinwunmi <aakinwunmi@judge.com>
+MORGAN <morgan@morgangraphics.com>
+Ismail Khair <ismail.khair@gmail.com>
+Carl Danley <carldanley@gmail.com>
+Mike Petrovich <michael.c.petrovich@gmail.com>
+Greg Lavallee <greglavallee@wapolabs.com>
+Daniel Gálvez <dgalvez@editablething.com>
+Sai Lung Wong <sai.wong@huffingtonpost.com>
+Tom H Fuertes <TomFuertes@gmail.com>
+Roland Eckl <eckl.roland@googlemail.com>
+Jay Merrifield <fracmak@gmail.com>
+Allen J Schmidt Jr <cobrasoft@gmail.com>
+Jonathan Sampson <jjdsampson@gmail.com>
+Marcel Greter <marcel.greter@ocbnet.ch>
+Matthias Jäggli <matthias.jaeggli@gmail.com>
+David Fox <dfoxinator@gmail.com>
+Yiming He <yiminghe@gmail.com>
+Devin Cooper <cooper.semantics@gmail.com>
+Paul Ramos <paul.b.ramos@gmail.com>
+Rod Vagg <rod@vagg.org>
+Bennett Sorbo <bsorbo@gmail.com>
+Sebastian Burkhard <sebi.burkhard@gmail.com>
+Zachary Adam Kaplan <razic@viralkitty.com>
+nanto_vi <nanto@moon.email.ne.jp>
+nanto <nanto@moon.email.ne.jp>
+Danil Somsikov <danilasomsikov@gmail.com>
+Ryunosuke SATO <tricknotes.rs@gmail.com>
+Jean Boussier <jean.boussier@gmail.com>
+Adam Coulombe <me@adam.co>
+Andrew Plummer <plummer.andrew@gmail.com>
+Mark Raddatz <mraddatz@gmail.com>
+Isaac Z. Schlueter <i@izs.me>
+Karl Sieburg <ksieburg@yahoo.com>
+Pascal Borreli <pascal@borreli.com>
+Nguyen Phuc Lam <ruado1987@gmail.com>
+Dmitry Gusev <dmitry.gusev@gmail.com>
+Michał Gołębiowski <m.goleb@gmail.com>
+Li Xudong <istonelee@gmail.com>
+Steven Benner <admin@stevenbenner.com>
+Tom H Fuertes <tomfuertes@gmail.com>
+Renato Oliveira dos Santos <ros3@cin.ufpe.br>
+ros3cin <ros3@cin.ufpe.br>
+Jason Bedard <jason+jquery@jbedard.ca>
+Kyle Robinson Young <kyle@dontkry.com>
+Chris Talkington <chris@talkingtontech.com>
+Eddie Monge <eddie@eddiemonge.com>
+Terry Jones <terry@jon.es>
+Jason Merino <jasonmerino@gmail.com>
+Jeremy Dunck <jdunck@gmail.com>
+Chris Price <price.c@gmail.com>
+Guy Bedford <guybedford@gmail.com>
+Amey Sakhadeo <me@ameyms.com>
+Mike Sidorov <mikes.ekb@gmail.com>
+Anthony Ryan <anthonyryan1@gmail.com>
+Dominik D. Geyer <dominik.geyer@gmail.com>
+George Kats <katsgeorgeek@gmail.com>
+Lihan Li <frankieteardrop@gmail.com>
+Ronny Springer <springer.ronny@gmail.com>
+Chris Antaki <ChrisAntaki@gmail.com>
+Marian Sollmann <marian.sollmann@cargomedia.ch>
+njhamann <njhamann@gmail.com>
+Ilya Kantor <iliakan@gmail.com>
+David Hong <d.hong@me.com>
+John Paul <john@johnkpaul.com>
+Jakob Stoeck <jakob@pokermania.de>
+Christopher Jones <chris@cjqed.com>
+Forbes Lindesay <forbes@lindesay.co.uk>
+S. Andrew Sheppard <andrew@wq.io>
+Leonardo Balter <leonardo.balter@gmail.com>
+Roman Reiß <me@silverwind.io>
+Benjy Cui <benjytrys@gmail.com>
+Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com>
+John Hoven <hovenj@gmail.com>
+Philip Jägenstedt <philip@foolip.org>
+Christian Kosmowski <ksmwsk@gmail.com>
+Liang Peng <poppinlp@gmail.com>
+TJ VanToll <tj.vantoll@gmail.com>
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/CONTRIBUTING.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/CONTRIBUTING.md
new file mode 100644 (file)
index 0000000..dd6b183
--- /dev/null
@@ -0,0 +1,214 @@
+# Contributing to jQuery
+
+1. [Getting Involved](#getting-involved)
+2. [Discussion](#discussion)
+3. [How To Report Bugs](#how-to-report-bugs)
+4. [Core Style Guide](#jquery-core-style-guide)
+5. [Tips For Bug Patching](#tips-for-bug-patching)
+
+
+
+## Getting Involved
+
+There are a number of ways to get involved with the development of jQuery core. Even if you've never contributed code to an Open Source project before, we're always looking for help identifying bugs, writing and reducing test cases and documentation.
+
+This is the best way to contribute to jQuery core. Please read through the full guide detailing [How to Report Bugs](#how-to-report-bugs).
+
+## Discussion
+
+### Forum and IRC
+
+The jQuery core development team frequently tracks posts on the [jQuery Development Forum](http://forum.jquery.com/developing-jquery-core). If you have longer posts or questions please feel free to post them there. If you think you've found a bug please [file it in the bug tracker](#how-to-report-bugs).
+
+Additionally most of the jQuery core development team can be found in the [#jquery-dev](http://webchat.freenode.net/?channels=jquery-dev) IRC channel on irc.freenode.net.
+
+### Weekly Status Meetings
+
+Every week (unless otherwise noted) the jQuery core dev team has a meeting to discuss the progress of current work and to bring forward possible new blocker bugs for discussion.
+
+The meeting is held in the [#jquery-meeting](http://webchat.freenode.net/?channels=jquery-meeting) IRC channel on irc.freenode.net at [Noon EST](http://www.timeanddate.com/worldclock/fixedtime.html?month=1&day=17&year=2011&hour=12&min=0&sec=0&p1=43) on Mondays.
+
+[Past Meeting Notes](https://docs.google.com/document/d/1MrLFvoxW7GMlH9KK-bwypn77cC98jUnz7sMW1rg_TP4/edit?hl=en)
+
+
+## How to Report Bugs
+
+### Make sure it is a jQuery bug
+
+Many bugs reported to our bug tracker are actually bugs in user code, not in jQuery code. Keep in mind that just because your code throws an error and the console points to a line number inside of jQuery, this does *not* mean the bug is a jQuery bug; more often than not, these errors result from providing incorrect arguments when calling a jQuery function.
+
+If you are new to jQuery, it is usually a much better idea to ask for help first in the [Using jQuery Forum](http://forum.jquery.com/using-jquery) or the [jQuery IRC channel](http://webchat.freenode.net/?channels=%23jquery). You will get much quicker support, and you will help avoid tying up the jQuery team with invalid bug reports. These same resources can also be useful if you want to confirm that your bug is indeed a bug in jQuery before filing any tickets.
+
+
+### Disable any browser extensions
+
+Make sure you have reproduced the bug with all browser extensions and add-ons disabled, as these can sometimes cause things to break in interesting and unpredictable ways. Try using incognito, stealth or anonymous browsing modes.
+
+
+### Try the latest version of jQuery
+
+Bugs in old versions of jQuery may have already been fixed. In order to avoid reporting known issues, make sure you are always testing against the [latest build](http://code.jquery.com/jquery.js).
+
+### Try an older version of jQuery
+
+Sometimes, bugs are introduced in newer versions of jQuery that do not exist in previous versions. When possible, it can be useful to try testing with an older release.
+
+### Reduce, reduce, reduce!
+
+When you are experiencing a problem, the most useful thing you can possibly do is to [reduce your code](http://webkit.org/quality/reduction.html) to the bare minimum required to reproduce the issue. This makes it *much* easier to isolate and fix the offending code. Bugs that are reported without reduced test cases take on average 9001% longer to fix than bugs that are submitted with them, so you really should try to do this if at all possible.
+
+## jQuery Core Style Guide
+
+See: [jQuery's Style Guides](http://contribute.jquery.org/style-guide/)
+
+## Tips For Bug Patching
+
+
+### Environment: localhost w/ PHP, Node & Grunt
+
+Starting in jQuery 1.8, a newly overhauled development workflow has been introduced. In this new system, we rely on node & gruntjs to automate the building and validation of source code—while you write code.
+
+The Ajax tests still depend on PHP running locally*, so make sure you have the following installed:
+
+* Some kind of localhost server program that supports PHP (any will do)
+* Node.js
+* NPM (comes with the latest version of Node.js)
+* Grunt (install with: `npm install grunt -g`
+
+
+Maintaining a list of platform specific instructions is outside of the scope of this document and there is plenty of existing documentation for the above technologies.
+
+* The PHP dependency will soon be shed in favor of an all-node solution.
+
+
+### Build a Local Copy of jQuery
+
+Create a fork of the jQuery repo on github at http://github.com/jquery/jquery
+
+Change directory to your web root directory, whatever that might be:
+
+```bash
+$ cd /path/to/your/www/root/
+```
+
+Clone your jQuery fork to work locally
+
+```bash
+$ git clone git@github.com:username/jquery.git
+```
+
+Change directory to the newly created dir jquery/
+
+```bash
+$ cd jquery
+```
+
+Add the jQuery master as a remote. I label mine "upstream"
+
+```bash
+$ git remote add upstream git://github.com/jquery/jquery.git
+```
+
+Get in the habit of pulling in the "upstream" master to stay up to date as jQuery receives new commits
+
+```bash
+$ git pull upstream master
+```
+
+Run the Grunt tools:
+
+```bash
+$ grunt && grunt watch
+```
+
+Now open the jQuery test suite in a browser at http://localhost/test. If there is a port, be sure to include it.
+
+Success! You just built and tested jQuery!
+
+
+### Fix a bug from a ticket filed at bugs.jquery.com:
+
+**NEVER write your patches to the master branch** - it gets messy (I say this from experience!)
+
+**ALWAYS USE A "TOPIC" BRANCH!** Like so (#### = the ticket #)...
+
+Make sure you start with your up-to-date master:
+
+```bash
+$ git checkout master
+```
+
+Create and checkout a new branch that includes the ticket #
+
+```bash
+$ git checkout -b bug_####
+
+# ( Explanation: this useful command will:
+# "checkout" a "-b" (branch) by the name of "bug_####"
+# or create it if it doesn't exist )
+```
+
+Now you're on branch: bug_####
+
+Determine the module/file you'll be working in...
+
+Open up the corresponding /test/unit/?????.js and add the initial failing unit tests. This may seem awkward at first, but in the long run it will make sense. To truly and efficiently patch a bug, you need to be working against that bug.
+
+Next, open the module files and make your changes
+
+Run http://localhost/test --> **ALL TESTS MUST PASS**
+
+Once you're satisfied with your patch...
+
+Stage the files to be tracked:
+
+```bash
+$ git add filename
+# (you can use "git status" to list the files you've changed)
+```
+
+
+( I recommend NEVER, EVER using "git add . " )
+
+Once you've staged all of your changed files, go ahead and commit them
+
+```bash
+$ git commit -m "Brief description of fix. Fixes #0000"
+```
+
+For a multiple line commit message, leave off the `-m "description"`.
+
+You will then be led into vi (or the text editor that you have set up) to complete your commit message.
+
+Then, push your branch with the bug fix commits to your github fork
+
+```bash
+$ git push origin -u bug_####
+```
+
+Before you tackle your next bug patch, return to the master:
+
+```bash
+$ git checkout master
+```
+
+
+
+### Test Suite Tips...
+
+During the process of writing your patch, you will run the test suite MANY times. You can speed up the process by narrowing the running test suite down to the module you are testing by either double clicking the title of the test or appending it to the url. The following examples assume you're working on a local repo, hosted on your localhost server.
+
+Example:
+
+http://localhost/test/?filter=css
+
+This will only run the "css" module tests. This will significantly speed up your development and debugging.
+
+**ALWAYS RUN THE FULL SUITE BEFORE COMMITTING AND PUSHING A PATCH!**
+
+
+### Browser support
+
+Remember that jQuery supports multiple browsers and their versions; any contributed code must work in all of them. You can refer to the [browser support page](http://jquery.com/browser-support/) for the current list of supported browsers.
+
+Note that browser support differs depending on whether you are targeting the `master` or `1.x-master` branch.
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/MIT-LICENSE.txt b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/MIT-LICENSE.txt
new file mode 100644 (file)
index 0000000..cdd31b5
--- /dev/null
@@ -0,0 +1,21 @@
+Copyright 2014 jQuery Foundation and other contributors
+http://jquery.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/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/README.md b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/README.md
new file mode 100644 (file)
index 0000000..cffa003
--- /dev/null
@@ -0,0 +1,372 @@
+[jQuery](http://jquery.com/) - New Wave JavaScript
+==================================================
+
+Contribution Guides
+--------------------------------------
+
+In the spirit of open source software development, jQuery always encourages community code contribution. To help you get started and before you jump into writing code, be sure to read these important contribution guidelines thoroughly:
+
+1. [Getting Involved](http://contribute.jquery.org/)
+2. [Core Style Guide](http://contribute.jquery.org/style-guide/js/)
+3. [Writing Code for jQuery Foundation Projects](http://contribute.jquery.org/code/)
+
+
+Environments in which to use jQuery
+--------------------------------------
+
+- [Browser support](http://jquery.com/browser-support/) differs between the master (2.x) branch and the 1.x-master branch. Specifically, 2.x does not support legacy browsers such as IE6-8. The jQuery team continues to provide support for legacy browsers on the 1.x-master branch. Use the latest 1.x release if support for those browsers is required. See [browser support](http://jquery.com/browser-support/) for more info.
+- To use jQuery in Node, browser extensions, and other non-browser environments, use only **2.x** releases. 1.x does not support these environments.
+
+
+What you need to build your own jQuery
+--------------------------------------
+
+In order to build jQuery, you need to have Node.js/npm latest and git 1.7 or later.
+(Earlier versions might work OK, but are not tested.)
+
+For Windows you have to download and install [git](http://git-scm.com/downloads) and [Node.js](http://nodejs.org/download/).
+
+Mac OS users should install [Homebrew](http://mxcl.github.com/homebrew/). Once Homebrew is installed, run `brew install git` to install git,
+and `brew install node` to install Node.js.
+
+Linux/BSD users should use their appropriate package managers to install git and Node.js, or build from source
+if you swing that way. Easy-peasy.
+
+
+How to build your own jQuery
+----------------------------
+
+Clone a copy of the main jQuery git repo by running:
+
+```bash
+git clone git://github.com/jquery/jquery.git
+```
+
+Enter the jquery directory and run the build script:
+```bash
+cd jquery && npm run build
+```
+The built version of jQuery will be put in the `dist/` subdirectory, along with the minified copy and associated map file.
+
+If you want create custom build or help with jQuery development, it would be better to install [grunt command line interface](https://github.com/gruntjs/grunt-cli) as a global package:
+
+```
+npm install -g grunt-cli
+```
+Make sure you have `grunt` installed by testing:
+```
+grunt -v
+```
+
+Now by running `grunt` command, in the jquery directory, you could build full version of jQuery, just like with `npm run build` command:
+```
+grunt
+```
+
+There are many other tasks available for jQuery Core:
+```
+grunt -help
+```
+
+### Modules
+
+Special builds can be created that exclude subsets of jQuery functionality.
+This allows for smaller custom builds when the builder is certain that those parts of jQuery are not being used.
+For example, an app that only used JSONP for `$.ajax()` and did not need to calculate offsets or positions of elements could exclude the offset and ajax/xhr modules.
+
+Any module may be excluded except for `core`, and `selector`. To exclude a module, pass its path relative to the `src` folder (without the `.js` extension).
+
+Some example modules that can be excluded are:
+
+- **ajax**: All AJAX functionality: `$.ajax()`, `$.get()`, `$.post()`, `$.ajaxSetup()`, `.load()`, transports, and ajax event shorthands such as `.ajaxStart()`.
+- **ajax/xhr**: The XMLHTTPRequest AJAX transport only.
+- **ajax/script**: The `<script>` AJAX transport only; used to retrieve scripts.
+- **ajax/jsonp**: The JSONP AJAX transport only; depends on the ajax/script transport.
+- **css**: The `.css()` method plus non-animated `.show()`, `.hide()` and `.toggle()`. Also removes **all** modules depending on css (including **effects**, **dimensions**, and **offset**).
+- **deprecated**: Methods documented as deprecated but not yet removed; currently only `.andSelf()`.
+- **dimensions**: The `.width()` and `.height()` methods, including `inner-` and `outer-` variations.
+- **effects**: The `.animate()` method and its shorthands such as `.slideUp()` or `.hide("slow")`.
+- **event**: The `.on()` and `.off()` methods and all event functionality. Also removes `event/alias`.
+- **event/alias**: All event attaching/triggering shorthands like `.click()` or `.mouseover()`.
+- **offset**: The `.offset()`, `.position()`, `.offsetParent()`, `.scrollLeft()`, and `.scrollTop()` methods.
+- **wrap**: The `.wrap()`, `.wrapAll()`, `.wrapInner()`, and `.unwrap()` methods.
+- **core/ready**: Exclude the ready module if you place your scripts at the end of the body. Any ready callbacks bound with `jQuery()` will simply be called immediately. However, `jQuery(document).ready()` will not be a function and `.on("ready", ...)` or similar will not be triggered.
+- **deferred**: Exclude jQuery.Deferred. This also removes jQuery.Callbacks. *Note* that modules that depend on jQuery.Deferred(AJAX, effects, core/ready) will not be removed and will still expect jQuery.Deferred to be there. Include your own jQuery.Deferred implementation or exclude those modules as well (`grunt custom:-deferred,-ajax,-effects,-core/ready`).
+- **exports/global**: Exclude the attachment of global jQuery variables ($ and jQuery) to the window.
+- **exports/amd**: Exclude the AMD definition.
+
+As a special case, you may also replace Sizzle by using a special flag `grunt custom:-sizzle`.
+
+- **sizzle**: The Sizzle selector engine. When this module is excluded, it is replaced by a rudimentary selector engine based on the browser's `querySelectorAll` method that does not support jQuery selector extensions or enhanced semantics. See the selector-native.js file for details.
+
+*Note*: Excluding Sizzle will also exclude all jQuery selector extensions (such as `effects/animatedSelector` and `css/hiddenVisibleSelectors`).
+
+The build process shows a message for each dependent module it excludes or includes.
+
+##### AMD name
+
+As an option, you can set the module name for jQuery's AMD definition. By default, it is set to "jquery", which plays nicely with plugins and third-party libraries, but there may be cases where you'd like to change this. Simply set the `"amd"` option:
+
+```bash
+grunt custom --amd="custom-name"
+```
+
+Or, to define anonymously, set the name to an empty string.
+
+```bash
+grunt custom --amd=""
+```
+
+#### Custom Build Examples
+
+To create a custom build of the latest stable version, first check out the version:
+
+```bash
+git pull; git checkout $(git describe --abbrev=0 --tags)
+```
+
+Then, make sure all Node dependencies are installed:
+
+```bash
+npm install
+```
+
+Create the custom build using the `grunt custom` option, listing the modules to be excluded.
+
+Exclude all **ajax** functionality:
+
+```bash
+grunt custom:-ajax
+```
+
+Excluding **css** removes modules depending on CSS: **effects**, **offset**, **dimensions**.
+
+```bash
+grunt custom:-css
+```
+
+Exclude a bunch of modules:
+
+```bash
+grunt custom:-ajax,-css,-deprecated,-dimensions,-effects,-event/alias,-offset,-wrap
+```
+
+For questions or requests regarding custom builds, please start a thread on the [Developing jQuery Core](https://forum.jquery.com/developing-jquery-core) section of the forum. Due to the combinatorics and custom nature of these builds, they are not regularly tested in jQuery's unit test process. The non-Sizzle selector engine currently does not pass unit tests because it is missing too much essential functionality.
+
+Running the Unit Tests
+--------------------------------------
+
+Make sure you have the necessary dependencies:
+
+```bash
+npm install
+```
+
+Start `grunt watch` or `npm start` to auto-build jQuery as you work:
+
+```bash
+cd jquery && grunt watch
+```
+
+
+Run the unit tests with a local server that supports PHP. Ensure that you run the site from the root directory, not the "test" directory. No database is required. Pre-configured php local servers are available for Windows and Mac. Here are some options:
+
+- Windows: [WAMP download](http://www.wampserver.com/en/)
+- Mac: [MAMP download](http://www.mamp.info/en/index.html)
+- Linux: [Setting up LAMP](https://www.linux.com/learn/tutorials/288158-easy-lamp-server-installation)
+- [Mongoose (most platforms)](http://code.google.com/p/mongoose/)
+
+
+
+
+Building to a different directory
+---------------------------------
+
+To copy the built jQuery files from `/dist` to another directory:
+
+```bash
+grunt && grunt dist:/path/to/special/location/
+```
+With this example, the output files would be:
+
+```bash
+/path/to/special/location/jquery.js
+/path/to/special/location/jquery.min.js
+```
+
+To add a permanent copy destination, create a file in `dist/` called ".destination.json". Inside the file, paste and customize the following:
+
+```json
+
+{
+  "/Absolute/path/to/other/destination": true
+}
+```
+
+Additionally, both methods can be combined.
+
+
+
+Essential Git
+-------------
+
+As the source code is handled by the Git version control system, it's useful to know some features used.
+
+### Cleaning ###
+
+If you want to purge your working directory back to the status of upstream, following commands can be used (remember everything you've worked on is gone after these):
+
+```bash
+git reset --hard upstream/master
+git clean -fdx
+```
+
+### Rebasing ###
+
+For feature/topic branches, you should always use the `--rebase` flag to `git pull`, or if you are usually handling many temporary "to be in a github pull request" branches, run following to automate this:
+
+```bash
+git config branch.autosetuprebase local
+```
+(see `man git-config` for more information)
+
+### Handling merge conflicts ###
+
+If you're getting merge conflicts when merging, instead of editing the conflicted files manually, you can use the feature
+`git mergetool`. Even though the default tool `xxdiff` looks awful/old, it's rather useful.
+
+Following are some commands that can be used there:
+
+* `Ctrl + Alt + M` - automerge as much as possible
+* `b` - jump to next merge conflict
+* `s` - change the order of the conflicted lines
+* `u` - undo a merge
+* `left mouse button` - mark a block to be the winner
+* `middle mouse button` - mark a line to be the winner
+* `Ctrl + S` - save
+* `Ctrl + Q` - quit
+
+[QUnit](http://api.qunitjs.com) Reference
+-----------------
+
+### Test methods ###
+
+```js
+expect( numAssertions );
+stop();
+start();
+```
+
+
+Note: QUnit's eventual addition of an argument to stop/start is ignored in this test suite so that start and stop can be passed as callbacks without worrying about their parameters
+
+### Test assertions ###
+
+
+```js
+ok( value, [message] );
+equal( actual, expected, [message] );
+notEqual( actual, expected, [message] );
+deepEqual( actual, expected, [message] );
+notDeepEqual( actual, expected, [message] );
+strictEqual( actual, expected, [message] );
+notStrictEqual( actual, expected, [message] );
+throws( block, [expected], [message] );
+```
+
+
+Test Suite Convenience Methods Reference (See [test/data/testinit.js](https://github.com/jquery/jquery/blob/master/test/data/testinit.js))
+------------------------------
+
+### Returns an array of elements with the given IDs ###
+
+```js
+q( ... );
+```
+
+Example:
+
+```js
+q("main", "foo", "bar");
+
+=> [ div#main, span#foo, input#bar ]
+```
+
+### Asserts that a selection matches the given IDs ###
+
+```js
+t( testName, selector, [ "array", "of", "ids" ] );
+```
+
+Example:
+
+```js
+t("Check for something", "//[a]", ["foo", "baar"]);
+```
+
+
+
+### Fires a native DOM event without going through jQuery ###
+
+```js
+fireNative( node, eventType )
+```
+
+Example:
+
+```js
+fireNative( jQuery("#elem")[0], "click" );
+```
+
+### Add random number to url to stop caching ###
+
+```js
+url( "some/url.php" );
+```
+
+Example:
+
+```js
+url("data/test.html");
+
+=> "data/test.html?10538358428943"
+
+
+url("data/test.php?foo=bar");
+
+=> "data/test.php?foo=bar&10538358345554"
+```
+
+
+### Load tests in an iframe ###
+
+Loads a given page constructing a url with fileName: `"./data/" + fileName + ".html"`
+and fires the given callback on jQuery ready (using the jQuery loading from that page)
+and passes the iFrame's jQuery to the callback.
+
+```js
+testIframe( fileName, testName, callback );
+```
+
+Callback arguments:
+
+```js
+callback( jQueryFromIFrame, iFrameWindow, iFrameDocument );
+```
+
+### Load tests in an iframe (window.iframeCallback) ###
+
+Loads a given page constructing a url with fileName: `"./data/" + fileName + ".html"`
+The given callback is fired when window.iframeCallback is called by the page.
+The arguments passed to the callback are the same as the
+arguments passed to window.iframeCallback, whatever that may be
+
+```js
+testIframeWithCallback( testName, fileName, callback );
+```
+
+Questions?
+----------
+
+If you have any questions, please feel free to ask on the
+[Developing jQuery Core forum](http://forum.jquery.com/developing-jquery-core) or in #jquery on irc.freenode.net.
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/bower.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/bower.json
new file mode 100644 (file)
index 0000000..0c80cd5
--- /dev/null
@@ -0,0 +1,28 @@
+{
+  "name": "jquery",
+  "version": "2.1.4",
+  "main": "dist/jquery.js",
+  "license": "MIT",
+  "ignore": [
+    "**/.*",
+    "build",
+    "dist/cdn",
+    "speed",
+    "test",
+    "*.md",
+    "AUTHORS.txt",
+    "Gruntfile.js",
+    "package.json"
+  ],
+  "devDependencies": {
+    "sizzle": "2.1.1-jquery.2.1.2",
+    "requirejs": "2.1.10",
+    "qunit": "1.14.0",
+    "sinon": "1.8.1"
+  },
+  "keywords": [
+    "jquery",
+    "javascript",
+    "library"
+  ]
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/dist/jquery.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/dist/jquery.js
new file mode 100644 (file)
index 0000000..eed1777
--- /dev/null
@@ -0,0 +1,9210 @@
+/*!
+ * jQuery JavaScript Library v2.1.4
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-04-28T16:01Z
+ */
+
+(function( global, factory ) {
+
+       if ( typeof module === "object" && typeof module.exports === "object" ) {
+               // For CommonJS and CommonJS-like environments where a proper `window`
+               // is present, execute the factory and get jQuery.
+               // For environments that do not have a `window` with a `document`
+               // (such as Node.js), expose a factory as module.exports.
+               // This accentuates the need for the creation of a real `window`.
+               // e.g. var jQuery = require("jquery")(window);
+               // See ticket #14549 for more info.
+               module.exports = global.document ?
+                       factory( global, true ) :
+                       function( w ) {
+                               if ( !w.document ) {
+                                       throw new Error( "jQuery requires a window with a document" );
+                               }
+                               return factory( w );
+                       };
+       } else {
+               factory( global );
+       }
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Support: Firefox 18+
+// Can't be in strict mode, several libs including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+//
+
+var arr = [];
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var support = {};
+
+
+
+var
+       // Use the correct document accordingly with window argument (sandbox)
+       document = window.document,
+
+       version = "2.1.4",
+
+       // Define a local copy of jQuery
+       jQuery = function( selector, context ) {
+               // The jQuery object is actually just the init constructor 'enhanced'
+               // Need init if jQuery is called (just allow error to be thrown if not included)
+               return new jQuery.fn.init( selector, context );
+       },
+
+       // Support: Android<4.1
+       // Make sure we trim BOM and NBSP
+       rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+       // Matches dashed string for camelizing
+       rmsPrefix = /^-ms-/,
+       rdashAlpha = /-([\da-z])/gi,
+
+       // Used by jQuery.camelCase as callback to replace()
+       fcamelCase = function( all, letter ) {
+               return letter.toUpperCase();
+       };
+
+jQuery.fn = jQuery.prototype = {
+       // The current version of jQuery being used
+       jquery: version,
+
+       constructor: jQuery,
+
+       // Start with an empty selector
+       selector: "",
+
+       // The default length of a jQuery object is 0
+       length: 0,
+
+       toArray: function() {
+               return slice.call( this );
+       },
+
+       // Get the Nth element in the matched element set OR
+       // Get the whole matched element set as a clean array
+       get: function( num ) {
+               return num != null ?
+
+                       // Return just the one element from the set
+                       ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+                       // Return all the elements in a clean array
+                       slice.call( this );
+       },
+
+       // Take an array of elements and push it onto the stack
+       // (returning the new matched element set)
+       pushStack: function( elems ) {
+
+               // Build a new jQuery matched element set
+               var ret = jQuery.merge( this.constructor(), elems );
+
+               // Add the old object onto the stack (as a reference)
+               ret.prevObject = this;
+               ret.context = this.context;
+
+               // Return the newly-formed element set
+               return ret;
+       },
+
+       // Execute a callback for every element in the matched set.
+       // (You can seed the arguments with an array of args, but this is
+       // only used internally.)
+       each: function( callback, args ) {
+               return jQuery.each( this, callback, args );
+       },
+
+       map: function( callback ) {
+               return this.pushStack( jQuery.map(this, function( elem, i ) {
+                       return callback.call( elem, i, elem );
+               }));
+       },
+
+       slice: function() {
+               return this.pushStack( slice.apply( this, arguments ) );
+       },
+
+       first: function() {
+               return this.eq( 0 );
+       },
+
+       last: function() {
+               return this.eq( -1 );
+       },
+
+       eq: function( i ) {
+               var len = this.length,
+                       j = +i + ( i < 0 ? len : 0 );
+               return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+       },
+
+       end: function() {
+               return this.prevObject || this.constructor(null);
+       },
+
+       // For internal use only.
+       // Behaves like an Array's method, not like a jQuery method.
+       push: push,
+       sort: arr.sort,
+       splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+       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;
+
+               // Skip the boolean and the target
+               target = arguments[ i ] || {};
+               i++;
+       }
+
+       // Handle case when target is a string or something (possible in deep copy)
+       if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+               target = {};
+       }
+
+       // Extend jQuery itself if only one argument is passed
+       if ( i === length ) {
+               target = this;
+               i--;
+       }
+
+       for ( ; i < length; i++ ) {
+               // Only deal with non-null/undefined values
+               if ( (options = arguments[ i ]) != 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 && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+                                       if ( copyIsArray ) {
+                                               copyIsArray = false;
+                                               clone = src && jQuery.isArray(src) ? src : [];
+
+                                       } else {
+                                               clone = src && jQuery.isPlainObject(src) ? src : {};
+                                       }
+
+                                       // Never move original objects, clone them
+                                       target[ name ] = jQuery.extend( deep, clone, copy );
+
+                               // Don't bring in undefined values
+                               } else if ( copy !== undefined ) {
+                                       target[ name ] = copy;
+                               }
+                       }
+               }
+       }
+
+       // Return the modified object
+       return target;
+};
+
+jQuery.extend({
+       // Unique for each copy of jQuery on the page
+       expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+       // Assume jQuery is ready without the ready module
+       isReady: true,
+
+       error: function( msg ) {
+               throw new Error( msg );
+       },
+
+       noop: function() {},
+
+       isFunction: function( obj ) {
+               return jQuery.type(obj) === "function";
+       },
+
+       isArray: Array.isArray,
+
+       isWindow: function( obj ) {
+               return obj != null && obj === obj.window;
+       },
+
+       isNumeric: function( obj ) {
+               // parseFloat NaNs numeric-cast false positives (null|true|false|"")
+               // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+               // subtraction forces infinities to NaN
+               // adding 1 corrects loss of precision from parseFloat (#15100)
+               return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
+       },
+
+       isPlainObject: function( obj ) {
+               // Not plain objects:
+               // - Any object or value whose internal [[Class]] property is not "[object Object]"
+               // - DOM nodes
+               // - window
+               if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+                       return false;
+               }
+
+               if ( obj.constructor &&
+                               !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
+                       return false;
+               }
+
+               // If the function hasn't returned already, we're confident that
+               // |obj| is a plain object, created by {} or constructed with new Object
+               return true;
+       },
+
+       isEmptyObject: function( obj ) {
+               var name;
+               for ( name in obj ) {
+                       return false;
+               }
+               return true;
+       },
+
+       type: function( obj ) {
+               if ( obj == null ) {
+                       return obj + "";
+               }
+               // Support: Android<4.0, iOS<6 (functionish RegExp)
+               return typeof obj === "object" || typeof obj === "function" ?
+                       class2type[ toString.call(obj) ] || "object" :
+                       typeof obj;
+       },
+
+       // Evaluates a script in a global context
+       globalEval: function( code ) {
+               var script,
+                       indirect = eval;
+
+               code = jQuery.trim( code );
+
+               if ( code ) {
+                       // If the code includes a valid, prologue position
+                       // strict mode pragma, execute code by injecting a
+                       // script tag into the document.
+                       if ( code.indexOf("use strict") === 1 ) {
+                               script = document.createElement("script");
+                               script.text = code;
+                               document.head.appendChild( script ).parentNode.removeChild( script );
+                       } else {
+                       // Otherwise, avoid the DOM node creation, insertion
+                       // and removal by using an indirect global eval
+                               indirect( code );
+                       }
+               }
+       },
+
+       // Convert dashed to camelCase; used by the css and data modules
+       // Support: IE9-11+
+       // Microsoft forgot to hump their vendor prefix (#9572)
+       camelCase: function( string ) {
+               return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+       },
+
+       nodeName: function( elem, name ) {
+               return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+       },
+
+       // args is for internal usage only
+       each: function( obj, callback, args ) {
+               var value,
+                       i = 0,
+                       length = obj.length,
+                       isArray = isArraylike( obj );
+
+               if ( args ) {
+                       if ( isArray ) {
+                               for ( ; i < length; i++ ) {
+                                       value = callback.apply( obj[ i ], args );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       } else {
+                               for ( i in obj ) {
+                                       value = callback.apply( obj[ i ], args );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       }
+
+               // A special, fast, case for the most common use of each
+               } else {
+                       if ( isArray ) {
+                               for ( ; i < length; i++ ) {
+                                       value = callback.call( obj[ i ], i, obj[ i ] );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       } else {
+                               for ( i in obj ) {
+                                       value = callback.call( obj[ i ], i, obj[ i ] );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return obj;
+       },
+
+       // Support: Android<4.1
+       trim: function( text ) {
+               return text == null ?
+                       "" :
+                       ( text + "" ).replace( rtrim, "" );
+       },
+
+       // results is for internal usage only
+       makeArray: function( arr, results ) {
+               var ret = results || [];
+
+               if ( arr != null ) {
+                       if ( isArraylike( Object(arr) ) ) {
+                               jQuery.merge( ret,
+                                       typeof arr === "string" ?
+                                       [ arr ] : arr
+                               );
+                       } else {
+                               push.call( ret, arr );
+                       }
+               }
+
+               return ret;
+       },
+
+       inArray: function( elem, arr, i ) {
+               return arr == null ? -1 : indexOf.call( arr, elem, i );
+       },
+
+       merge: function( first, second ) {
+               var len = +second.length,
+                       j = 0,
+                       i = first.length;
+
+               for ( ; j < len; j++ ) {
+                       first[ i++ ] = second[ j ];
+               }
+
+               first.length = i;
+
+               return first;
+       },
+
+       grep: function( elems, callback, invert ) {
+               var callbackInverse,
+                       matches = [],
+                       i = 0,
+                       length = elems.length,
+                       callbackExpect = !invert;
+
+               // Go through the array, only saving the items
+               // that pass the validator function
+               for ( ; i < length; i++ ) {
+                       callbackInverse = !callback( elems[ i ], i );
+                       if ( callbackInverse !== callbackExpect ) {
+                               matches.push( elems[ i ] );
+                       }
+               }
+
+               return matches;
+       },
+
+       // arg is for internal usage only
+       map: function( elems, callback, arg ) {
+               var value,
+                       i = 0,
+                       length = elems.length,
+                       isArray = isArraylike( elems ),
+                       ret = [];
+
+               // Go through the array, translating each of the items to their new values
+               if ( isArray ) {
+                       for ( ; i < length; i++ ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+
+               // Go through every key on the object,
+               } else {
+                       for ( i in elems ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+               }
+
+               // Flatten any nested arrays
+               return concat.apply( [], ret );
+       },
+
+       // A global GUID counter for objects
+       guid: 1,
+
+       // Bind a function to a context, optionally partially applying any
+       // arguments.
+       proxy: function( fn, context ) {
+               var tmp, args, proxy;
+
+               if ( typeof context === "string" ) {
+                       tmp = fn[ context ];
+                       context = fn;
+                       fn = tmp;
+               }
+
+               // Quick check to determine if target is callable, in the spec
+               // this throws a TypeError, but we will just return undefined.
+               if ( !jQuery.isFunction( fn ) ) {
+                       return undefined;
+               }
+
+               // Simulated bind
+               args = slice.call( arguments, 2 );
+               proxy = function() {
+                       return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+               };
+
+               // Set the guid of unique handler to the same of original handler, so it can be removed
+               proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+               return proxy;
+       },
+
+       now: Date.now,
+
+       // jQuery.support is not used in Core but other projects attach their
+       // properties to it so it needs to exist.
+       support: support
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+       class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+
+       // Support: iOS 8.2 (not reproducible in simulator)
+       // `in` check used to prevent JIT error (gh-2145)
+       // hasOwn isn't used here due to false negatives
+       // regarding Nodelist length in IE
+       var length = "length" in obj && obj.length,
+               type = jQuery.type( obj );
+
+       if ( type === "function" || jQuery.isWindow( obj ) ) {
+               return false;
+       }
+
+       if ( obj.nodeType === 1 && length ) {
+               return true;
+       }
+
+       return type === "array" || length === 0 ||
+               typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.2.0-pre
+ * http://sizzlejs.com/
+ *
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-12-16
+ */
+(function( window ) {
+
+var i,
+       support,
+       Expr,
+       getText,
+       isXML,
+       tokenize,
+       compile,
+       select,
+       outermostContext,
+       sortInput,
+       hasDuplicate,
+
+       // Local document vars
+       setDocument,
+       document,
+       docElem,
+       documentIsHTML,
+       rbuggyQSA,
+       rbuggyMatches,
+       matches,
+       contains,
+
+       // Instance-specific data
+       expando = "sizzle" + 1 * new Date(),
+       preferredDoc = window.document,
+       dirruns = 0,
+       done = 0,
+       classCache = createCache(),
+       tokenCache = createCache(),
+       compilerCache = createCache(),
+       sortOrder = function( a, b ) {
+               if ( a === b ) {
+                       hasDuplicate = true;
+               }
+               return 0;
+       },
+
+       // General-purpose constants
+       MAX_NEGATIVE = 1 << 31,
+
+       // Instance methods
+       hasOwn = ({}).hasOwnProperty,
+       arr = [],
+       pop = arr.pop,
+       push_native = arr.push,
+       push = arr.push,
+       slice = arr.slice,
+       // Use a stripped-down indexOf as it's faster than native
+       // http://jsperf.com/thor-indexof-vs-for/5
+       indexOf = function( list, elem ) {
+               var i = 0,
+                       len = list.length;
+               for ( ; i < len; i++ ) {
+                       if ( list[i] === elem ) {
+                               return i;
+                       }
+               }
+               return -1;
+       },
+
+       booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+       // Regular expressions
+
+       // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+       whitespace = "[\\x20\\t\\r\\n\\f]",
+       // http://www.w3.org/TR/css3-syntax/#characters
+       characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+       // Loosely modeled on CSS identifier characters
+       // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+       // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+       identifier = characterEncoding.replace( "w", "w#" ),
+
+       // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+       attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
+               // Operator (capture 2)
+               "*([*^$|!~]?=)" + whitespace +
+               // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+               "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+               "*\\]",
+
+       pseudos = ":(" + characterEncoding + ")(?:\\((" +
+               // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+               // 1. quoted (capture 3; capture 4 or capture 5)
+               "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+               // 2. simple (capture 6)
+               "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+               // 3. anything else (capture 2)
+               ".*" +
+               ")\\)|)",
+
+       // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+       rwhitespace = new RegExp( whitespace + "+", "g" ),
+       rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+       rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+       rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+       rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+       rpseudo = new RegExp( pseudos ),
+       ridentifier = new RegExp( "^" + identifier + "$" ),
+
+       matchExpr = {
+               "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+               "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+               "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+               "ATTR": new RegExp( "^" + attributes ),
+               "PSEUDO": new RegExp( "^" + pseudos ),
+               "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+                       "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+                       "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+               "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+               // For use in libraries implementing .is()
+               // We use this for POS matching in `select`
+               "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+                       whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+       },
+
+       rinputs = /^(?:input|select|textarea|button)$/i,
+       rheader = /^h\d$/i,
+
+       rnative = /^[^{]+\{\s*\[native \w/,
+
+       // Easily-parseable/retrievable ID or TAG or CLASS selectors
+       rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+       rsibling = /[+~]/,
+       rescape = /'|\\/g,
+
+       // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+       runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+       funescape = function( _, escaped, escapedWhitespace ) {
+               var high = "0x" + escaped - 0x10000;
+               // NaN means non-codepoint
+               // Support: Firefox<24
+               // Workaround erroneous numeric interpretation of +"0x"
+               return high !== high || escapedWhitespace ?
+                       escaped :
+                       high < 0 ?
+                               // BMP codepoint
+                               String.fromCharCode( high + 0x10000 ) :
+                               // Supplemental Plane codepoint (surrogate pair)
+                               String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+       },
+
+       // Used for iframes
+       // See setDocument()
+       // Removing the function wrapper causes a "Permission Denied"
+       // error in IE
+       unloadHandler = function() {
+               setDocument();
+       };
+
+// Optimize for push.apply( _, NodeList )
+try {
+       push.apply(
+               (arr = slice.call( preferredDoc.childNodes )),
+               preferredDoc.childNodes
+       );
+       // Support: Android<4.0
+       // Detect silently failing push.apply
+       arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+       push = { apply: arr.length ?
+
+               // Leverage slice if possible
+               function( target, els ) {
+                       push_native.apply( target, slice.call(els) );
+               } :
+
+               // Support: IE<9
+               // Otherwise append directly
+               function( target, els ) {
+                       var j = target.length,
+                               i = 0;
+                       // Can't trust NodeList.length
+                       while ( (target[j++] = els[i++]) ) {}
+                       target.length = j - 1;
+               }
+       };
+}
+
+function Sizzle( selector, context, results, seed ) {
+       var match, elem, m, nodeType,
+               // QSA vars
+               i, groups, old, nid, newContext, newSelector;
+
+       if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+               setDocument( context );
+       }
+
+       context = context || document;
+       results = results || [];
+       nodeType = context.nodeType;
+
+       if ( typeof selector !== "string" || !selector ||
+               nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+               return results;
+       }
+
+       if ( !seed && documentIsHTML ) {
+
+               // Try to shortcut find operations when possible (e.g., not under DocumentFragment)
+               if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+                       // Speed-up: Sizzle("#ID")
+                       if ( (m = match[1]) ) {
+                               if ( nodeType === 9 ) {
+                                       elem = context.getElementById( m );
+                                       // Check parentNode to catch when Blackberry 4.6 returns
+                                       // nodes that are no longer in the document (jQuery #6963)
+                                       if ( elem && elem.parentNode ) {
+                                               // Handle the case where IE, Opera, and Webkit return items
+                                               // by name instead of ID
+                                               if ( elem.id === m ) {
+                                                       results.push( elem );
+                                                       return results;
+                                               }
+                                       } else {
+                                               return results;
+                                       }
+                               } else {
+                                       // Context is not a document
+                                       if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+                                               contains( context, elem ) && elem.id === m ) {
+                                               results.push( elem );
+                                               return results;
+                                       }
+                               }
+
+                       // Speed-up: Sizzle("TAG")
+                       } else if ( match[2] ) {
+                               push.apply( results, context.getElementsByTagName( selector ) );
+                               return results;
+
+                       // Speed-up: Sizzle(".CLASS")
+                       } else if ( (m = match[3]) && support.getElementsByClassName ) {
+                               push.apply( results, context.getElementsByClassName( m ) );
+                               return results;
+                       }
+               }
+
+               // QSA path
+               if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+                       nid = old = expando;
+                       newContext = context;
+                       newSelector = nodeType !== 1 && selector;
+
+                       // qSA works strangely on Element-rooted queries
+                       // We can work around this by specifying an extra ID on the root
+                       // and working up from there (Thanks to Andrew Dupont for the technique)
+                       // IE 8 doesn't work on object elements
+                       if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+                               groups = tokenize( selector );
+
+                               if ( (old = context.getAttribute("id")) ) {
+                                       nid = old.replace( rescape, "\\$&" );
+                               } else {
+                                       context.setAttribute( "id", nid );
+                               }
+                               nid = "[id='" + nid + "'] ";
+
+                               i = groups.length;
+                               while ( i-- ) {
+                                       groups[i] = nid + toSelector( groups[i] );
+                               }
+                               newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
+                               newSelector = groups.join(",");
+                       }
+
+                       if ( newSelector ) {
+                               try {
+                                       push.apply( results,
+                                               newContext.querySelectorAll( newSelector )
+                                       );
+                                       return results;
+                               } catch(qsaError) {
+                               } finally {
+                                       if ( !old ) {
+                                               context.removeAttribute("id");
+                                       }
+                               }
+                       }
+               }
+       }
+
+       // All others
+       return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ *     property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *     deleting the oldest entry
+ */
+function createCache() {
+       var keys = [];
+
+       function cache( key, value ) {
+               // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+               if ( keys.push( key + " " ) > Expr.cacheLength ) {
+                       // Only keep the most recent entries
+                       delete cache[ keys.shift() ];
+               }
+               return (cache[ key + " " ] = value);
+       }
+       return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+       fn[ expando ] = true;
+       return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+       var div = document.createElement("div");
+
+       try {
+               return !!fn( div );
+       } catch (e) {
+               return false;
+       } finally {
+               // Remove from its parent by default
+               if ( div.parentNode ) {
+                       div.parentNode.removeChild( div );
+               }
+               // release memory in IE
+               div = null;
+       }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+       var arr = attrs.split("|"),
+               i = attrs.length;
+
+       while ( i-- ) {
+               Expr.attrHandle[ arr[i] ] = handler;
+       }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+       var cur = b && a,
+               diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+                       ( ~b.sourceIndex || MAX_NEGATIVE ) -
+                       ( ~a.sourceIndex || MAX_NEGATIVE );
+
+       // Use IE sourceIndex if available on both nodes
+       if ( diff ) {
+               return diff;
+       }
+
+       // Check if b follows a
+       if ( cur ) {
+               while ( (cur = cur.nextSibling) ) {
+                       if ( cur === b ) {
+                               return -1;
+                       }
+               }
+       }
+
+       return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return name === "input" && elem.type === type;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return (name === "input" || name === "button") && elem.type === type;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+       return markFunction(function( argument ) {
+               argument = +argument;
+               return markFunction(function( seed, matches ) {
+                       var j,
+                               matchIndexes = fn( [], seed.length, argument ),
+                               i = matchIndexes.length;
+
+                       // Match elements found at the specified indexes
+                       while ( i-- ) {
+                               if ( seed[ (j = matchIndexes[i]) ] ) {
+                                       seed[j] = !(matches[j] = seed[j]);
+                               }
+                       }
+               });
+       });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+       return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+       // documentElement is verified for cases where it doesn't yet exist
+       // (such as loading iframes in IE - #4833)
+       var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+       return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+       var hasCompare, parent,
+               doc = node ? node.ownerDocument || node : preferredDoc;
+
+       // If no document and documentElement is available, return
+       if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+               return document;
+       }
+
+       // Set our document
+       document = doc;
+       docElem = doc.documentElement;
+       parent = doc.defaultView;
+
+       // Support: IE>8
+       // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+       // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+       // IE6-8 do not support the defaultView property so parent will be undefined
+       if ( parent && parent !== parent.top ) {
+               // IE11 does not have attachEvent, so all must suffer
+               if ( parent.addEventListener ) {
+                       parent.addEventListener( "unload", unloadHandler, false );
+               } else if ( parent.attachEvent ) {
+                       parent.attachEvent( "onunload", unloadHandler );
+               }
+       }
+
+       /* Support tests
+       ---------------------------------------------------------------------- */
+       documentIsHTML = !isXML( doc );
+
+       /* Attributes
+       ---------------------------------------------------------------------- */
+
+       // Support: IE<8
+       // Verify that getAttribute really returns attributes and not properties
+       // (excepting IE8 booleans)
+       support.attributes = assert(function( div ) {
+               div.className = "i";
+               return !div.getAttribute("className");
+       });
+
+       /* getElement(s)By*
+       ---------------------------------------------------------------------- */
+
+       // Check if getElementsByTagName("*") returns only elements
+       support.getElementsByTagName = assert(function( div ) {
+               div.appendChild( doc.createComment("") );
+               return !div.getElementsByTagName("*").length;
+       });
+
+       // Support: IE<9
+       support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
+
+       // Support: IE<10
+       // Check if getElementById returns elements by name
+       // The broken getElementById methods don't pick up programatically-set names,
+       // so use a roundabout getElementsByName test
+       support.getById = assert(function( div ) {
+               docElem.appendChild( div ).id = expando;
+               return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+       });
+
+       // ID find and filter
+       if ( support.getById ) {
+               Expr.find["ID"] = function( id, context ) {
+                       if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+                               var m = context.getElementById( id );
+                               // Check parentNode to catch when Blackberry 4.6 returns
+                               // nodes that are no longer in the document #6963
+                               return m && m.parentNode ? [ m ] : [];
+                       }
+               };
+               Expr.filter["ID"] = function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               return elem.getAttribute("id") === attrId;
+                       };
+               };
+       } else {
+               // Support: IE6/7
+               // getElementById is not reliable as a find shortcut
+               delete Expr.find["ID"];
+
+               Expr.filter["ID"] =  function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+                               return node && node.value === attrId;
+                       };
+               };
+       }
+
+       // Tag
+       Expr.find["TAG"] = support.getElementsByTagName ?
+               function( tag, context ) {
+                       if ( typeof context.getElementsByTagName !== "undefined" ) {
+                               return context.getElementsByTagName( tag );
+
+                       // DocumentFragment nodes don't have gEBTN
+                       } else if ( support.qsa ) {
+                               return context.querySelectorAll( tag );
+                       }
+               } :
+
+               function( tag, context ) {
+                       var elem,
+                               tmp = [],
+                               i = 0,
+                               // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+                               results = context.getElementsByTagName( tag );
+
+                       // Filter out possible comments
+                       if ( tag === "*" ) {
+                               while ( (elem = results[i++]) ) {
+                                       if ( elem.nodeType === 1 ) {
+                                               tmp.push( elem );
+                                       }
+                               }
+
+                               return tmp;
+                       }
+                       return results;
+               };
+
+       // Class
+       Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+               if ( documentIsHTML ) {
+                       return context.getElementsByClassName( className );
+               }
+       };
+
+       /* QSA/matchesSelector
+       ---------------------------------------------------------------------- */
+
+       // QSA and matchesSelector support
+
+       // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+       rbuggyMatches = [];
+
+       // qSa(:focus) reports false when true (Chrome 21)
+       // We allow this because of a bug in IE8/9 that throws an error
+       // whenever `document.activeElement` is accessed on an iframe
+       // So, we allow :focus to pass through QSA all the time to avoid the IE error
+       // See http://bugs.jquery.com/ticket/13378
+       rbuggyQSA = [];
+
+       if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+               // Build QSA regex
+               // Regex strategy adopted from Diego Perini
+               assert(function( div ) {
+                       // Select is set to empty string on purpose
+                       // This is to test IE's treatment of not explicitly
+                       // setting a boolean content attribute,
+                       // since its presence should be enough
+                       // http://bugs.jquery.com/ticket/12359
+                       docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
+                               "<select id='" + expando + "-\f]' msallowcapture=''>" +
+                               "<option selected=''></option></select>";
+
+                       // Support: IE8, Opera 11-12.16
+                       // Nothing should be selected when empty strings follow ^= or $= or *=
+                       // The test attribute must be unknown in Opera but "safe" for WinRT
+                       // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+                       if ( div.querySelectorAll("[msallowcapture^='']").length ) {
+                               rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+                       }
+
+                       // Support: IE8
+                       // Boolean attributes and "value" are not treated correctly
+                       if ( !div.querySelectorAll("[selected]").length ) {
+                               rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+                       }
+
+                       // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
+                       if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+                               rbuggyQSA.push("~=");
+                       }
+
+                       // Webkit/Opera - :checked should return selected option elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       // IE8 throws error here and will not see later tests
+                       if ( !div.querySelectorAll(":checked").length ) {
+                               rbuggyQSA.push(":checked");
+                       }
+
+                       // Support: Safari 8+, iOS 8+
+                       // https://bugs.webkit.org/show_bug.cgi?id=136851
+                       // In-page `selector#id sibing-combinator selector` fails
+                       if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
+                               rbuggyQSA.push(".#.+[+~]");
+                       }
+               });
+
+               assert(function( div ) {
+                       // Support: Windows 8 Native Apps
+                       // The type and name attributes are restricted during .innerHTML assignment
+                       var input = doc.createElement("input");
+                       input.setAttribute( "type", "hidden" );
+                       div.appendChild( input ).setAttribute( "name", "D" );
+
+                       // Support: IE8
+                       // Enforce case-sensitivity of name attribute
+                       if ( div.querySelectorAll("[name=d]").length ) {
+                               rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+                       }
+
+                       // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+                       // IE8 throws error here and will not see later tests
+                       if ( !div.querySelectorAll(":enabled").length ) {
+                               rbuggyQSA.push( ":enabled", ":disabled" );
+                       }
+
+                       // Opera 10-11 does not throw on post-comma invalid pseudos
+                       div.querySelectorAll("*,:x");
+                       rbuggyQSA.push(",.*:");
+               });
+       }
+
+       if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+               docElem.webkitMatchesSelector ||
+               docElem.mozMatchesSelector ||
+               docElem.oMatchesSelector ||
+               docElem.msMatchesSelector) )) ) {
+
+               assert(function( div ) {
+                       // Check to see if it's possible to do matchesSelector
+                       // on a disconnected node (IE 9)
+                       support.disconnectedMatch = matches.call( div, "div" );
+
+                       // This should fail with an exception
+                       // Gecko does not error, returns false instead
+                       matches.call( div, "[s!='']:x" );
+                       rbuggyMatches.push( "!=", pseudos );
+               });
+       }
+
+       rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+       rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+       /* Contains
+       ---------------------------------------------------------------------- */
+       hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+       // Element contains another
+       // Purposefully does not implement inclusive descendent
+       // As in, an element does not contain itself
+       contains = hasCompare || rnative.test( docElem.contains ) ?
+               function( a, b ) {
+                       var adown = a.nodeType === 9 ? a.documentElement : a,
+                               bup = b && b.parentNode;
+                       return a === bup || !!( bup && bup.nodeType === 1 && (
+                               adown.contains ?
+                                       adown.contains( bup ) :
+                                       a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+                       ));
+               } :
+               function( a, b ) {
+                       if ( b ) {
+                               while ( (b = b.parentNode) ) {
+                                       if ( b === a ) {
+                                               return true;
+                                       }
+                               }
+                       }
+                       return false;
+               };
+
+       /* Sorting
+       ---------------------------------------------------------------------- */
+
+       // Document order sorting
+       sortOrder = hasCompare ?
+       function( a, b ) {
+
+               // Flag for duplicate removal
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               // Sort on method existence if only one input has compareDocumentPosition
+               var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+               if ( compare ) {
+                       return compare;
+               }
+
+               // Calculate position if both inputs belong to the same document
+               compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+                       a.compareDocumentPosition( b ) :
+
+                       // Otherwise we know they are disconnected
+                       1;
+
+               // Disconnected nodes
+               if ( compare & 1 ||
+                       (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+                       // Choose the first element that is related to our preferred document
+                       if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+                               return -1;
+                       }
+                       if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+                               return 1;
+                       }
+
+                       // Maintain original order
+                       return sortInput ?
+                               ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+                               0;
+               }
+
+               return compare & 4 ? -1 : 1;
+       } :
+       function( a, b ) {
+               // Exit early if the nodes are identical
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               var cur,
+                       i = 0,
+                       aup = a.parentNode,
+                       bup = b.parentNode,
+                       ap = [ a ],
+                       bp = [ b ];
+
+               // Parentless nodes are either documents or disconnected
+               if ( !aup || !bup ) {
+                       return a === doc ? -1 :
+                               b === doc ? 1 :
+                               aup ? -1 :
+                               bup ? 1 :
+                               sortInput ?
+                               ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+                               0;
+
+               // If the nodes are siblings, we can do a quick check
+               } else if ( aup === bup ) {
+                       return siblingCheck( a, b );
+               }
+
+               // Otherwise we need full lists of their ancestors for comparison
+               cur = a;
+               while ( (cur = cur.parentNode) ) {
+                       ap.unshift( cur );
+               }
+               cur = b;
+               while ( (cur = cur.parentNode) ) {
+                       bp.unshift( cur );
+               }
+
+               // Walk down the tree looking for a discrepancy
+               while ( ap[i] === bp[i] ) {
+                       i++;
+               }
+
+               return i ?
+                       // Do a sibling check if the nodes have a common ancestor
+                       siblingCheck( ap[i], bp[i] ) :
+
+                       // Otherwise nodes in our document sort first
+                       ap[i] === preferredDoc ? -1 :
+                       bp[i] === preferredDoc ? 1 :
+                       0;
+       };
+
+       return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+       return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       // Make sure that attribute selectors are quoted
+       expr = expr.replace( rattributeQuotes, "='$1']" );
+
+       if ( support.matchesSelector && documentIsHTML &&
+               ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+               ( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+               try {
+                       var ret = matches.call( elem, expr );
+
+                       // IE 9's matchesSelector returns false on disconnected nodes
+                       if ( ret || support.disconnectedMatch ||
+                                       // As well, disconnected nodes are said to be in a document
+                                       // fragment in IE 9
+                                       elem.document && elem.document.nodeType !== 11 ) {
+                               return ret;
+                       }
+               } catch (e) {}
+       }
+
+       return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+       // Set document vars if needed
+       if ( ( context.ownerDocument || context ) !== document ) {
+               setDocument( context );
+       }
+       return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       var fn = Expr.attrHandle[ name.toLowerCase() ],
+               // Don't get fooled by Object.prototype properties (jQuery #13807)
+               val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+                       fn( elem, name, !documentIsHTML ) :
+                       undefined;
+
+       return val !== undefined ?
+               val :
+               support.attributes || !documentIsHTML ?
+                       elem.getAttribute( name ) :
+                       (val = elem.getAttributeNode(name)) && val.specified ?
+                               val.value :
+                               null;
+};
+
+Sizzle.error = function( msg ) {
+       throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+       var elem,
+               duplicates = [],
+               j = 0,
+               i = 0;
+
+       // Unless we *know* we can detect duplicates, assume their presence
+       hasDuplicate = !support.detectDuplicates;
+       sortInput = !support.sortStable && results.slice( 0 );
+       results.sort( sortOrder );
+
+       if ( hasDuplicate ) {
+               while ( (elem = results[i++]) ) {
+                       if ( elem === results[ i ] ) {
+                               j = duplicates.push( i );
+                       }
+               }
+               while ( j-- ) {
+                       results.splice( duplicates[ j ], 1 );
+               }
+       }
+
+       // Clear input after sorting to release objects
+       // See https://github.com/jquery/sizzle/pull/225
+       sortInput = null;
+
+       return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+       var node,
+               ret = "",
+               i = 0,
+               nodeType = elem.nodeType;
+
+       if ( !nodeType ) {
+               // If no nodeType, this is expected to be an array
+               while ( (node = elem[i++]) ) {
+                       // Do not traverse comment nodes
+                       ret += getText( node );
+               }
+       } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+               // Use textContent for elements
+               // innerText usage removed for consistency of new lines (jQuery #11153)
+               if ( typeof elem.textContent === "string" ) {
+                       return elem.textContent;
+               } else {
+                       // Traverse its children
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               ret += getText( elem );
+                       }
+               }
+       } else if ( nodeType === 3 || nodeType === 4 ) {
+               return elem.nodeValue;
+       }
+       // Do not include comment or processing instruction nodes
+
+       return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+       // Can be adjusted by the user
+       cacheLength: 50,
+
+       createPseudo: markFunction,
+
+       match: matchExpr,
+
+       attrHandle: {},
+
+       find: {},
+
+       relative: {
+               ">": { dir: "parentNode", first: true },
+               " ": { dir: "parentNode" },
+               "+": { dir: "previousSibling", first: true },
+               "~": { dir: "previousSibling" }
+       },
+
+       preFilter: {
+               "ATTR": function( match ) {
+                       match[1] = match[1].replace( runescape, funescape );
+
+                       // Move the given value to match[3] whether quoted or unquoted
+                       match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+                       if ( match[2] === "~=" ) {
+                               match[3] = " " + match[3] + " ";
+                       }
+
+                       return match.slice( 0, 4 );
+               },
+
+               "CHILD": function( match ) {
+                       /* matches from matchExpr["CHILD"]
+                               1 type (only|nth|...)
+                               2 what (child|of-type)
+                               3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+                               4 xn-component of xn+y argument ([+-]?\d*n|)
+                               5 sign of xn-component
+                               6 x of xn-component
+                               7 sign of y-component
+                               8 y of y-component
+                       */
+                       match[1] = match[1].toLowerCase();
+
+                       if ( match[1].slice( 0, 3 ) === "nth" ) {
+                               // nth-* requires argument
+                               if ( !match[3] ) {
+                                       Sizzle.error( match[0] );
+                               }
+
+                               // numeric x and y parameters for Expr.filter.CHILD
+                               // remember that false/true cast respectively to 0/1
+                               match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+                               match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+                       // other types prohibit arguments
+                       } else if ( match[3] ) {
+                               Sizzle.error( match[0] );
+                       }
+
+                       return match;
+               },
+
+               "PSEUDO": function( match ) {
+                       var excess,
+                               unquoted = !match[6] && match[2];
+
+                       if ( matchExpr["CHILD"].test( match[0] ) ) {
+                               return null;
+                       }
+
+                       // Accept quoted arguments as-is
+                       if ( match[3] ) {
+                               match[2] = match[4] || match[5] || "";
+
+                       // Strip excess characters from unquoted arguments
+                       } else if ( unquoted && rpseudo.test( unquoted ) &&
+                               // Get excess from tokenize (recursively)
+                               (excess = tokenize( unquoted, true )) &&
+                               // advance to the next closing parenthesis
+                               (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+                               // excess is a negative index
+                               match[0] = match[0].slice( 0, excess );
+                               match[2] = unquoted.slice( 0, excess );
+                       }
+
+                       // Return only captures needed by the pseudo filter method (type and argument)
+                       return match.slice( 0, 3 );
+               }
+       },
+
+       filter: {
+
+               "TAG": function( nodeNameSelector ) {
+                       var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+                       return nodeNameSelector === "*" ?
+                               function() { return true; } :
+                               function( elem ) {
+                                       return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+                               };
+               },
+
+               "CLASS": function( className ) {
+                       var pattern = classCache[ className + " " ];
+
+                       return pattern ||
+                               (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+                               classCache( className, function( elem ) {
+                                       return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+                               });
+               },
+
+               "ATTR": function( name, operator, check ) {
+                       return function( elem ) {
+                               var result = Sizzle.attr( elem, name );
+
+                               if ( result == null ) {
+                                       return operator === "!=";
+                               }
+                               if ( !operator ) {
+                                       return true;
+                               }
+
+                               result += "";
+
+                               return operator === "=" ? result === check :
+                                       operator === "!=" ? result !== check :
+                                       operator === "^=" ? check && result.indexOf( check ) === 0 :
+                                       operator === "*=" ? check && result.indexOf( check ) > -1 :
+                                       operator === "$=" ? check && result.slice( -check.length ) === check :
+                                       operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+                                       operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+                                       false;
+                       };
+               },
+
+               "CHILD": function( type, what, argument, first, last ) {
+                       var simple = type.slice( 0, 3 ) !== "nth",
+                               forward = type.slice( -4 ) !== "last",
+                               ofType = what === "of-type";
+
+                       return first === 1 && last === 0 ?
+
+                               // Shortcut for :nth-*(n)
+                               function( elem ) {
+                                       return !!elem.parentNode;
+                               } :
+
+                               function( elem, context, xml ) {
+                                       var cache, outerCache, node, diff, nodeIndex, start,
+                                               dir = simple !== forward ? "nextSibling" : "previousSibling",
+                                               parent = elem.parentNode,
+                                               name = ofType && elem.nodeName.toLowerCase(),
+                                               useCache = !xml && !ofType;
+
+                                       if ( parent ) {
+
+                                               // :(first|last|only)-(child|of-type)
+                                               if ( simple ) {
+                                                       while ( dir ) {
+                                                               node = elem;
+                                                               while ( (node = node[ dir ]) ) {
+                                                                       if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+                                                                               return false;
+                                                                       }
+                                                               }
+                                                               // Reverse direction for :only-* (if we haven't yet done so)
+                                                               start = dir = type === "only" && !start && "nextSibling";
+                                                       }
+                                                       return true;
+                                               }
+
+                                               start = [ forward ? parent.firstChild : parent.lastChild ];
+
+                                               // non-xml :nth-child(...) stores cache data on `parent`
+                                               if ( forward && useCache ) {
+                                                       // Seek `elem` from a previously-cached index
+                                                       outerCache = parent[ expando ] || (parent[ expando ] = {});
+                                                       cache = outerCache[ type ] || [];
+                                                       nodeIndex = cache[0] === dirruns && cache[1];
+                                                       diff = cache[0] === dirruns && cache[2];
+                                                       node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+                                                               // Fallback to seeking `elem` from the start
+                                                               (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                               // When found, cache indexes on `parent` and break
+                                                               if ( node.nodeType === 1 && ++diff && node === elem ) {
+                                                                       outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+                                                                       break;
+                                                               }
+                                                       }
+
+                                               // Use previously-cached element index if available
+                                               } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+                                                       diff = cache[1];
+
+                                               // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+                                               } else {
+                                                       // Use the same loop as above to seek `elem` from the start
+                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
+                                                               (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                               if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+                                                                       // Cache the index of each encountered element
+                                                                       if ( useCache ) {
+                                                                               (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+                                                                       }
+
+                                                                       if ( node === elem ) {
+                                                                               break;
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+
+                                               // Incorporate the offset, then check against cycle size
+                                               diff -= last;
+                                               return diff === first || ( diff % first === 0 && diff / first >= 0 );
+                                       }
+                               };
+               },
+
+               "PSEUDO": function( pseudo, argument ) {
+                       // pseudo-class names are case-insensitive
+                       // http://www.w3.org/TR/selectors/#pseudo-classes
+                       // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+                       // Remember that setFilters inherits from pseudos
+                       var args,
+                               fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+                                       Sizzle.error( "unsupported pseudo: " + pseudo );
+
+                       // The user may use createPseudo to indicate that
+                       // arguments are needed to create the filter function
+                       // just as Sizzle does
+                       if ( fn[ expando ] ) {
+                               return fn( argument );
+                       }
+
+                       // But maintain support for old signatures
+                       if ( fn.length > 1 ) {
+                               args = [ pseudo, pseudo, "", argument ];
+                               return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+                                       markFunction(function( seed, matches ) {
+                                               var idx,
+                                                       matched = fn( seed, argument ),
+                                                       i = matched.length;
+                                               while ( i-- ) {
+                                                       idx = indexOf( seed, matched[i] );
+                                                       seed[ idx ] = !( matches[ idx ] = matched[i] );
+                                               }
+                                       }) :
+                                       function( elem ) {
+                                               return fn( elem, 0, args );
+                                       };
+                       }
+
+                       return fn;
+               }
+       },
+
+       pseudos: {
+               // Potentially complex pseudos
+               "not": markFunction(function( selector ) {
+                       // Trim the selector passed to compile
+                       // to avoid treating leading and trailing
+                       // spaces as combinators
+                       var input = [],
+                               results = [],
+                               matcher = compile( selector.replace( rtrim, "$1" ) );
+
+                       return matcher[ expando ] ?
+                               markFunction(function( seed, matches, context, xml ) {
+                                       var elem,
+                                               unmatched = matcher( seed, null, xml, [] ),
+                                               i = seed.length;
+
+                                       // Match elements unmatched by `matcher`
+                                       while ( i-- ) {
+                                               if ( (elem = unmatched[i]) ) {
+                                                       seed[i] = !(matches[i] = elem);
+                                               }
+                                       }
+                               }) :
+                               function( elem, context, xml ) {
+                                       input[0] = elem;
+                                       matcher( input, null, xml, results );
+                                       // Don't keep the element (issue #299)
+                                       input[0] = null;
+                                       return !results.pop();
+                               };
+               }),
+
+               "has": markFunction(function( selector ) {
+                       return function( elem ) {
+                               return Sizzle( selector, elem ).length > 0;
+                       };
+               }),
+
+               "contains": markFunction(function( text ) {
+                       text = text.replace( runescape, funescape );
+                       return function( elem ) {
+                               return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+                       };
+               }),
+
+               // "Whether an element is represented by a :lang() selector
+               // is based solely on the element's language value
+               // being equal to the identifier C,
+               // or beginning with the identifier C immediately followed by "-".
+               // The matching of C against the element's language value is performed case-insensitively.
+               // The identifier C does not have to be a valid language name."
+               // http://www.w3.org/TR/selectors/#lang-pseudo
+               "lang": markFunction( function( lang ) {
+                       // lang value must be a valid identifier
+                       if ( !ridentifier.test(lang || "") ) {
+                               Sizzle.error( "unsupported lang: " + lang );
+                       }
+                       lang = lang.replace( runescape, funescape ).toLowerCase();
+                       return function( elem ) {
+                               var elemLang;
+                               do {
+                                       if ( (elemLang = documentIsHTML ?
+                                               elem.lang :
+                                               elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+                                               elemLang = elemLang.toLowerCase();
+                                               return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+                                       }
+                               } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+                               return false;
+                       };
+               }),
+
+               // Miscellaneous
+               "target": function( elem ) {
+                       var hash = window.location && window.location.hash;
+                       return hash && hash.slice( 1 ) === elem.id;
+               },
+
+               "root": function( elem ) {
+                       return elem === docElem;
+               },
+
+               "focus": function( elem ) {
+                       return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+               },
+
+               // Boolean properties
+               "enabled": function( elem ) {
+                       return elem.disabled === false;
+               },
+
+               "disabled": function( elem ) {
+                       return elem.disabled === true;
+               },
+
+               "checked": function( elem ) {
+                       // In CSS3, :checked should return both checked and selected elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       var nodeName = elem.nodeName.toLowerCase();
+                       return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+               },
+
+               "selected": function( elem ) {
+                       // Accessing this property makes selected-by-default
+                       // options in Safari work properly
+                       if ( elem.parentNode ) {
+                               elem.parentNode.selectedIndex;
+                       }
+
+                       return elem.selected === true;
+               },
+
+               // Contents
+               "empty": function( elem ) {
+                       // http://www.w3.org/TR/selectors/#empty-pseudo
+                       // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+                       //   but not by others (comment: 8; processing instruction: 7; etc.)
+                       // nodeType < 6 works because attributes (2) do not appear as children
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               if ( elem.nodeType < 6 ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               },
+
+               "parent": function( elem ) {
+                       return !Expr.pseudos["empty"]( elem );
+               },
+
+               // Element/input types
+               "header": function( elem ) {
+                       return rheader.test( elem.nodeName );
+               },
+
+               "input": function( elem ) {
+                       return rinputs.test( elem.nodeName );
+               },
+
+               "button": function( elem ) {
+                       var name = elem.nodeName.toLowerCase();
+                       return name === "input" && elem.type === "button" || name === "button";
+               },
+
+               "text": function( elem ) {
+                       var attr;
+                       return elem.nodeName.toLowerCase() === "input" &&
+                               elem.type === "text" &&
+
+                               // Support: IE<8
+                               // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+                               ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+               },
+
+               // Position-in-collection
+               "first": createPositionalPseudo(function() {
+                       return [ 0 ];
+               }),
+
+               "last": createPositionalPseudo(function( matchIndexes, length ) {
+                       return [ length - 1 ];
+               }),
+
+               "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       return [ argument < 0 ? argument + length : argument ];
+               }),
+
+               "even": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 0;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "odd": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 1;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; --i >= 0; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; ++i < length; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               })
+       }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+       Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+       Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+       var matched, match, tokens, type,
+               soFar, groups, preFilters,
+               cached = tokenCache[ selector + " " ];
+
+       if ( cached ) {
+               return parseOnly ? 0 : cached.slice( 0 );
+       }
+
+       soFar = selector;
+       groups = [];
+       preFilters = Expr.preFilter;
+
+       while ( soFar ) {
+
+               // Comma and first run
+               if ( !matched || (match = rcomma.exec( soFar )) ) {
+                       if ( match ) {
+                               // Don't consume trailing commas as valid
+                               soFar = soFar.slice( match[0].length ) || soFar;
+                       }
+                       groups.push( (tokens = []) );
+               }
+
+               matched = false;
+
+               // Combinators
+               if ( (match = rcombinators.exec( soFar )) ) {
+                       matched = match.shift();
+                       tokens.push({
+                               value: matched,
+                               // Cast descendant combinators to space
+                               type: match[0].replace( rtrim, " " )
+                       });
+                       soFar = soFar.slice( matched.length );
+               }
+
+               // Filters
+               for ( type in Expr.filter ) {
+                       if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+                               (match = preFilters[ type ]( match ))) ) {
+                               matched = match.shift();
+                               tokens.push({
+                                       value: matched,
+                                       type: type,
+                                       matches: match
+                               });
+                               soFar = soFar.slice( matched.length );
+                       }
+               }
+
+               if ( !matched ) {
+                       break;
+               }
+       }
+
+       // Return the length of the invalid excess
+       // if we're just parsing
+       // Otherwise, throw an error or return tokens
+       return parseOnly ?
+               soFar.length :
+               soFar ?
+                       Sizzle.error( selector ) :
+                       // Cache the tokens
+                       tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+       var i = 0,
+               len = tokens.length,
+               selector = "";
+       for ( ; i < len; i++ ) {
+               selector += tokens[i].value;
+       }
+       return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+       var dir = combinator.dir,
+               checkNonElements = base && dir === "parentNode",
+               doneName = done++;
+
+       return combinator.first ?
+               // Check against closest ancestor/preceding element
+               function( elem, context, xml ) {
+                       while ( (elem = elem[ dir ]) ) {
+                               if ( elem.nodeType === 1 || checkNonElements ) {
+                                       return matcher( elem, context, xml );
+                               }
+                       }
+               } :
+
+               // Check against all ancestor/preceding elements
+               function( elem, context, xml ) {
+                       var oldCache, outerCache,
+                               newCache = [ dirruns, doneName ];
+
+                       // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+                       if ( xml ) {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               if ( matcher( elem, context, xml ) ) {
+                                                       return true;
+                                               }
+                                       }
+                               }
+                       } else {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               outerCache = elem[ expando ] || (elem[ expando ] = {});
+                                               if ( (oldCache = outerCache[ dir ]) &&
+                                                       oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+                                                       // Assign to newCache so results back-propagate to previous elements
+                                                       return (newCache[ 2 ] = oldCache[ 2 ]);
+                                               } else {
+                                                       // Reuse newcache so results back-propagate to previous elements
+                                                       outerCache[ dir ] = newCache;
+
+                                                       // A match means we're done; a fail means we have to keep checking
+                                                       if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+                                                               return true;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               };
+}
+
+function elementMatcher( matchers ) {
+       return matchers.length > 1 ?
+               function( elem, context, xml ) {
+                       var i = matchers.length;
+                       while ( i-- ) {
+                               if ( !matchers[i]( elem, context, xml ) ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               } :
+               matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+       var i = 0,
+               len = contexts.length;
+       for ( ; i < len; i++ ) {
+               Sizzle( selector, contexts[i], results );
+       }
+       return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+       var elem,
+               newUnmatched = [],
+               i = 0,
+               len = unmatched.length,
+               mapped = map != null;
+
+       for ( ; i < len; i++ ) {
+               if ( (elem = unmatched[i]) ) {
+                       if ( !filter || filter( elem, context, xml ) ) {
+                               newUnmatched.push( elem );
+                               if ( mapped ) {
+                                       map.push( i );
+                               }
+                       }
+               }
+       }
+
+       return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+       if ( postFilter && !postFilter[ expando ] ) {
+               postFilter = setMatcher( postFilter );
+       }
+       if ( postFinder && !postFinder[ expando ] ) {
+               postFinder = setMatcher( postFinder, postSelector );
+       }
+       return markFunction(function( seed, results, context, xml ) {
+               var temp, i, elem,
+                       preMap = [],
+                       postMap = [],
+                       preexisting = results.length,
+
+                       // Get initial elements from seed or context
+                       elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+                       // Prefilter to get matcher input, preserving a map for seed-results synchronization
+                       matcherIn = preFilter && ( seed || !selector ) ?
+                               condense( elems, preMap, preFilter, context, xml ) :
+                               elems,
+
+                       matcherOut = matcher ?
+                               // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+                               postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+                                       // ...intermediate processing is necessary
+                                       [] :
+
+                                       // ...otherwise use results directly
+                                       results :
+                               matcherIn;
+
+               // Find primary matches
+               if ( matcher ) {
+                       matcher( matcherIn, matcherOut, context, xml );
+               }
+
+               // Apply postFilter
+               if ( postFilter ) {
+                       temp = condense( matcherOut, postMap );
+                       postFilter( temp, [], context, xml );
+
+                       // Un-match failing elements by moving them back to matcherIn
+                       i = temp.length;
+                       while ( i-- ) {
+                               if ( (elem = temp[i]) ) {
+                                       matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+                               }
+                       }
+               }
+
+               if ( seed ) {
+                       if ( postFinder || preFilter ) {
+                               if ( postFinder ) {
+                                       // Get the final matcherOut by condensing this intermediate into postFinder contexts
+                                       temp = [];
+                                       i = matcherOut.length;
+                                       while ( i-- ) {
+                                               if ( (elem = matcherOut[i]) ) {
+                                                       // Restore matcherIn since elem is not yet a final match
+                                                       temp.push( (matcherIn[i] = elem) );
+                                               }
+                                       }
+                                       postFinder( null, (matcherOut = []), temp, xml );
+                               }
+
+                               // Move matched elements from seed to results to keep them synchronized
+                               i = matcherOut.length;
+                               while ( i-- ) {
+                                       if ( (elem = matcherOut[i]) &&
+                                               (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+                                               seed[temp] = !(results[temp] = elem);
+                                       }
+                               }
+                       }
+
+               // Add elements to results, through postFinder if defined
+               } else {
+                       matcherOut = condense(
+                               matcherOut === results ?
+                                       matcherOut.splice( preexisting, matcherOut.length ) :
+                                       matcherOut
+                       );
+                       if ( postFinder ) {
+                               postFinder( null, results, matcherOut, xml );
+                       } else {
+                               push.apply( results, matcherOut );
+                       }
+               }
+       });
+}
+
+function matcherFromTokens( tokens ) {
+       var checkContext, matcher, j,
+               len = tokens.length,
+               leadingRelative = Expr.relative[ tokens[0].type ],
+               implicitRelative = leadingRelative || Expr.relative[" "],
+               i = leadingRelative ? 1 : 0,
+
+               // The foundational matcher ensures that elements are reachable from top-level context(s)
+               matchContext = addCombinator( function( elem ) {
+                       return elem === checkContext;
+               }, implicitRelative, true ),
+               matchAnyContext = addCombinator( function( elem ) {
+                       return indexOf( checkContext, elem ) > -1;
+               }, implicitRelative, true ),
+               matchers = [ function( elem, context, xml ) {
+                       var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+                               (checkContext = context).nodeType ?
+                                       matchContext( elem, context, xml ) :
+                                       matchAnyContext( elem, context, xml ) );
+                       // Avoid hanging onto element (issue #299)
+                       checkContext = null;
+                       return ret;
+               } ];
+
+       for ( ; i < len; i++ ) {
+               if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+                       matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+               } else {
+                       matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+                       // Return special upon seeing a positional matcher
+                       if ( matcher[ expando ] ) {
+                               // Find the next relative operator (if any) for proper handling
+                               j = ++i;
+                               for ( ; j < len; j++ ) {
+                                       if ( Expr.relative[ tokens[j].type ] ) {
+                                               break;
+                                       }
+                               }
+                               return setMatcher(
+                                       i > 1 && elementMatcher( matchers ),
+                                       i > 1 && toSelector(
+                                               // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+                                               tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+                                       ).replace( rtrim, "$1" ),
+                                       matcher,
+                                       i < j && matcherFromTokens( tokens.slice( i, j ) ),
+                                       j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+                                       j < len && toSelector( tokens )
+                               );
+                       }
+                       matchers.push( matcher );
+               }
+       }
+
+       return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+       var bySet = setMatchers.length > 0,
+               byElement = elementMatchers.length > 0,
+               superMatcher = function( seed, context, xml, results, outermost ) {
+                       var elem, j, matcher,
+                               matchedCount = 0,
+                               i = "0",
+                               unmatched = seed && [],
+                               setMatched = [],
+                               contextBackup = outermostContext,
+                               // We must always have either seed elements or outermost context
+                               elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+                               // Use integer dirruns iff this is the outermost matcher
+                               dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+                               len = elems.length;
+
+                       if ( outermost ) {
+                               outermostContext = context !== document && context;
+                       }
+
+                       // Add elements passing elementMatchers directly to results
+                       // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+                       // Support: IE<9, Safari
+                       // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+                       for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+                               if ( byElement && elem ) {
+                                       j = 0;
+                                       while ( (matcher = elementMatchers[j++]) ) {
+                                               if ( matcher( elem, context, xml ) ) {
+                                                       results.push( elem );
+                                                       break;
+                                               }
+                                       }
+                                       if ( outermost ) {
+                                               dirruns = dirrunsUnique;
+                                       }
+                               }
+
+                               // Track unmatched elements for set filters
+                               if ( bySet ) {
+                                       // They will have gone through all possible matchers
+                                       if ( (elem = !matcher && elem) ) {
+                                               matchedCount--;
+                                       }
+
+                                       // Lengthen the array for every element, matched or not
+                                       if ( seed ) {
+                                               unmatched.push( elem );
+                                       }
+                               }
+                       }
+
+                       // Apply set filters to unmatched elements
+                       matchedCount += i;
+                       if ( bySet && i !== matchedCount ) {
+                               j = 0;
+                               while ( (matcher = setMatchers[j++]) ) {
+                                       matcher( unmatched, setMatched, context, xml );
+                               }
+
+                               if ( seed ) {
+                                       // Reintegrate element matches to eliminate the need for sorting
+                                       if ( matchedCount > 0 ) {
+                                               while ( i-- ) {
+                                                       if ( !(unmatched[i] || setMatched[i]) ) {
+                                                               setMatched[i] = pop.call( results );
+                                                       }
+                                               }
+                                       }
+
+                                       // Discard index placeholder values to get only actual matches
+                                       setMatched = condense( setMatched );
+                               }
+
+                               // Add matches to results
+                               push.apply( results, setMatched );
+
+                               // Seedless set matches succeeding multiple successful matchers stipulate sorting
+                               if ( outermost && !seed && setMatched.length > 0 &&
+                                       ( matchedCount + setMatchers.length ) > 1 ) {
+
+                                       Sizzle.uniqueSort( results );
+                               }
+                       }
+
+                       // Override manipulation of globals by nested matchers
+                       if ( outermost ) {
+                               dirruns = dirrunsUnique;
+                               outermostContext = contextBackup;
+                       }
+
+                       return unmatched;
+               };
+
+       return bySet ?
+               markFunction( superMatcher ) :
+               superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+       var i,
+               setMatchers = [],
+               elementMatchers = [],
+               cached = compilerCache[ selector + " " ];
+
+       if ( !cached ) {
+               // Generate a function of recursive functions that can be used to check each element
+               if ( !match ) {
+                       match = tokenize( selector );
+               }
+               i = match.length;
+               while ( i-- ) {
+                       cached = matcherFromTokens( match[i] );
+                       if ( cached[ expando ] ) {
+                               setMatchers.push( cached );
+                       } else {
+                               elementMatchers.push( cached );
+                       }
+               }
+
+               // Cache the compiled function
+               cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+               // Save selector and tokenization
+               cached.selector = selector;
+       }
+       return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+       var i, tokens, token, type, find,
+               compiled = typeof selector === "function" && selector,
+               match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+       results = results || [];
+
+       // Try to minimize operations if there is no seed and only one group
+       if ( match.length === 1 ) {
+
+               // Take a shortcut and set the context if the root selector is an ID
+               tokens = match[0] = match[0].slice( 0 );
+               if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+                               support.getById && context.nodeType === 9 && documentIsHTML &&
+                               Expr.relative[ tokens[1].type ] ) {
+
+                       context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+                       if ( !context ) {
+                               return results;
+
+                       // Precompiled matchers will still verify ancestry, so step up a level
+                       } else if ( compiled ) {
+                               context = context.parentNode;
+                       }
+
+                       selector = selector.slice( tokens.shift().value.length );
+               }
+
+               // Fetch a seed set for right-to-left matching
+               i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+               while ( i-- ) {
+                       token = tokens[i];
+
+                       // Abort if we hit a combinator
+                       if ( Expr.relative[ (type = token.type) ] ) {
+                               break;
+                       }
+                       if ( (find = Expr.find[ type ]) ) {
+                               // Search, expanding context for leading sibling combinators
+                               if ( (seed = find(
+                                       token.matches[0].replace( runescape, funescape ),
+                                       rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+                               )) ) {
+
+                                       // If seed is empty or no tokens remain, we can return early
+                                       tokens.splice( i, 1 );
+                                       selector = seed.length && toSelector( tokens );
+                                       if ( !selector ) {
+                                               push.apply( results, seed );
+                                               return results;
+                                       }
+
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       // Compile and execute a filtering function if one is not provided
+       // Provide `match` to avoid retokenization if we modified the selector above
+       ( compiled || compile( selector, match ) )(
+               seed,
+               context,
+               !documentIsHTML,
+               results,
+               rsibling.test( selector ) && testContext( context.parentNode ) || context
+       );
+       return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+       // Should return 1, but returns 4 (following)
+       return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+       div.innerHTML = "<a href='#'></a>";
+       return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+       addHandle( "type|href|height|width", function( elem, name, isXML ) {
+               if ( !isXML ) {
+                       return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+               }
+       });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+       div.innerHTML = "<input/>";
+       div.firstChild.setAttribute( "value", "" );
+       return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+       addHandle( "value", function( elem, name, isXML ) {
+               if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+                       return elem.defaultValue;
+               }
+       });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+       return div.getAttribute("disabled") == null;
+}) ) {
+       addHandle( booleans, function( elem, name, isXML ) {
+               var val;
+               if ( !isXML ) {
+                       return elem[ name ] === true ? name.toLowerCase() :
+                                       (val = elem.getAttributeNode( name )) && val.specified ?
+                                       val.value :
+                               null;
+               }
+       });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+       if ( jQuery.isFunction( qualifier ) ) {
+               return jQuery.grep( elements, function( elem, i ) {
+                       /* jshint -W018 */
+                       return !!qualifier.call( elem, i, elem ) !== not;
+               });
+
+       }
+
+       if ( qualifier.nodeType ) {
+               return jQuery.grep( elements, function( elem ) {
+                       return ( elem === qualifier ) !== not;
+               });
+
+       }
+
+       if ( typeof qualifier === "string" ) {
+               if ( risSimple.test( qualifier ) ) {
+                       return jQuery.filter( qualifier, elements, not );
+               }
+
+               qualifier = jQuery.filter( qualifier, elements );
+       }
+
+       return jQuery.grep( elements, function( elem ) {
+               return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
+       });
+}
+
+jQuery.filter = function( expr, elems, not ) {
+       var elem = elems[ 0 ];
+
+       if ( not ) {
+               expr = ":not(" + expr + ")";
+       }
+
+       return elems.length === 1 && elem.nodeType === 1 ?
+               jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+               jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+                       return elem.nodeType === 1;
+               }));
+};
+
+jQuery.fn.extend({
+       find: function( selector ) {
+               var i,
+                       len = this.length,
+                       ret = [],
+                       self = this;
+
+               if ( typeof selector !== "string" ) {
+                       return this.pushStack( jQuery( selector ).filter(function() {
+                               for ( i = 0; i < len; i++ ) {
+                                       if ( jQuery.contains( self[ i ], this ) ) {
+                                               return true;
+                                       }
+                               }
+                       }) );
+               }
+
+               for ( i = 0; i < len; i++ ) {
+                       jQuery.find( selector, self[ i ], ret );
+               }
+
+               // Needed because $( selector, context ) becomes $( context ).find( selector )
+               ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+               ret.selector = this.selector ? this.selector + " " + selector : selector;
+               return ret;
+       },
+       filter: function( selector ) {
+               return this.pushStack( winnow(this, selector || [], false) );
+       },
+       not: function( selector ) {
+               return this.pushStack( winnow(this, selector || [], true) );
+       },
+       is: function( selector ) {
+               return !!winnow(
+                       this,
+
+                       // If this is a positional/relative selector, check membership in the returned set
+                       // so $("p:first").is("p:last") won't return true for a doc with two "p".
+                       typeof selector === "string" && rneedsContext.test( selector ) ?
+                               jQuery( selector ) :
+                               selector || [],
+                       false
+               ).length;
+       }
+});
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+       // A simple way to check for HTML strings
+       // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+       // Strict HTML recognition (#11290: must start with <)
+       rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+       init = jQuery.fn.init = function( selector, context ) {
+               var match, elem;
+
+               // HANDLE: $(""), $(null), $(undefined), $(false)
+               if ( !selector ) {
+                       return this;
+               }
+
+               // Handle HTML strings
+               if ( typeof selector === "string" ) {
+                       if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
+                               // Assume that strings that start and end with <> are HTML and skip the regex check
+                               match = [ null, selector, null ];
+
+                       } else {
+                               match = rquickExpr.exec( selector );
+                       }
+
+                       // Match html or make sure no context is specified for #id
+                       if ( match && (match[1] || !context) ) {
+
+                               // HANDLE: $(html) -> $(array)
+                               if ( match[1] ) {
+                                       context = context instanceof jQuery ? context[0] : context;
+
+                                       // Option to run scripts is true for back-compat
+                                       // Intentionally let the error be thrown if parseHTML is not present
+                                       jQuery.merge( this, jQuery.parseHTML(
+                                               match[1],
+                                               context && context.nodeType ? context.ownerDocument || context : document,
+                                               true
+                                       ) );
+
+                                       // HANDLE: $(html, props)
+                                       if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+                                               for ( match in context ) {
+                                                       // Properties of context are called as methods if possible
+                                                       if ( jQuery.isFunction( this[ match ] ) ) {
+                                                               this[ match ]( context[ match ] );
+
+                                                       // ...and otherwise set as attributes
+                                                       } else {
+                                                               this.attr( match, context[ match ] );
+                                                       }
+                                               }
+                                       }
+
+                                       return this;
+
+                               // HANDLE: $(#id)
+                               } else {
+                                       elem = document.getElementById( match[2] );
+
+                                       // Support: Blackberry 4.6
+                                       // gEBID returns nodes no longer in the document (#6963)
+                                       if ( elem && elem.parentNode ) {
+                                               // Inject the element directly into the jQuery object
+                                               this.length = 1;
+                                               this[0] = elem;
+                                       }
+
+                                       this.context = document;
+                                       this.selector = selector;
+                                       return this;
+                               }
+
+                       // HANDLE: $(expr, $(...))
+                       } else if ( !context || context.jquery ) {
+                               return ( context || rootjQuery ).find( selector );
+
+                       // HANDLE: $(expr, context)
+                       // (which is just equivalent to: $(context).find(expr)
+                       } else {
+                               return this.constructor( context ).find( selector );
+                       }
+
+               // HANDLE: $(DOMElement)
+               } else if ( selector.nodeType ) {
+                       this.context = this[0] = selector;
+                       this.length = 1;
+                       return this;
+
+               // HANDLE: $(function)
+               // Shortcut for document ready
+               } else if ( jQuery.isFunction( selector ) ) {
+                       return typeof rootjQuery.ready !== "undefined" ?
+                               rootjQuery.ready( selector ) :
+                               // Execute immediately if ready is not present
+                               selector( jQuery );
+               }
+
+               if ( selector.selector !== undefined ) {
+                       this.selector = selector.selector;
+                       this.context = selector.context;
+               }
+
+               return jQuery.makeArray( selector, this );
+       };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+       // Methods guaranteed to produce a unique set when starting from a unique set
+       guaranteedUnique = {
+               children: true,
+               contents: true,
+               next: true,
+               prev: true
+       };
+
+jQuery.extend({
+       dir: function( elem, dir, until ) {
+               var matched = [],
+                       truncate = until !== undefined;
+
+               while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
+                       if ( elem.nodeType === 1 ) {
+                               if ( truncate && jQuery( elem ).is( until ) ) {
+                                       break;
+                               }
+                               matched.push( elem );
+                       }
+               }
+               return matched;
+       },
+
+       sibling: function( n, elem ) {
+               var matched = [];
+
+               for ( ; n; n = n.nextSibling ) {
+                       if ( n.nodeType === 1 && n !== elem ) {
+                               matched.push( n );
+                       }
+               }
+
+               return matched;
+       }
+});
+
+jQuery.fn.extend({
+       has: function( target ) {
+               var targets = jQuery( target, this ),
+                       l = targets.length;
+
+               return this.filter(function() {
+                       var i = 0;
+                       for ( ; i < l; i++ ) {
+                               if ( jQuery.contains( this, targets[i] ) ) {
+                                       return true;
+                               }
+                       }
+               });
+       },
+
+       closest: function( selectors, context ) {
+               var cur,
+                       i = 0,
+                       l = this.length,
+                       matched = [],
+                       pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+                               jQuery( selectors, context || this.context ) :
+                               0;
+
+               for ( ; i < l; i++ ) {
+                       for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+                               // Always skip document fragments
+                               if ( cur.nodeType < 11 && (pos ?
+                                       pos.index(cur) > -1 :
+
+                                       // Don't pass non-elements to Sizzle
+                                       cur.nodeType === 1 &&
+                                               jQuery.find.matchesSelector(cur, selectors)) ) {
+
+                                       matched.push( cur );
+                                       break;
+                               }
+                       }
+               }
+
+               return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
+       },
+
+       // Determine the position of an element within the set
+       index: function( elem ) {
+
+               // No argument, return index in parent
+               if ( !elem ) {
+                       return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+               }
+
+               // Index in selector
+               if ( typeof elem === "string" ) {
+                       return indexOf.call( jQuery( elem ), this[ 0 ] );
+               }
+
+               // Locate the position of the desired element
+               return indexOf.call( this,
+
+                       // If it receives a jQuery object, the first element is used
+                       elem.jquery ? elem[ 0 ] : elem
+               );
+       },
+
+       add: function( selector, context ) {
+               return this.pushStack(
+                       jQuery.unique(
+                               jQuery.merge( this.get(), jQuery( selector, context ) )
+                       )
+               );
+       },
+
+       addBack: function( selector ) {
+               return this.add( selector == null ?
+                       this.prevObject : this.prevObject.filter(selector)
+               );
+       }
+});
+
+function sibling( cur, dir ) {
+       while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
+       return cur;
+}
+
+jQuery.each({
+       parent: function( elem ) {
+               var parent = elem.parentNode;
+               return parent && parent.nodeType !== 11 ? parent : null;
+       },
+       parents: function( elem ) {
+               return jQuery.dir( elem, "parentNode" );
+       },
+       parentsUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "parentNode", until );
+       },
+       next: function( elem ) {
+               return sibling( elem, "nextSibling" );
+       },
+       prev: function( elem ) {
+               return sibling( elem, "previousSibling" );
+       },
+       nextAll: function( elem ) {
+               return jQuery.dir( elem, "nextSibling" );
+       },
+       prevAll: function( elem ) {
+               return jQuery.dir( elem, "previousSibling" );
+       },
+       nextUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "nextSibling", until );
+       },
+       prevUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "previousSibling", until );
+       },
+       siblings: function( elem ) {
+               return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+       },
+       children: function( elem ) {
+               return jQuery.sibling( elem.firstChild );
+       },
+       contents: function( elem ) {
+               return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+       }
+}, function( name, fn ) {
+       jQuery.fn[ name ] = function( until, selector ) {
+               var matched = jQuery.map( this, fn, until );
+
+               if ( name.slice( -5 ) !== "Until" ) {
+                       selector = until;
+               }
+
+               if ( selector && typeof selector === "string" ) {
+                       matched = jQuery.filter( selector, matched );
+               }
+
+               if ( this.length > 1 ) {
+                       // Remove duplicates
+                       if ( !guaranteedUnique[ name ] ) {
+                               jQuery.unique( matched );
+                       }
+
+                       // Reverse order for parents* and prev-derivatives
+                       if ( rparentsprev.test( name ) ) {
+                               matched.reverse();
+                       }
+               }
+
+               return this.pushStack( matched );
+       };
+});
+var rnotwhite = (/\S+/g);
+
+
+
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+       var object = optionsCache[ options ] = {};
+       jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+               object[ flag ] = true;
+       });
+       return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *     options: an optional list of space-separated options that will change how
+ *                     the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *     once:                   will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *     memory:                 will keep track of previous values and will call any callback added
+ *                                     after the list has been fired right away with the latest "memorized"
+ *                                     values (like a Deferred)
+ *
+ *     unique:                 will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *     stopOnFalse:    interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+       // Convert options from String-formatted to Object-formatted if needed
+       // (we check in cache first)
+       options = typeof options === "string" ?
+               ( optionsCache[ options ] || createOptions( options ) ) :
+               jQuery.extend( {}, options );
+
+       var // Last fire value (for non-forgettable lists)
+               memory,
+               // Flag to know if list was already fired
+               fired,
+               // Flag to know if list is currently firing
+               firing,
+               // First callback to fire (used internally by add and fireWith)
+               firingStart,
+               // End of the loop when firing
+               firingLength,
+               // Index of currently firing callback (modified by remove if needed)
+               firingIndex,
+               // Actual callback list
+               list = [],
+               // Stack of fire calls for repeatable lists
+               stack = !options.once && [],
+               // Fire callbacks
+               fire = function( data ) {
+                       memory = options.memory && data;
+                       fired = true;
+                       firingIndex = firingStart || 0;
+                       firingStart = 0;
+                       firingLength = list.length;
+                       firing = true;
+                       for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+                               if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+                                       memory = false; // To prevent further calls using add
+                                       break;
+                               }
+                       }
+                       firing = false;
+                       if ( list ) {
+                               if ( stack ) {
+                                       if ( stack.length ) {
+                                               fire( stack.shift() );
+                                       }
+                               } else if ( memory ) {
+                                       list = [];
+                               } else {
+                                       self.disable();
+                               }
+                       }
+               },
+               // Actual Callbacks object
+               self = {
+                       // Add a callback or a collection of callbacks to the list
+                       add: function() {
+                               if ( list ) {
+                                       // First, we save the current length
+                                       var start = list.length;
+                                       (function add( args ) {
+                                               jQuery.each( args, function( _, arg ) {
+                                                       var type = jQuery.type( arg );
+                                                       if ( type === "function" ) {
+                                                               if ( !options.unique || !self.has( arg ) ) {
+                                                                       list.push( arg );
+                                                               }
+                                                       } else if ( arg && arg.length && type !== "string" ) {
+                                                               // Inspect recursively
+                                                               add( arg );
+                                                       }
+                                               });
+                                       })( arguments );
+                                       // Do we need to add the callbacks to the
+                                       // current firing batch?
+                                       if ( firing ) {
+                                               firingLength = list.length;
+                                       // With memory, if we're not firing then
+                                       // we should call right away
+                                       } else if ( memory ) {
+                                               firingStart = start;
+                                               fire( memory );
+                                       }
+                               }
+                               return this;
+                       },
+                       // Remove a callback from the list
+                       remove: function() {
+                               if ( list ) {
+                                       jQuery.each( arguments, function( _, arg ) {
+                                               var index;
+                                               while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+                                                       list.splice( index, 1 );
+                                                       // Handle firing indexes
+                                                       if ( firing ) {
+                                                               if ( index <= firingLength ) {
+                                                                       firingLength--;
+                                                               }
+                                                               if ( index <= firingIndex ) {
+                                                                       firingIndex--;
+                                                               }
+                                                       }
+                                               }
+                                       });
+                               }
+                               return this;
+                       },
+                       // Check if a given callback is in the list.
+                       // If no argument is given, return whether or not list has callbacks attached.
+                       has: function( fn ) {
+                               return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+                       },
+                       // Remove all callbacks from the list
+                       empty: function() {
+                               list = [];
+                               firingLength = 0;
+                               return this;
+                       },
+                       // Have the list do nothing anymore
+                       disable: function() {
+                               list = stack = memory = undefined;
+                               return this;
+                       },
+                       // Is it disabled?
+                       disabled: function() {
+                               return !list;
+                       },
+                       // Lock the list in its current state
+                       lock: function() {
+                               stack = undefined;
+                               if ( !memory ) {
+                                       self.disable();
+                               }
+                               return this;
+                       },
+                       // Is it locked?
+                       locked: function() {
+                               return !stack;
+                       },
+                       // Call all callbacks with the given context and arguments
+                       fireWith: function( context, args ) {
+                               if ( list && ( !fired || stack ) ) {
+                                       args = args || [];
+                                       args = [ context, args.slice ? args.slice() : args ];
+                                       if ( firing ) {
+                                               stack.push( args );
+                                       } else {
+                                               fire( args );
+                                       }
+                               }
+                               return this;
+                       },
+                       // Call all the callbacks with the given arguments
+                       fire: function() {
+                               self.fireWith( this, arguments );
+                               return this;
+                       },
+                       // To know if the callbacks have already been called at least once
+                       fired: function() {
+                               return !!fired;
+                       }
+               };
+
+       return self;
+};
+
+
+jQuery.extend({
+
+       Deferred: function( func ) {
+               var tuples = [
+                               // action, add listener, listener list, final state
+                               [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+                               [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+                               [ "notify", "progress", jQuery.Callbacks("memory") ]
+                       ],
+                       state = "pending",
+                       promise = {
+                               state: function() {
+                                       return state;
+                               },
+                               always: function() {
+                                       deferred.done( arguments ).fail( arguments );
+                                       return this;
+                               },
+                               then: function( /* fnDone, fnFail, fnProgress */ ) {
+                                       var fns = arguments;
+                                       return jQuery.Deferred(function( newDefer ) {
+                                               jQuery.each( tuples, function( i, tuple ) {
+                                                       var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+                                                       // deferred[ done | fail | progress ] for forwarding actions to newDefer
+                                                       deferred[ tuple[1] ](function() {
+                                                               var returned = fn && fn.apply( this, arguments );
+                                                               if ( returned && jQuery.isFunction( returned.promise ) ) {
+                                                                       returned.promise()
+                                                                               .done( newDefer.resolve )
+                                                                               .fail( newDefer.reject )
+                                                                               .progress( newDefer.notify );
+                                                               } else {
+                                                                       newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+                                                               }
+                                                       });
+                                               });
+                                               fns = null;
+                                       }).promise();
+                               },
+                               // Get a promise for this deferred
+                               // If obj is provided, the promise aspect is added to the object
+                               promise: function( obj ) {
+                                       return obj != null ? jQuery.extend( obj, promise ) : promise;
+                               }
+                       },
+                       deferred = {};
+
+               // Keep pipe for back-compat
+               promise.pipe = promise.then;
+
+               // Add list-specific methods
+               jQuery.each( tuples, function( i, tuple ) {
+                       var list = tuple[ 2 ],
+                               stateString = tuple[ 3 ];
+
+                       // promise[ done | fail | progress ] = list.add
+                       promise[ tuple[1] ] = list.add;
+
+                       // Handle state
+                       if ( stateString ) {
+                               list.add(function() {
+                                       // state = [ resolved | rejected ]
+                                       state = stateString;
+
+                               // [ reject_list | resolve_list ].disable; progress_list.lock
+                               }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+                       }
+
+                       // deferred[ resolve | reject | notify ]
+                       deferred[ tuple[0] ] = function() {
+                               deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+                               return this;
+                       };
+                       deferred[ tuple[0] + "With" ] = list.fireWith;
+               });
+
+               // Make the deferred a promise
+               promise.promise( deferred );
+
+               // Call given func if any
+               if ( func ) {
+                       func.call( deferred, deferred );
+               }
+
+               // All done!
+               return deferred;
+       },
+
+       // Deferred helper
+       when: function( subordinate /* , ..., subordinateN */ ) {
+               var i = 0,
+                       resolveValues = slice.call( arguments ),
+                       length = resolveValues.length,
+
+                       // the count of uncompleted subordinates
+                       remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+                       // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+                       deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+                       // Update function for both resolve and progress values
+                       updateFunc = function( i, contexts, values ) {
+                               return function( value ) {
+                                       contexts[ i ] = this;
+                                       values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+                                       if ( values === progressValues ) {
+                                               deferred.notifyWith( contexts, values );
+                                       } else if ( !( --remaining ) ) {
+                                               deferred.resolveWith( contexts, values );
+                                       }
+                               };
+                       },
+
+                       progressValues, progressContexts, resolveContexts;
+
+               // Add listeners to Deferred subordinates; treat others as resolved
+               if ( length > 1 ) {
+                       progressValues = new Array( length );
+                       progressContexts = new Array( length );
+                       resolveContexts = new Array( length );
+                       for ( ; i < length; i++ ) {
+                               if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+                                       resolveValues[ i ].promise()
+                                               .done( updateFunc( i, resolveContexts, resolveValues ) )
+                                               .fail( deferred.reject )
+                                               .progress( updateFunc( i, progressContexts, progressValues ) );
+                               } else {
+                                       --remaining;
+                               }
+                       }
+               }
+
+               // If we're not waiting on anything, resolve the master
+               if ( !remaining ) {
+                       deferred.resolveWith( resolveContexts, resolveValues );
+               }
+
+               return deferred.promise();
+       }
+});
+
+
+// The deferred used on DOM ready
+var readyList;
+
+jQuery.fn.ready = function( fn ) {
+       // Add the callback
+       jQuery.ready.promise().done( fn );
+
+       return this;
+};
+
+jQuery.extend({
+       // Is the DOM ready to be used? Set to true once it occurs.
+       isReady: false,
+
+       // A counter to track how many items to wait for before
+       // the ready event fires. See #6781
+       readyWait: 1,
+
+       // Hold (or release) the ready event
+       holdReady: function( hold ) {
+               if ( hold ) {
+                       jQuery.readyWait++;
+               } else {
+                       jQuery.ready( true );
+               }
+       },
+
+       // Handle when the DOM is ready
+       ready: function( wait ) {
+
+               // Abort if there are pending holds or we're already ready
+               if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+                       return;
+               }
+
+               // Remember that the DOM is ready
+               jQuery.isReady = true;
+
+               // If a normal DOM Ready event fired, decrement, and wait if need be
+               if ( wait !== true && --jQuery.readyWait > 0 ) {
+                       return;
+               }
+
+               // If there are functions bound, to execute
+               readyList.resolveWith( document, [ jQuery ] );
+
+               // Trigger any bound ready events
+               if ( jQuery.fn.triggerHandler ) {
+                       jQuery( document ).triggerHandler( "ready" );
+                       jQuery( document ).off( "ready" );
+               }
+       }
+});
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+       document.removeEventListener( "DOMContentLoaded", completed, false );
+       window.removeEventListener( "load", completed, false );
+       jQuery.ready();
+}
+
+jQuery.ready.promise = function( obj ) {
+       if ( !readyList ) {
+
+               readyList = jQuery.Deferred();
+
+               // Catch cases where $(document).ready() is called after the browser event has already occurred.
+               // We once tried to use readyState "interactive" here, but it caused issues like the one
+               // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+               if ( document.readyState === "complete" ) {
+                       // Handle it asynchronously to allow scripts the opportunity to delay ready
+                       setTimeout( jQuery.ready );
+
+               } else {
+
+                       // Use the handy event callback
+                       document.addEventListener( "DOMContentLoaded", completed, false );
+
+                       // A fallback to window.onload, that will always work
+                       window.addEventListener( "load", completed, false );
+               }
+       }
+       return readyList.promise( obj );
+};
+
+// Kick off the DOM ready check even if the user does not
+jQuery.ready.promise();
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+       var i = 0,
+               len = elems.length,
+               bulk = key == null;
+
+       // Sets many values
+       if ( jQuery.type( key ) === "object" ) {
+               chainable = true;
+               for ( i in key ) {
+                       jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+               }
+
+       // Sets one value
+       } else if ( value !== undefined ) {
+               chainable = true;
+
+               if ( !jQuery.isFunction( value ) ) {
+                       raw = true;
+               }
+
+               if ( bulk ) {
+                       // Bulk operations run against the entire set
+                       if ( raw ) {
+                               fn.call( elems, value );
+                               fn = null;
+
+                       // ...except when executing function values
+                       } else {
+                               bulk = fn;
+                               fn = function( elem, key, value ) {
+                                       return bulk.call( jQuery( elem ), value );
+                               };
+                       }
+               }
+
+               if ( fn ) {
+                       for ( ; i < len; i++ ) {
+                               fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+                       }
+               }
+       }
+
+       return chainable ?
+               elems :
+
+               // Gets
+               bulk ?
+                       fn.call( elems ) :
+                       len ? fn( elems[0], key ) : emptyGet;
+};
+
+
+/**
+ * Determines whether an object can have data
+ */
+jQuery.acceptData = function( owner ) {
+       // Accepts only:
+       //  - Node
+       //    - Node.ELEMENT_NODE
+       //    - Node.DOCUMENT_NODE
+       //  - Object
+       //    - Any
+       /* jshint -W018 */
+       return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+function Data() {
+       // Support: Android<4,
+       // Old WebKit does not have Object.preventExtensions/freeze method,
+       // return new empty object instead with no [[set]] accessor
+       Object.defineProperty( this.cache = {}, 0, {
+               get: function() {
+                       return {};
+               }
+       });
+
+       this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+Data.accepts = jQuery.acceptData;
+
+Data.prototype = {
+       key: function( owner ) {
+               // We can accept data for non-element nodes in modern browsers,
+               // but we should not, see #8335.
+               // Always return the key for a frozen object.
+               if ( !Data.accepts( owner ) ) {
+                       return 0;
+               }
+
+               var descriptor = {},
+                       // Check if the owner object already has a cache key
+                       unlock = owner[ this.expando ];
+
+               // If not, create one
+               if ( !unlock ) {
+                       unlock = Data.uid++;
+
+                       // Secure it in a non-enumerable, non-writable property
+                       try {
+                               descriptor[ this.expando ] = { value: unlock };
+                               Object.defineProperties( owner, descriptor );
+
+                       // Support: Android<4
+                       // Fallback to a less secure definition
+                       } catch ( e ) {
+                               descriptor[ this.expando ] = unlock;
+                               jQuery.extend( owner, descriptor );
+                       }
+               }
+
+               // Ensure the cache object
+               if ( !this.cache[ unlock ] ) {
+                       this.cache[ unlock ] = {};
+               }
+
+               return unlock;
+       },
+       set: function( owner, data, value ) {
+               var prop,
+                       // There may be an unlock assigned to this node,
+                       // if there is no entry for this "owner", create one inline
+                       // and set the unlock as though an owner entry had always existed
+                       unlock = this.key( owner ),
+                       cache = this.cache[ unlock ];
+
+               // Handle: [ owner, key, value ] args
+               if ( typeof data === "string" ) {
+                       cache[ data ] = value;
+
+               // Handle: [ owner, { properties } ] args
+               } else {
+                       // Fresh assignments by object are shallow copied
+                       if ( jQuery.isEmptyObject( cache ) ) {
+                               jQuery.extend( this.cache[ unlock ], data );
+                       // Otherwise, copy the properties one-by-one to the cache object
+                       } else {
+                               for ( prop in data ) {
+                                       cache[ prop ] = data[ prop ];
+                               }
+                       }
+               }
+               return cache;
+       },
+       get: function( owner, key ) {
+               // Either a valid cache is found, or will be created.
+               // New caches will be created and the unlock returned,
+               // allowing direct access to the newly created
+               // empty data object. A valid owner object must be provided.
+               var cache = this.cache[ this.key( owner ) ];
+
+               return key === undefined ?
+                       cache : cache[ key ];
+       },
+       access: function( owner, key, value ) {
+               var stored;
+               // In cases where either:
+               //
+               //   1. No key was specified
+               //   2. A string key was specified, but no value provided
+               //
+               // Take the "read" path and allow the get method to determine
+               // which value to return, respectively either:
+               //
+               //   1. The entire cache object
+               //   2. The data stored at the key
+               //
+               if ( key === undefined ||
+                               ((key && typeof key === "string") && value === undefined) ) {
+
+                       stored = this.get( owner, key );
+
+                       return stored !== undefined ?
+                               stored : this.get( owner, jQuery.camelCase(key) );
+               }
+
+               // [*]When the key is not a string, or both a key and value
+               // are specified, set or extend (existing objects) with either:
+               //
+               //   1. An object of properties
+               //   2. A key and value
+               //
+               this.set( owner, key, value );
+
+               // Since the "set" path can have two possible entry points
+               // return the expected data based on which path was taken[*]
+               return value !== undefined ? value : key;
+       },
+       remove: function( owner, key ) {
+               var i, name, camel,
+                       unlock = this.key( owner ),
+                       cache = this.cache[ unlock ];
+
+               if ( key === undefined ) {
+                       this.cache[ unlock ] = {};
+
+               } else {
+                       // Support array or space separated string of keys
+                       if ( jQuery.isArray( key ) ) {
+                               // If "name" is an array of keys...
+                               // When data is initially created, via ("key", "val") signature,
+                               // keys will be converted to camelCase.
+                               // Since there is no way to tell _how_ a key was added, remove
+                               // both plain key and camelCase key. #12786
+                               // This will only penalize the array argument path.
+                               name = key.concat( key.map( jQuery.camelCase ) );
+                       } else {
+                               camel = jQuery.camelCase( key );
+                               // Try the string as a key before any manipulation
+                               if ( key in cache ) {
+                                       name = [ key, camel ];
+                               } else {
+                                       // If a key with the spaces exists, use it.
+                                       // Otherwise, create an array by matching non-whitespace
+                                       name = camel;
+                                       name = name in cache ?
+                                               [ name ] : ( name.match( rnotwhite ) || [] );
+                               }
+                       }
+
+                       i = name.length;
+                       while ( i-- ) {
+                               delete cache[ name[ i ] ];
+                       }
+               }
+       },
+       hasData: function( owner ) {
+               return !jQuery.isEmptyObject(
+                       this.cache[ owner[ this.expando ] ] || {}
+               );
+       },
+       discard: function( owner ) {
+               if ( owner[ this.expando ] ) {
+                       delete this.cache[ owner[ this.expando ] ];
+               }
+       }
+};
+var data_priv = new Data();
+
+var data_user = new Data();
+
+
+
+//     Implementation Summary
+//
+//     1. Enforce API surface and semantic compatibility with 1.9.x branch
+//     2. Improve the module's maintainability by reducing the storage
+//             paths to a single mechanism.
+//     3. Use the same single mechanism to support "private" and "user" data.
+//     4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//     5. Avoid exposing implementation details on user objects (eg. expando properties)
+//     6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+       rmultiDash = /([A-Z])/g;
+
+function dataAttr( elem, key, data ) {
+       var name;
+
+       // If nothing was found internally, try to fetch any
+       // data from the HTML5 data-* attribute
+       if ( data === undefined && elem.nodeType === 1 ) {
+               name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+               data = elem.getAttribute( name );
+
+               if ( typeof data === "string" ) {
+                       try {
+                               data = data === "true" ? true :
+                                       data === "false" ? false :
+                                       data === "null" ? null :
+                                       // Only convert to a number if it doesn't change the string
+                                       +data + "" === data ? +data :
+                                       rbrace.test( data ) ? jQuery.parseJSON( data ) :
+                                       data;
+                       } catch( e ) {}
+
+                       // Make sure we set the data so it isn't changed later
+                       data_user.set( elem, key, data );
+               } else {
+                       data = undefined;
+               }
+       }
+       return data;
+}
+
+jQuery.extend({
+       hasData: function( elem ) {
+               return data_user.hasData( elem ) || data_priv.hasData( elem );
+       },
+
+       data: function( elem, name, data ) {
+               return data_user.access( elem, name, data );
+       },
+
+       removeData: function( elem, name ) {
+               data_user.remove( elem, name );
+       },
+
+       // TODO: Now that all calls to _data and _removeData have been replaced
+       // with direct calls to data_priv methods, these can be deprecated.
+       _data: function( elem, name, data ) {
+               return data_priv.access( elem, name, data );
+       },
+
+       _removeData: function( elem, name ) {
+               data_priv.remove( elem, name );
+       }
+});
+
+jQuery.fn.extend({
+       data: function( key, value ) {
+               var i, name, data,
+                       elem = this[ 0 ],
+                       attrs = elem && elem.attributes;
+
+               // Gets all values
+               if ( key === undefined ) {
+                       if ( this.length ) {
+                               data = data_user.get( elem );
+
+                               if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
+                                       i = attrs.length;
+                                       while ( i-- ) {
+
+                                               // Support: IE11+
+                                               // The attrs elements can be null (#14894)
+                                               if ( attrs[ i ] ) {
+                                                       name = attrs[ i ].name;
+                                                       if ( name.indexOf( "data-" ) === 0 ) {
+                                                               name = jQuery.camelCase( name.slice(5) );
+                                                               dataAttr( elem, name, data[ name ] );
+                                                       }
+                                               }
+                                       }
+                                       data_priv.set( elem, "hasDataAttrs", true );
+                               }
+                       }
+
+                       return data;
+               }
+
+               // Sets multiple values
+               if ( typeof key === "object" ) {
+                       return this.each(function() {
+                               data_user.set( this, key );
+                       });
+               }
+
+               return access( this, function( value ) {
+                       var data,
+                               camelKey = jQuery.camelCase( key );
+
+                       // The calling jQuery object (element matches) is not empty
+                       // (and therefore has an element appears at this[ 0 ]) and the
+                       // `value` parameter was not undefined. An empty jQuery object
+                       // will result in `undefined` for elem = this[ 0 ] which will
+                       // throw an exception if an attempt to read a data cache is made.
+                       if ( elem && value === undefined ) {
+                               // Attempt to get data from the cache
+                               // with the key as-is
+                               data = data_user.get( elem, key );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // Attempt to get data from the cache
+                               // with the key camelized
+                               data = data_user.get( elem, camelKey );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // Attempt to "discover" the data in
+                               // HTML5 custom data-* attrs
+                               data = dataAttr( elem, camelKey, undefined );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // We tried really hard, but the data doesn't exist.
+                               return;
+                       }
+
+                       // Set the data...
+                       this.each(function() {
+                               // First, attempt to store a copy or reference of any
+                               // data that might've been store with a camelCased key.
+                               var data = data_user.get( this, camelKey );
+
+                               // For HTML5 data-* attribute interop, we have to
+                               // store property names with dashes in a camelCase form.
+                               // This might not apply to all properties...*
+                               data_user.set( this, camelKey, value );
+
+                               // *... In the case of properties that might _actually_
+                               // have dashes, we need to also store a copy of that
+                               // unchanged property.
+                               if ( key.indexOf("-") !== -1 && data !== undefined ) {
+                                       data_user.set( this, key, value );
+                               }
+                       });
+               }, null, value, arguments.length > 1, null, true );
+       },
+
+       removeData: function( key ) {
+               return this.each(function() {
+                       data_user.remove( this, key );
+               });
+       }
+});
+
+
+jQuery.extend({
+       queue: function( elem, type, data ) {
+               var queue;
+
+               if ( elem ) {
+                       type = ( type || "fx" ) + "queue";
+                       queue = data_priv.get( elem, type );
+
+                       // Speed up dequeue by getting out quickly if this is just a lookup
+                       if ( data ) {
+                               if ( !queue || jQuery.isArray( data ) ) {
+                                       queue = data_priv.access( elem, type, jQuery.makeArray(data) );
+                               } else {
+                                       queue.push( data );
+                               }
+                       }
+                       return queue || [];
+               }
+       },
+
+       dequeue: function( elem, type ) {
+               type = type || "fx";
+
+               var queue = jQuery.queue( elem, type ),
+                       startLength = queue.length,
+                       fn = queue.shift(),
+                       hooks = jQuery._queueHooks( elem, type ),
+                       next = function() {
+                               jQuery.dequeue( elem, type );
+                       };
+
+               // If the fx queue is dequeued, always remove the progress sentinel
+               if ( fn === "inprogress" ) {
+                       fn = queue.shift();
+                       startLength--;
+               }
+
+               if ( fn ) {
+
+                       // Add a progress sentinel to prevent the fx queue from being
+                       // automatically dequeued
+                       if ( type === "fx" ) {
+                               queue.unshift( "inprogress" );
+                       }
+
+                       // Clear up the last queue stop function
+                       delete hooks.stop;
+                       fn.call( elem, next, hooks );
+               }
+
+               if ( !startLength && hooks ) {
+                       hooks.empty.fire();
+               }
+       },
+
+       // Not public - generate a queueHooks object, or return the current one
+       _queueHooks: function( elem, type ) {
+               var key = type + "queueHooks";
+               return data_priv.get( elem, key ) || data_priv.access( elem, key, {
+                       empty: jQuery.Callbacks("once memory").add(function() {
+                               data_priv.remove( elem, [ type + "queue", key ] );
+                       })
+               });
+       }
+});
+
+jQuery.fn.extend({
+       queue: function( type, data ) {
+               var setter = 2;
+
+               if ( typeof type !== "string" ) {
+                       data = type;
+                       type = "fx";
+                       setter--;
+               }
+
+               if ( arguments.length < setter ) {
+                       return jQuery.queue( this[0], type );
+               }
+
+               return data === undefined ?
+                       this :
+                       this.each(function() {
+                               var queue = jQuery.queue( this, type, data );
+
+                               // Ensure a hooks for this queue
+                               jQuery._queueHooks( this, type );
+
+                               if ( type === "fx" && queue[0] !== "inprogress" ) {
+                                       jQuery.dequeue( this, type );
+                               }
+                       });
+       },
+       dequeue: function( type ) {
+               return this.each(function() {
+                       jQuery.dequeue( this, type );
+               });
+       },
+       clearQueue: function( type ) {
+               return this.queue( type || "fx", [] );
+       },
+       // Get a promise resolved when queues of a certain type
+       // are emptied (fx is the type by default)
+       promise: function( type, obj ) {
+               var tmp,
+                       count = 1,
+                       defer = jQuery.Deferred(),
+                       elements = this,
+                       i = this.length,
+                       resolve = function() {
+                               if ( !( --count ) ) {
+                                       defer.resolveWith( elements, [ elements ] );
+                               }
+                       };
+
+               if ( typeof type !== "string" ) {
+                       obj = type;
+                       type = undefined;
+               }
+               type = type || "fx";
+
+               while ( i-- ) {
+                       tmp = data_priv.get( elements[ i ], type + "queueHooks" );
+                       if ( tmp && tmp.empty ) {
+                               count++;
+                               tmp.empty.add( resolve );
+                       }
+               }
+               resolve();
+               return defer.promise( obj );
+       }
+});
+var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHidden = function( elem, el ) {
+               // isHidden might be called from jQuery#filter function;
+               // in that case, element will be second argument
+               elem = el || elem;
+               return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+       };
+
+var rcheckableType = (/^(?:checkbox|radio)$/i);
+
+
+
+(function() {
+       var fragment = document.createDocumentFragment(),
+               div = fragment.appendChild( document.createElement( "div" ) ),
+               input = document.createElement( "input" );
+
+       // Support: Safari<=5.1
+       // Check state lost if the name is set (#11217)
+       // Support: Windows Web Apps (WWA)
+       // `name` and `type` must use .setAttribute for WWA (#14901)
+       input.setAttribute( "type", "radio" );
+       input.setAttribute( "checked", "checked" );
+       input.setAttribute( "name", "t" );
+
+       div.appendChild( input );
+
+       // Support: Safari<=5.1, Android<4.2
+       // Older WebKit doesn't clone checked state correctly in fragments
+       support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+       // Support: IE<=11+
+       // Make sure textarea (and checkbox) defaultValue is properly cloned
+       div.innerHTML = "<textarea>x</textarea>";
+       support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+})();
+var strundefined = typeof undefined;
+
+
+
+support.focusinBubbles = "onfocusin" in window;
+
+
+var
+       rkeyEvent = /^key/,
+       rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
+       rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+       rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+       return true;
+}
+
+function returnFalse() {
+       return false;
+}
+
+function safeActiveElement() {
+       try {
+               return document.activeElement;
+       } catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+       global: {},
+
+       add: function( elem, types, handler, data, selector ) {
+
+               var handleObjIn, eventHandle, tmp,
+                       events, t, handleObj,
+                       special, handlers, type, namespaces, origType,
+                       elemData = data_priv.get( elem );
+
+               // Don't attach events to noData or text/comment nodes (but allow plain objects)
+               if ( !elemData ) {
+                       return;
+               }
+
+               // Caller can pass in an object of custom data in lieu of the handler
+               if ( handler.handler ) {
+                       handleObjIn = handler;
+                       handler = handleObjIn.handler;
+                       selector = handleObjIn.selector;
+               }
+
+               // Make sure that the handler has a unique ID, used to find/remove it later
+               if ( !handler.guid ) {
+                       handler.guid = jQuery.guid++;
+               }
+
+               // Init the element's event structure and main handler, if this is the first
+               if ( !(events = elemData.events) ) {
+                       events = elemData.events = {};
+               }
+               if ( !(eventHandle = elemData.handle) ) {
+                       eventHandle = elemData.handle = function( e ) {
+                               // Discard the second event of a jQuery.event.trigger() and
+                               // when an event is called after a page has unloaded
+                               return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
+                                       jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+                       };
+               }
+
+               // Handle multiple events separated by a space
+               types = ( types || "" ).match( rnotwhite ) || [ "" ];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[t] ) || [];
+                       type = origType = tmp[1];
+                       namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+                       // There *must* be a type, no attaching namespace-only handlers
+                       if ( !type ) {
+                               continue;
+                       }
+
+                       // If event changes its type, use the special event handlers for the changed type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // If selector defined, determine special event api type, otherwise given type
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+
+                       // Update special based on newly reset type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // handleObj is passed to all event handlers
+                       handleObj = jQuery.extend({
+                               type: type,
+                               origType: origType,
+                               data: data,
+                               handler: handler,
+                               guid: handler.guid,
+                               selector: selector,
+                               needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+                               namespace: namespaces.join(".")
+                       }, handleObjIn );
+
+                       // Init the event handler queue if we're the first
+                       if ( !(handlers = events[ type ]) ) {
+                               handlers = events[ type ] = [];
+                               handlers.delegateCount = 0;
+
+                               // Only use addEventListener if the special events handler returns false
+                               if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+                                       if ( elem.addEventListener ) {
+                                               elem.addEventListener( type, eventHandle, false );
+                                       }
+                               }
+                       }
+
+                       if ( special.add ) {
+                               special.add.call( elem, handleObj );
+
+                               if ( !handleObj.handler.guid ) {
+                                       handleObj.handler.guid = handler.guid;
+                               }
+                       }
+
+                       // Add to the element's handler list, delegates in front
+                       if ( selector ) {
+                               handlers.splice( handlers.delegateCount++, 0, handleObj );
+                       } else {
+                               handlers.push( handleObj );
+                       }
+
+                       // Keep track of which events have ever been used, for event optimization
+                       jQuery.event.global[ type ] = true;
+               }
+
+       },
+
+       // Detach an event or set of events from an element
+       remove: function( elem, types, handler, selector, mappedTypes ) {
+
+               var j, origCount, tmp,
+                       events, t, handleObj,
+                       special, handlers, type, namespaces, origType,
+                       elemData = data_priv.hasData( elem ) && data_priv.get( elem );
+
+               if ( !elemData || !(events = elemData.events) ) {
+                       return;
+               }
+
+               // Once for each type.namespace in types; type may be omitted
+               types = ( types || "" ).match( rnotwhite ) || [ "" ];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[t] ) || [];
+                       type = origType = tmp[1];
+                       namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+                       // Unbind all events (on this namespace, if provided) for the element
+                       if ( !type ) {
+                               for ( type in events ) {
+                                       jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+                               }
+                               continue;
+                       }
+
+                       special = jQuery.event.special[ type ] || {};
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+                       handlers = events[ type ] || [];
+                       tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+                       // Remove matching events
+                       origCount = j = handlers.length;
+                       while ( j-- ) {
+                               handleObj = handlers[ j ];
+
+                               if ( ( mappedTypes || origType === handleObj.origType ) &&
+                                       ( !handler || handler.guid === handleObj.guid ) &&
+                                       ( !tmp || tmp.test( handleObj.namespace ) ) &&
+                                       ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+                                       handlers.splice( j, 1 );
+
+                                       if ( handleObj.selector ) {
+                                               handlers.delegateCount--;
+                                       }
+                                       if ( special.remove ) {
+                                               special.remove.call( elem, handleObj );
+                                       }
+                               }
+                       }
+
+                       // Remove generic event handler if we removed something and no more handlers exist
+                       // (avoids potential for endless recursion during removal of special event handlers)
+                       if ( origCount && !handlers.length ) {
+                               if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+                                       jQuery.removeEvent( elem, type, elemData.handle );
+                               }
+
+                               delete events[ type ];
+                       }
+               }
+
+               // Remove the expando if it's no longer used
+               if ( jQuery.isEmptyObject( events ) ) {
+                       delete elemData.handle;
+                       data_priv.remove( elem, "events" );
+               }
+       },
+
+       trigger: function( event, data, elem, onlyHandlers ) {
+
+               var i, cur, tmp, bubbleType, ontype, handle, special,
+                       eventPath = [ elem || document ],
+                       type = hasOwn.call( event, "type" ) ? event.type : event,
+                       namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+               cur = tmp = elem = elem || document;
+
+               // Don't do events on text and comment nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return;
+               }
+
+               // focus/blur morphs to focusin/out; ensure we're not firing them right now
+               if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+                       return;
+               }
+
+               if ( type.indexOf(".") >= 0 ) {
+                       // Namespaced trigger; create a regexp to match event type in handle()
+                       namespaces = type.split(".");
+                       type = namespaces.shift();
+                       namespaces.sort();
+               }
+               ontype = type.indexOf(":") < 0 && "on" + type;
+
+               // Caller can pass in a jQuery.Event object, Object, or just an event type string
+               event = event[ jQuery.expando ] ?
+                       event :
+                       new jQuery.Event( type, typeof event === "object" && event );
+
+               // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+               event.isTrigger = onlyHandlers ? 2 : 3;
+               event.namespace = namespaces.join(".");
+               event.namespace_re = event.namespace ?
+                       new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+                       null;
+
+               // Clean up the event in case it is being reused
+               event.result = undefined;
+               if ( !event.target ) {
+                       event.target = elem;
+               }
+
+               // Clone any incoming data and prepend the event, creating the handler arg list
+               data = data == null ?
+                       [ event ] :
+                       jQuery.makeArray( data, [ event ] );
+
+               // Allow special events to draw outside the lines
+               special = jQuery.event.special[ type ] || {};
+               if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+                       return;
+               }
+
+               // Determine event propagation path in advance, per W3C events spec (#9951)
+               // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+               if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+                       bubbleType = special.delegateType || type;
+                       if ( !rfocusMorph.test( bubbleType + type ) ) {
+                               cur = cur.parentNode;
+                       }
+                       for ( ; cur; cur = cur.parentNode ) {
+                               eventPath.push( cur );
+                               tmp = cur;
+                       }
+
+                       // Only add window if we got to document (e.g., not plain obj or detached DOM)
+                       if ( tmp === (elem.ownerDocument || document) ) {
+                               eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+                       }
+               }
+
+               // Fire handlers on the event path
+               i = 0;
+               while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+                       event.type = i > 1 ?
+                               bubbleType :
+                               special.bindType || type;
+
+                       // jQuery handler
+                       handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
+                       if ( handle ) {
+                               handle.apply( cur, data );
+                       }
+
+                       // Native handler
+                       handle = ontype && cur[ ontype ];
+                       if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
+                               event.result = handle.apply( cur, data );
+                               if ( event.result === false ) {
+                                       event.preventDefault();
+                               }
+                       }
+               }
+               event.type = type;
+
+               // If nobody prevented the default action, do it now
+               if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+                       if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+                               jQuery.acceptData( elem ) ) {
+
+                               // Call a native DOM method on the target with the same name name as the event.
+                               // Don't do default actions on window, that's where global variables be (#6170)
+                               if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+                                       // Don't re-trigger an onFOO event when we call its FOO() method
+                                       tmp = elem[ ontype ];
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = null;
+                                       }
+
+                                       // Prevent re-triggering of the same event, since we already bubbled it above
+                                       jQuery.event.triggered = type;
+                                       elem[ type ]();
+                                       jQuery.event.triggered = undefined;
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = tmp;
+                                       }
+                               }
+                       }
+               }
+
+               return event.result;
+       },
+
+       dispatch: function( event ) {
+
+               // Make a writable jQuery.Event from the native event object
+               event = jQuery.event.fix( event );
+
+               var i, j, ret, matched, handleObj,
+                       handlerQueue = [],
+                       args = slice.call( arguments ),
+                       handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
+                       special = jQuery.event.special[ event.type ] || {};
+
+               // Use the fix-ed jQuery.Event rather than the (read-only) native event
+               args[0] = event;
+               event.delegateTarget = this;
+
+               // Call the preDispatch hook for the mapped type, and let it bail if desired
+               if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+                       return;
+               }
+
+               // Determine handlers
+               handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+               // Run delegates first; they may want to stop propagation beneath us
+               i = 0;
+               while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+                       event.currentTarget = matched.elem;
+
+                       j = 0;
+                       while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+                               // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+                               // a subset or equal to those in the bound event (both can have no namespace).
+                               if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+                                       event.handleObj = handleObj;
+                                       event.data = handleObj.data;
+
+                                       ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+                                                       .apply( matched.elem, args );
+
+                                       if ( ret !== undefined ) {
+                                               if ( (event.result = ret) === false ) {
+                                                       event.preventDefault();
+                                                       event.stopPropagation();
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               // Call the postDispatch hook for the mapped type
+               if ( special.postDispatch ) {
+                       special.postDispatch.call( this, event );
+               }
+
+               return event.result;
+       },
+
+       handlers: function( event, handlers ) {
+               var i, matches, sel, handleObj,
+                       handlerQueue = [],
+                       delegateCount = handlers.delegateCount,
+                       cur = event.target;
+
+               // Find delegate handlers
+               // Black-hole SVG <use> instance trees (#13180)
+               // Avoid non-left-click bubbling in Firefox (#3861)
+               if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+                       for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+                               // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+                               if ( cur.disabled !== true || event.type !== "click" ) {
+                                       matches = [];
+                                       for ( i = 0; i < delegateCount; i++ ) {
+                                               handleObj = handlers[ i ];
+
+                                               // Don't conflict with Object.prototype properties (#13203)
+                                               sel = handleObj.selector + " ";
+
+                                               if ( matches[ sel ] === undefined ) {
+                                                       matches[ sel ] = handleObj.needsContext ?
+                                                               jQuery( sel, this ).index( cur ) >= 0 :
+                                                               jQuery.find( sel, this, null, [ cur ] ).length;
+                                               }
+                                               if ( matches[ sel ] ) {
+                                                       matches.push( handleObj );
+                                               }
+                                       }
+                                       if ( matches.length ) {
+                                               handlerQueue.push({ elem: cur, handlers: matches });
+                                       }
+                               }
+                       }
+               }
+
+               // Add the remaining (directly-bound) handlers
+               if ( delegateCount < handlers.length ) {
+                       handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+               }
+
+               return handlerQueue;
+       },
+
+       // Includes some event props shared by KeyEvent and MouseEvent
+       props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+       fixHooks: {},
+
+       keyHooks: {
+               props: "char charCode key keyCode".split(" "),
+               filter: function( event, original ) {
+
+                       // Add which for key events
+                       if ( event.which == null ) {
+                               event.which = original.charCode != null ? original.charCode : original.keyCode;
+                       }
+
+                       return event;
+               }
+       },
+
+       mouseHooks: {
+               props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+               filter: function( event, original ) {
+                       var eventDoc, doc, body,
+                               button = original.button;
+
+                       // Calculate pageX/Y if missing and clientX/Y available
+                       if ( event.pageX == null && original.clientX != null ) {
+                               eventDoc = event.target.ownerDocument || document;
+                               doc = eventDoc.documentElement;
+                               body = eventDoc.body;
+
+                               event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+                               event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
+                       }
+
+                       // Add which for click: 1 === left; 2 === middle; 3 === right
+                       // Note: button is not normalized, so don't use it
+                       if ( !event.which && button !== undefined ) {
+                               event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+                       }
+
+                       return event;
+               }
+       },
+
+       fix: function( event ) {
+               if ( event[ jQuery.expando ] ) {
+                       return event;
+               }
+
+               // Create a writable copy of the event object and normalize some properties
+               var i, prop, copy,
+                       type = event.type,
+                       originalEvent = event,
+                       fixHook = this.fixHooks[ type ];
+
+               if ( !fixHook ) {
+                       this.fixHooks[ type ] = fixHook =
+                               rmouseEvent.test( type ) ? this.mouseHooks :
+                               rkeyEvent.test( type ) ? this.keyHooks :
+                               {};
+               }
+               copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+               event = new jQuery.Event( originalEvent );
+
+               i = copy.length;
+               while ( i-- ) {
+                       prop = copy[ i ];
+                       event[ prop ] = originalEvent[ prop ];
+               }
+
+               // Support: Cordova 2.5 (WebKit) (#13255)
+               // All events should have a target; Cordova deviceready doesn't
+               if ( !event.target ) {
+                       event.target = document;
+               }
+
+               // Support: Safari 6.0+, Chrome<28
+               // Target should not be a text node (#504, #13143)
+               if ( event.target.nodeType === 3 ) {
+                       event.target = event.target.parentNode;
+               }
+
+               return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+       },
+
+       special: {
+               load: {
+                       // Prevent triggered image.load events from bubbling to window.load
+                       noBubble: true
+               },
+               focus: {
+                       // Fire native event if possible so blur/focus sequence is correct
+                       trigger: function() {
+                               if ( this !== safeActiveElement() && this.focus ) {
+                                       this.focus();
+                                       return false;
+                               }
+                       },
+                       delegateType: "focusin"
+               },
+               blur: {
+                       trigger: function() {
+                               if ( this === safeActiveElement() && this.blur ) {
+                                       this.blur();
+                                       return false;
+                               }
+                       },
+                       delegateType: "focusout"
+               },
+               click: {
+                       // For checkbox, fire native event so checked state will be right
+                       trigger: function() {
+                               if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+                                       this.click();
+                                       return false;
+                               }
+                       },
+
+                       // For cross-browser consistency, don't fire native .click() on links
+                       _default: function( event ) {
+                               return jQuery.nodeName( event.target, "a" );
+                       }
+               },
+
+               beforeunload: {
+                       postDispatch: function( event ) {
+
+                               // Support: Firefox 20+
+                               // Firefox doesn't alert if the returnValue field is not set.
+                               if ( event.result !== undefined && event.originalEvent ) {
+                                       event.originalEvent.returnValue = event.result;
+                               }
+                       }
+               }
+       },
+
+       simulate: function( type, elem, event, bubble ) {
+               // Piggyback on a donor event to simulate a different one.
+               // Fake originalEvent to avoid donor's stopPropagation, but if the
+               // simulated event prevents default then we do the same on the donor.
+               var e = jQuery.extend(
+                       new jQuery.Event(),
+                       event,
+                       {
+                               type: type,
+                               isSimulated: true,
+                               originalEvent: {}
+                       }
+               );
+               if ( bubble ) {
+                       jQuery.event.trigger( e, null, elem );
+               } else {
+                       jQuery.event.dispatch.call( elem, e );
+               }
+               if ( e.isDefaultPrevented() ) {
+                       event.preventDefault();
+               }
+       }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+       if ( elem.removeEventListener ) {
+               elem.removeEventListener( type, handle, false );
+       }
+};
+
+jQuery.Event = function( src, props ) {
+       // Allow instantiation without the 'new' keyword
+       if ( !(this instanceof jQuery.Event) ) {
+               return new jQuery.Event( src, props );
+       }
+
+       // Event object
+       if ( src && src.type ) {
+               this.originalEvent = src;
+               this.type = src.type;
+
+               // Events bubbling up the document may have been marked as prevented
+               // by a handler lower down the tree; reflect the correct value.
+               this.isDefaultPrevented = src.defaultPrevented ||
+                               src.defaultPrevented === undefined &&
+                               // Support: Android<4.0
+                               src.returnValue === false ?
+                       returnTrue :
+                       returnFalse;
+
+       // Event type
+       } else {
+               this.type = src;
+       }
+
+       // Put explicitly provided properties onto the event object
+       if ( props ) {
+               jQuery.extend( this, props );
+       }
+
+       // Create a timestamp if incoming event doesn't have one
+       this.timeStamp = src && src.timeStamp || jQuery.now();
+
+       // Mark it as fixed
+       this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+       isDefaultPrevented: returnFalse,
+       isPropagationStopped: returnFalse,
+       isImmediatePropagationStopped: returnFalse,
+
+       preventDefault: function() {
+               var e = this.originalEvent;
+
+               this.isDefaultPrevented = returnTrue;
+
+               if ( e && e.preventDefault ) {
+                       e.preventDefault();
+               }
+       },
+       stopPropagation: function() {
+               var e = this.originalEvent;
+
+               this.isPropagationStopped = returnTrue;
+
+               if ( e && e.stopPropagation ) {
+                       e.stopPropagation();
+               }
+       },
+       stopImmediatePropagation: function() {
+               var e = this.originalEvent;
+
+               this.isImmediatePropagationStopped = returnTrue;
+
+               if ( e && e.stopImmediatePropagation ) {
+                       e.stopImmediatePropagation();
+               }
+
+               this.stopPropagation();
+       }
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// Support: Chrome 15+
+jQuery.each({
+       mouseenter: "mouseover",
+       mouseleave: "mouseout",
+       pointerenter: "pointerover",
+       pointerleave: "pointerout"
+}, function( orig, fix ) {
+       jQuery.event.special[ orig ] = {
+               delegateType: fix,
+               bindType: fix,
+
+               handle: function( event ) {
+                       var ret,
+                               target = this,
+                               related = event.relatedTarget,
+                               handleObj = event.handleObj;
+
+                       // For mousenter/leave call the handler if related is outside the target.
+                       // NB: No relatedTarget if the mouse left/entered the browser window
+                       if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+                               event.type = handleObj.origType;
+                               ret = handleObj.handler.apply( this, arguments );
+                               event.type = fix;
+                       }
+                       return ret;
+               }
+       };
+});
+
+// Support: Firefox, Chrome, Safari
+// Create "bubbling" focus and blur events
+if ( !support.focusinBubbles ) {
+       jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+               // Attach a single capturing handler on the document while someone wants focusin/focusout
+               var handler = function( event ) {
+                               jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+                       };
+
+               jQuery.event.special[ fix ] = {
+                       setup: function() {
+                               var doc = this.ownerDocument || this,
+                                       attaches = data_priv.access( doc, fix );
+
+                               if ( !attaches ) {
+                                       doc.addEventListener( orig, handler, true );
+                               }
+                               data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
+                       },
+                       teardown: function() {
+                               var doc = this.ownerDocument || this,
+                                       attaches = data_priv.access( doc, fix ) - 1;
+
+                               if ( !attaches ) {
+                                       doc.removeEventListener( orig, handler, true );
+                                       data_priv.remove( doc, fix );
+
+                               } else {
+                                       data_priv.access( doc, fix, attaches );
+                               }
+                       }
+               };
+       });
+}
+
+jQuery.fn.extend({
+
+       on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+               var origFn, type;
+
+               // Types can be a map of types/handlers
+               if ( typeof types === "object" ) {
+                       // ( types-Object, selector, data )
+                       if ( typeof selector !== "string" ) {
+                               // ( types-Object, data )
+                               data = data || selector;
+                               selector = undefined;
+                       }
+                       for ( type in types ) {
+                               this.on( type, selector, data, types[ type ], one );
+                       }
+                       return this;
+               }
+
+               if ( data == null && fn == null ) {
+                       // ( types, fn )
+                       fn = selector;
+                       data = selector = undefined;
+               } else if ( fn == null ) {
+                       if ( typeof selector === "string" ) {
+                               // ( types, selector, fn )
+                               fn = data;
+                               data = undefined;
+                       } else {
+                               // ( types, data, fn )
+                               fn = data;
+                               data = selector;
+                               selector = undefined;
+                       }
+               }
+               if ( fn === false ) {
+                       fn = returnFalse;
+               } else if ( !fn ) {
+                       return this;
+               }
+
+               if ( one === 1 ) {
+                       origFn = fn;
+                       fn = function( event ) {
+                               // Can use an empty set, since event contains the info
+                               jQuery().off( event );
+                               return origFn.apply( this, arguments );
+                       };
+                       // Use same guid so caller can remove using origFn
+                       fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+               }
+               return this.each( function() {
+                       jQuery.event.add( this, types, fn, data, selector );
+               });
+       },
+       one: function( types, selector, data, fn ) {
+               return this.on( types, selector, data, fn, 1 );
+       },
+       off: function( types, selector, fn ) {
+               var handleObj, type;
+               if ( types && types.preventDefault && types.handleObj ) {
+                       // ( event )  dispatched jQuery.Event
+                       handleObj = types.handleObj;
+                       jQuery( types.delegateTarget ).off(
+                               handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+                               handleObj.selector,
+                               handleObj.handler
+                       );
+                       return this;
+               }
+               if ( typeof types === "object" ) {
+                       // ( types-object [, selector] )
+                       for ( type in types ) {
+                               this.off( type, selector, types[ type ] );
+                       }
+                       return this;
+               }
+               if ( selector === false || typeof selector === "function" ) {
+                       // ( types [, fn] )
+                       fn = selector;
+                       selector = undefined;
+               }
+               if ( fn === false ) {
+                       fn = returnFalse;
+               }
+               return this.each(function() {
+                       jQuery.event.remove( this, types, fn, selector );
+               });
+       },
+
+       trigger: function( type, data ) {
+               return this.each(function() {
+                       jQuery.event.trigger( type, data, this );
+               });
+       },
+       triggerHandler: function( type, data ) {
+               var elem = this[0];
+               if ( elem ) {
+                       return jQuery.event.trigger( type, data, elem, true );
+               }
+       }
+});
+
+
+var
+       rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+       rtagName = /<([\w:]+)/,
+       rhtml = /<|&#?\w+;/,
+       rnoInnerhtml = /<(?:script|style|link)/i,
+       // checked="checked" or checked
+       rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+       rscriptType = /^$|\/(?:java|ecma)script/i,
+       rscriptTypeMasked = /^true\/(.*)/,
+       rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+       // We have to close these tags to support XHTML (#13200)
+       wrapMap = {
+
+               // Support: IE9
+               option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+               thead: [ 1, "<table>", "</table>" ],
+               col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+               tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+               td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+               _default: [ 0, "", "" ]
+       };
+
+// Support: IE9
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// Support: 1.x compatibility
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+       return jQuery.nodeName( elem, "table" ) &&
+               jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
+
+               elem.getElementsByTagName("tbody")[0] ||
+                       elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+               elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+       elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
+       return elem;
+}
+function restoreScript( elem ) {
+       var match = rscriptTypeMasked.exec( elem.type );
+
+       if ( match ) {
+               elem.type = match[ 1 ];
+       } else {
+               elem.removeAttribute("type");
+       }
+
+       return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+       var i = 0,
+               l = elems.length;
+
+       for ( ; i < l; i++ ) {
+               data_priv.set(
+                       elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
+               );
+       }
+}
+
+function cloneCopyEvent( src, dest ) {
+       var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+       if ( dest.nodeType !== 1 ) {
+               return;
+       }
+
+       // 1. Copy private data: events, handlers, etc.
+       if ( data_priv.hasData( src ) ) {
+               pdataOld = data_priv.access( src );
+               pdataCur = data_priv.set( dest, pdataOld );
+               events = pdataOld.events;
+
+               if ( events ) {
+                       delete pdataCur.handle;
+                       pdataCur.events = {};
+
+                       for ( type in events ) {
+                               for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+                                       jQuery.event.add( dest, type, events[ type ][ i ] );
+                               }
+                       }
+               }
+       }
+
+       // 2. Copy user data
+       if ( data_user.hasData( src ) ) {
+               udataOld = data_user.access( src );
+               udataCur = jQuery.extend( {}, udataOld );
+
+               data_user.set( dest, udataCur );
+       }
+}
+
+function getAll( context, tag ) {
+       var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
+                       context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
+                       [];
+
+       return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+               jQuery.merge( [ context ], ret ) :
+               ret;
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+       var nodeName = dest.nodeName.toLowerCase();
+
+       // Fails to persist the checked state of a cloned checkbox or radio button.
+       if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+               dest.checked = src.checked;
+
+       // Fails to return the selected option to the default selected state when cloning options
+       } else if ( nodeName === "input" || nodeName === "textarea" ) {
+               dest.defaultValue = src.defaultValue;
+       }
+}
+
+jQuery.extend({
+       clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+               var i, l, srcElements, destElements,
+                       clone = elem.cloneNode( true ),
+                       inPage = jQuery.contains( elem.ownerDocument, elem );
+
+               // Fix IE cloning issues
+               if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+                               !jQuery.isXMLDoc( elem ) ) {
+
+                       // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+                       destElements = getAll( clone );
+                       srcElements = getAll( elem );
+
+                       for ( i = 0, l = srcElements.length; i < l; i++ ) {
+                               fixInput( srcElements[ i ], destElements[ i ] );
+                       }
+               }
+
+               // Copy the events from the original to the clone
+               if ( dataAndEvents ) {
+                       if ( deepDataAndEvents ) {
+                               srcElements = srcElements || getAll( elem );
+                               destElements = destElements || getAll( clone );
+
+                               for ( i = 0, l = srcElements.length; i < l; i++ ) {
+                                       cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+                               }
+                       } else {
+                               cloneCopyEvent( elem, clone );
+                       }
+               }
+
+               // Preserve script evaluation history
+               destElements = getAll( clone, "script" );
+               if ( destElements.length > 0 ) {
+                       setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+               }
+
+               // Return the cloned set
+               return clone;
+       },
+
+       buildFragment: function( elems, context, scripts, selection ) {
+               var elem, tmp, tag, wrap, contains, j,
+                       fragment = context.createDocumentFragment(),
+                       nodes = [],
+                       i = 0,
+                       l = elems.length;
+
+               for ( ; i < l; i++ ) {
+                       elem = elems[ i ];
+
+                       if ( elem || elem === 0 ) {
+
+                               // Add nodes directly
+                               if ( jQuery.type( elem ) === "object" ) {
+                                       // Support: QtWebKit, PhantomJS
+                                       // push.apply(_, arraylike) throws on ancient WebKit
+                                       jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+                               // Convert non-html into a text node
+                               } else if ( !rhtml.test( elem ) ) {
+                                       nodes.push( context.createTextNode( elem ) );
+
+                               // Convert html into DOM nodes
+                               } else {
+                                       tmp = tmp || fragment.appendChild( context.createElement("div") );
+
+                                       // Deserialize a standard representation
+                                       tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+                                       wrap = wrapMap[ tag ] || wrapMap._default;
+                                       tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
+
+                                       // Descend through wrappers to the right content
+                                       j = wrap[ 0 ];
+                                       while ( j-- ) {
+                                               tmp = tmp.lastChild;
+                                       }
+
+                                       // Support: QtWebKit, PhantomJS
+                                       // push.apply(_, arraylike) throws on ancient WebKit
+                                       jQuery.merge( nodes, tmp.childNodes );
+
+                                       // Remember the top-level container
+                                       tmp = fragment.firstChild;
+
+                                       // Ensure the created nodes are orphaned (#12392)
+                                       tmp.textContent = "";
+                               }
+                       }
+               }
+
+               // Remove wrapper from fragment
+               fragment.textContent = "";
+
+               i = 0;
+               while ( (elem = nodes[ i++ ]) ) {
+
+                       // #4087 - If origin and destination elements are the same, and this is
+                       // that element, do not do anything
+                       if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+                               continue;
+                       }
+
+                       contains = jQuery.contains( elem.ownerDocument, elem );
+
+                       // Append to fragment
+                       tmp = getAll( fragment.appendChild( elem ), "script" );
+
+                       // Preserve script evaluation history
+                       if ( contains ) {
+                               setGlobalEval( tmp );
+                       }
+
+                       // Capture executables
+                       if ( scripts ) {
+                               j = 0;
+                               while ( (elem = tmp[ j++ ]) ) {
+                                       if ( rscriptType.test( elem.type || "" ) ) {
+                                               scripts.push( elem );
+                                       }
+                               }
+                       }
+               }
+
+               return fragment;
+       },
+
+       cleanData: function( elems ) {
+               var data, elem, type, key,
+                       special = jQuery.event.special,
+                       i = 0;
+
+               for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
+                       if ( jQuery.acceptData( elem ) ) {
+                               key = elem[ data_priv.expando ];
+
+                               if ( key && (data = data_priv.cache[ key ]) ) {
+                                       if ( data.events ) {
+                                               for ( type in data.events ) {
+                                                       if ( special[ type ] ) {
+                                                               jQuery.event.remove( elem, type );
+
+                                                       // This is a shortcut to avoid jQuery.event.remove's overhead
+                                                       } else {
+                                                               jQuery.removeEvent( elem, type, data.handle );
+                                                       }
+                                               }
+                                       }
+                                       if ( data_priv.cache[ key ] ) {
+                                               // Discard any remaining `private` data
+                                               delete data_priv.cache[ key ];
+                                       }
+                               }
+                       }
+                       // Discard any remaining `user` data
+                       delete data_user.cache[ elem[ data_user.expando ] ];
+               }
+       }
+});
+
+jQuery.fn.extend({
+       text: function( value ) {
+               return access( this, function( value ) {
+                       return value === undefined ?
+                               jQuery.text( this ) :
+                               this.empty().each(function() {
+                                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                                               this.textContent = value;
+                                       }
+                               });
+               }, null, value, arguments.length );
+       },
+
+       append: function() {
+               return this.domManip( arguments, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               var target = manipulationTarget( this, elem );
+                               target.appendChild( elem );
+                       }
+               });
+       },
+
+       prepend: function() {
+               return this.domManip( arguments, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               var target = manipulationTarget( this, elem );
+                               target.insertBefore( elem, target.firstChild );
+                       }
+               });
+       },
+
+       before: function() {
+               return this.domManip( arguments, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this );
+                       }
+               });
+       },
+
+       after: function() {
+               return this.domManip( arguments, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this.nextSibling );
+                       }
+               });
+       },
+
+       remove: function( selector, keepData /* Internal Use Only */ ) {
+               var elem,
+                       elems = selector ? jQuery.filter( selector, this ) : this,
+                       i = 0;
+
+               for ( ; (elem = elems[i]) != null; i++ ) {
+                       if ( !keepData && elem.nodeType === 1 ) {
+                               jQuery.cleanData( getAll( elem ) );
+                       }
+
+                       if ( elem.parentNode ) {
+                               if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+                                       setGlobalEval( getAll( elem, "script" ) );
+                               }
+                               elem.parentNode.removeChild( elem );
+                       }
+               }
+
+               return this;
+       },
+
+       empty: function() {
+               var elem,
+                       i = 0;
+
+               for ( ; (elem = this[i]) != null; i++ ) {
+                       if ( elem.nodeType === 1 ) {
+
+                               // Prevent memory leaks
+                               jQuery.cleanData( getAll( elem, false ) );
+
+                               // Remove any remaining nodes
+                               elem.textContent = "";
+                       }
+               }
+
+               return this;
+       },
+
+       clone: function( dataAndEvents, deepDataAndEvents ) {
+               dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+               deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+               return this.map(function() {
+                       return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+               });
+       },
+
+       html: function( value ) {
+               return access( this, function( value ) {
+                       var elem = this[ 0 ] || {},
+                               i = 0,
+                               l = this.length;
+
+                       if ( value === undefined && elem.nodeType === 1 ) {
+                               return elem.innerHTML;
+                       }
+
+                       // See if we can take a shortcut and just use innerHTML
+                       if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+                               !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+                               value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+                               try {
+                                       for ( ; i < l; i++ ) {
+                                               elem = this[ i ] || {};
+
+                                               // Remove element nodes and prevent memory leaks
+                                               if ( elem.nodeType === 1 ) {
+                                                       jQuery.cleanData( getAll( elem, false ) );
+                                                       elem.innerHTML = value;
+                                               }
+                                       }
+
+                                       elem = 0;
+
+                               // If using innerHTML throws an exception, use the fallback method
+                               } catch( e ) {}
+                       }
+
+                       if ( elem ) {
+                               this.empty().append( value );
+                       }
+               }, null, value, arguments.length );
+       },
+
+       replaceWith: function() {
+               var arg = arguments[ 0 ];
+
+               // Make the changes, replacing each context element with the new content
+               this.domManip( arguments, function( elem ) {
+                       arg = this.parentNode;
+
+                       jQuery.cleanData( getAll( this ) );
+
+                       if ( arg ) {
+                               arg.replaceChild( elem, this );
+                       }
+               });
+
+               // Force removal if there was no new content (e.g., from empty arguments)
+               return arg && (arg.length || arg.nodeType) ? this : this.remove();
+       },
+
+       detach: function( selector ) {
+               return this.remove( selector, true );
+       },
+
+       domManip: function( args, callback ) {
+
+               // Flatten any nested arrays
+               args = concat.apply( [], args );
+
+               var fragment, first, scripts, hasScripts, node, doc,
+                       i = 0,
+                       l = this.length,
+                       set = this,
+                       iNoClone = l - 1,
+                       value = args[ 0 ],
+                       isFunction = jQuery.isFunction( value );
+
+               // We can't cloneNode fragments that contain checked, in WebKit
+               if ( isFunction ||
+                               ( l > 1 && typeof value === "string" &&
+                                       !support.checkClone && rchecked.test( value ) ) ) {
+                       return this.each(function( index ) {
+                               var self = set.eq( index );
+                               if ( isFunction ) {
+                                       args[ 0 ] = value.call( this, index, self.html() );
+                               }
+                               self.domManip( args, callback );
+                       });
+               }
+
+               if ( l ) {
+                       fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
+                       first = fragment.firstChild;
+
+                       if ( fragment.childNodes.length === 1 ) {
+                               fragment = first;
+                       }
+
+                       if ( first ) {
+                               scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+                               hasScripts = scripts.length;
+
+                               // Use the original fragment for the last item instead of the first because it can end up
+                               // being emptied incorrectly in certain situations (#8070).
+                               for ( ; i < l; i++ ) {
+                                       node = fragment;
+
+                                       if ( i !== iNoClone ) {
+                                               node = jQuery.clone( node, true, true );
+
+                                               // Keep references to cloned scripts for later restoration
+                                               if ( hasScripts ) {
+                                                       // Support: QtWebKit
+                                                       // jQuery.merge because push.apply(_, arraylike) throws
+                                                       jQuery.merge( scripts, getAll( node, "script" ) );
+                                               }
+                                       }
+
+                                       callback.call( this[ i ], node, i );
+                               }
+
+                               if ( hasScripts ) {
+                                       doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+                                       // Reenable scripts
+                                       jQuery.map( scripts, restoreScript );
+
+                                       // Evaluate executable scripts on first document insertion
+                                       for ( i = 0; i < hasScripts; i++ ) {
+                                               node = scripts[ i ];
+                                               if ( rscriptType.test( node.type || "" ) &&
+                                                       !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+                                                       if ( node.src ) {
+                                                               // Optional AJAX dependency, but won't run scripts if not present
+                                                               if ( jQuery._evalUrl ) {
+                                                                       jQuery._evalUrl( node.src );
+                                                               }
+                                                       } else {
+                                                               jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       }
+});
+
+jQuery.each({
+       appendTo: "append",
+       prependTo: "prepend",
+       insertBefore: "before",
+       insertAfter: "after",
+       replaceAll: "replaceWith"
+}, function( name, original ) {
+       jQuery.fn[ name ] = function( selector ) {
+               var elems,
+                       ret = [],
+                       insert = jQuery( selector ),
+                       last = insert.length - 1,
+                       i = 0;
+
+               for ( ; i <= last; i++ ) {
+                       elems = i === last ? this : this.clone( true );
+                       jQuery( insert[ i ] )[ original ]( elems );
+
+                       // Support: QtWebKit
+                       // .get() because push.apply(_, arraylike) throws
+                       push.apply( ret, elems.get() );
+               }
+
+               return this.pushStack( ret );
+       };
+});
+
+
+var iframe,
+       elemdisplay = {};
+
+/**
+ * Retrieve the actual display of a element
+ * @param {String} name nodeName of the element
+ * @param {Object} doc Document object
+ */
+// Called only from within defaultDisplay
+function actualDisplay( name, doc ) {
+       var style,
+               elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+
+               // getDefaultComputedStyle might be reliably used only on attached element
+               display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
+
+                       // Use of this method is a temporary fix (more like optimization) until something better comes along,
+                       // since it was removed from specification and supported only in FF
+                       style.display : jQuery.css( elem[ 0 ], "display" );
+
+       // We don't have any data stored on the element,
+       // so use "detach" method as fast way to get rid of the element
+       elem.detach();
+
+       return display;
+}
+
+/**
+ * Try to determine the default display value of an element
+ * @param {String} nodeName
+ */
+function defaultDisplay( nodeName ) {
+       var doc = document,
+               display = elemdisplay[ nodeName ];
+
+       if ( !display ) {
+               display = actualDisplay( nodeName, doc );
+
+               // If the simple way fails, read from inside an iframe
+               if ( display === "none" || !display ) {
+
+                       // Use the already-created iframe if possible
+                       iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
+
+                       // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+                       doc = iframe[ 0 ].contentDocument;
+
+                       // Support: IE
+                       doc.write();
+                       doc.close();
+
+                       display = actualDisplay( nodeName, doc );
+                       iframe.detach();
+               }
+
+               // Store the correct default display
+               elemdisplay[ nodeName ] = display;
+       }
+
+       return display;
+}
+var rmargin = (/^margin/);
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+               // Support: IE<=11+, Firefox<=30+ (#15098, #14150)
+               // IE throws on elements created in popups
+               // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+               if ( elem.ownerDocument.defaultView.opener ) {
+                       return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
+               }
+
+               return window.getComputedStyle( elem, null );
+       };
+
+
+
+function curCSS( elem, name, computed ) {
+       var width, minWidth, maxWidth, ret,
+               style = elem.style;
+
+       computed = computed || getStyles( elem );
+
+       // Support: IE9
+       // getPropertyValue is only needed for .css('filter') (#12537)
+       if ( computed ) {
+               ret = computed.getPropertyValue( name ) || computed[ name ];
+       }
+
+       if ( computed ) {
+
+               if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+                       ret = jQuery.style( elem, name );
+               }
+
+               // Support: iOS < 6
+               // A tribute to the "awesome hack by Dean Edwards"
+               // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+               // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+               if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+                       // Remember the original values
+                       width = style.width;
+                       minWidth = style.minWidth;
+                       maxWidth = style.maxWidth;
+
+                       // Put in the new values to get a computed value out
+                       style.minWidth = style.maxWidth = style.width = ret;
+                       ret = computed.width;
+
+                       // Revert the changed values
+                       style.width = width;
+                       style.minWidth = minWidth;
+                       style.maxWidth = maxWidth;
+               }
+       }
+
+       return ret !== undefined ?
+               // Support: IE
+               // IE returns zIndex value as an integer.
+               ret + "" :
+               ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+       // Define the hook, we'll check on the first run if it's really needed.
+       return {
+               get: function() {
+                       if ( conditionFn() ) {
+                               // Hook not needed (or it's not possible to use it due
+                               // to missing dependency), remove it.
+                               delete this.get;
+                               return;
+                       }
+
+                       // Hook needed; redefine it so that the support test is not executed again.
+                       return (this.get = hookFn).apply( this, arguments );
+               }
+       };
+}
+
+
+(function() {
+       var pixelPositionVal, boxSizingReliableVal,
+               docElem = document.documentElement,
+               container = document.createElement( "div" ),
+               div = document.createElement( "div" );
+
+       if ( !div.style ) {
+               return;
+       }
+
+       // Support: IE9-11+
+       // Style of cloned element affects source element cloned (#8908)
+       div.style.backgroundClip = "content-box";
+       div.cloneNode( true ).style.backgroundClip = "";
+       support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+       container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
+               "position:absolute";
+       container.appendChild( div );
+
+       // Executing both pixelPosition & boxSizingReliable tests require only one layout
+       // so they're executed at the same time to save the second computation.
+       function computePixelPositionAndBoxSizingReliable() {
+               div.style.cssText =
+                       // Support: Firefox<29, Android 2.3
+                       // Vendor-prefix box-sizing
+                       "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
+                       "box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
+                       "border:1px;padding:1px;width:4px;position:absolute";
+               div.innerHTML = "";
+               docElem.appendChild( container );
+
+               var divStyle = window.getComputedStyle( div, null );
+               pixelPositionVal = divStyle.top !== "1%";
+               boxSizingReliableVal = divStyle.width === "4px";
+
+               docElem.removeChild( container );
+       }
+
+       // Support: node.js jsdom
+       // Don't assume that getComputedStyle is a property of the global object
+       if ( window.getComputedStyle ) {
+               jQuery.extend( support, {
+                       pixelPosition: function() {
+
+                               // This test is executed only once but we still do memoizing
+                               // since we can use the boxSizingReliable pre-computing.
+                               // No need to check if the test was already performed, though.
+                               computePixelPositionAndBoxSizingReliable();
+                               return pixelPositionVal;
+                       },
+                       boxSizingReliable: function() {
+                               if ( boxSizingReliableVal == null ) {
+                                       computePixelPositionAndBoxSizingReliable();
+                               }
+                               return boxSizingReliableVal;
+                       },
+                       reliableMarginRight: function() {
+
+                               // Support: Android 2.3
+                               // Check if div with explicit width and no margin-right incorrectly
+                               // gets computed margin-right based on width of container. (#3333)
+                               // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+                               // This support function is only executed once so no memoizing is needed.
+                               var ret,
+                                       marginDiv = div.appendChild( document.createElement( "div" ) );
+
+                               // Reset CSS: box-sizing; display; margin; border; padding
+                               marginDiv.style.cssText = div.style.cssText =
+                                       // Support: Firefox<29, Android 2.3
+                                       // Vendor-prefix box-sizing
+                                       "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
+                                       "box-sizing:content-box;display:block;margin:0;border:0;padding:0";
+                               marginDiv.style.marginRight = marginDiv.style.width = "0";
+                               div.style.width = "1px";
+                               docElem.appendChild( container );
+
+                               ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
+
+                               docElem.removeChild( container );
+                               div.removeChild( marginDiv );
+
+                               return ret;
+                       }
+               });
+       }
+})();
+
+
+// A method for quickly swapping in/out CSS properties to get correct calculations.
+jQuery.swap = function( elem, options, callback, args ) {
+       var ret, name,
+               old = {};
+
+       // Remember the old values, and insert the new ones
+       for ( name in options ) {
+               old[ name ] = elem.style[ name ];
+               elem.style[ name ] = options[ name ];
+       }
+
+       ret = callback.apply( elem, args || [] );
+
+       // Revert the old values
+       for ( name in options ) {
+               elem.style[ name ] = old[ name ];
+       }
+
+       return ret;
+};
+
+
+var
+       // Swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+       // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+       rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+       rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
+       rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
+
+       cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+       cssNormalTransform = {
+               letterSpacing: "0",
+               fontWeight: "400"
+       },
+
+       cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+       // Shortcut for names that are not vendor prefixed
+       if ( name in style ) {
+               return name;
+       }
+
+       // Check for vendor prefixed names
+       var capName = name[0].toUpperCase() + name.slice(1),
+               origName = name,
+               i = cssPrefixes.length;
+
+       while ( i-- ) {
+               name = cssPrefixes[ i ] + capName;
+               if ( name in style ) {
+                       return name;
+               }
+       }
+
+       return origName;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+       var matches = rnumsplit.exec( value );
+       return matches ?
+               // Guard against undefined "subtract", e.g., when used as in cssHooks
+               Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+               value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+       var i = extra === ( isBorderBox ? "border" : "content" ) ?
+               // If we already have the right measurement, avoid augmentation
+               4 :
+               // Otherwise initialize for horizontal or vertical properties
+               name === "width" ? 1 : 0,
+
+               val = 0;
+
+       for ( ; i < 4; i += 2 ) {
+               // Both box models exclude margin, so add it if we want it
+               if ( extra === "margin" ) {
+                       val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+               }
+
+               if ( isBorderBox ) {
+                       // border-box includes padding, so remove it if we want content
+                       if ( extra === "content" ) {
+                               val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+                       }
+
+                       // At this point, extra isn't border nor margin, so remove border
+                       if ( extra !== "margin" ) {
+                               val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               } else {
+                       // At this point, extra isn't content, so add padding
+                       val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+                       // At this point, extra isn't content nor padding, so add border
+                       if ( extra !== "padding" ) {
+                               val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               }
+       }
+
+       return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+       // Start with offset property, which is equivalent to the border-box value
+       var valueIsBorderBox = true,
+               val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+               styles = getStyles( elem ),
+               isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+       // Some non-html elements return undefined for offsetWidth, so check for null/undefined
+       // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+       // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+       if ( val <= 0 || val == null ) {
+               // Fall back to computed then uncomputed css if necessary
+               val = curCSS( elem, name, styles );
+               if ( val < 0 || val == null ) {
+                       val = elem.style[ name ];
+               }
+
+               // Computed unit is not pixels. Stop here and return.
+               if ( rnumnonpx.test(val) ) {
+                       return val;
+               }
+
+               // Check for style in case a browser which returns unreliable values
+               // for getComputedStyle silently falls back to the reliable elem.style
+               valueIsBorderBox = isBorderBox &&
+                       ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+               // Normalize "", auto, and prepare for extra
+               val = parseFloat( val ) || 0;
+       }
+
+       // Use the active box-sizing model to add/subtract irrelevant styles
+       return ( val +
+               augmentWidthOrHeight(
+                       elem,
+                       name,
+                       extra || ( isBorderBox ? "border" : "content" ),
+                       valueIsBorderBox,
+                       styles
+               )
+       ) + "px";
+}
+
+function showHide( elements, show ) {
+       var display, elem, hidden,
+               values = [],
+               index = 0,
+               length = elements.length;
+
+       for ( ; index < length; index++ ) {
+               elem = elements[ index ];
+               if ( !elem.style ) {
+                       continue;
+               }
+
+               values[ index ] = data_priv.get( elem, "olddisplay" );
+               display = elem.style.display;
+               if ( show ) {
+                       // Reset the inline display of this element to learn if it is
+                       // being hidden by cascaded rules or not
+                       if ( !values[ index ] && display === "none" ) {
+                               elem.style.display = "";
+                       }
+
+                       // Set elements which have been overridden with display: none
+                       // in a stylesheet to whatever the default browser style is
+                       // for such an element
+                       if ( elem.style.display === "" && isHidden( elem ) ) {
+                               values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
+                       }
+               } else {
+                       hidden = isHidden( elem );
+
+                       if ( display !== "none" || !hidden ) {
+                               data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+                       }
+               }
+       }
+
+       // Set the display of most of the elements in a second loop
+       // to avoid the constant reflow
+       for ( index = 0; index < length; index++ ) {
+               elem = elements[ index ];
+               if ( !elem.style ) {
+                       continue;
+               }
+               if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+                       elem.style.display = show ? values[ index ] || "" : "none";
+               }
+       }
+
+       return elements;
+}
+
+jQuery.extend({
+
+       // Add in style property hooks for overriding the default
+       // behavior of getting and setting a style property
+       cssHooks: {
+               opacity: {
+                       get: function( elem, computed ) {
+                               if ( computed ) {
+
+                                       // We should always get a number back from opacity
+                                       var ret = curCSS( elem, "opacity" );
+                                       return ret === "" ? "1" : ret;
+                               }
+                       }
+               }
+       },
+
+       // Don't automatically add "px" to these possibly-unitless properties
+       cssNumber: {
+               "columnCount": true,
+               "fillOpacity": true,
+               "flexGrow": true,
+               "flexShrink": true,
+               "fontWeight": true,
+               "lineHeight": true,
+               "opacity": true,
+               "order": true,
+               "orphans": true,
+               "widows": true,
+               "zIndex": true,
+               "zoom": true
+       },
+
+       // Add in properties whose names you wish to fix before
+       // setting or getting the value
+       cssProps: {
+               "float": "cssFloat"
+       },
+
+       // Get and set the style property on a DOM Node
+       style: function( elem, name, value, extra ) {
+
+               // Don't set styles on text and comment nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+                       return;
+               }
+
+               // Make sure that we're working with the right name
+               var ret, type, hooks,
+                       origName = jQuery.camelCase( name ),
+                       style = elem.style;
+
+               name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+               // Gets hook for the prefixed version, then unprefixed version
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // Check if we're setting a value
+               if ( value !== undefined ) {
+                       type = typeof value;
+
+                       // Convert "+=" or "-=" to relative numbers (#7345)
+                       if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+                               value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+                               // Fixes bug #9237
+                               type = "number";
+                       }
+
+                       // Make sure that null and NaN values aren't set (#7116)
+                       if ( value == null || value !== value ) {
+                               return;
+                       }
+
+                       // If a number, add 'px' to the (except for certain CSS properties)
+                       if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+                               value += "px";
+                       }
+
+                       // Support: IE9-11+
+                       // background-* props affect original clone's values
+                       if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+                               style[ name ] = "inherit";
+                       }
+
+                       // If a hook was provided, use that value, otherwise just set the specified value
+                       if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+                               style[ name ] = value;
+                       }
+
+               } else {
+                       // If a hook was provided get the non-computed value from there
+                       if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+                               return ret;
+                       }
+
+                       // Otherwise just get the value from the style object
+                       return style[ name ];
+               }
+       },
+
+       css: function( elem, name, extra, styles ) {
+               var val, num, hooks,
+                       origName = jQuery.camelCase( name );
+
+               // Make sure that we're working with the right name
+               name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+               // Try prefixed name followed by the unprefixed name
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // If a hook was provided get the computed value from there
+               if ( hooks && "get" in hooks ) {
+                       val = hooks.get( elem, true, extra );
+               }
+
+               // Otherwise, if a way to get the computed value exists, use that
+               if ( val === undefined ) {
+                       val = curCSS( elem, name, styles );
+               }
+
+               // Convert "normal" to computed value
+               if ( val === "normal" && name in cssNormalTransform ) {
+                       val = cssNormalTransform[ name ];
+               }
+
+               // Make numeric if forced or a qualifier was provided and val looks numeric
+               if ( extra === "" || extra ) {
+                       num = parseFloat( val );
+                       return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+               }
+               return val;
+       }
+});
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+       jQuery.cssHooks[ name ] = {
+               get: function( elem, computed, extra ) {
+                       if ( computed ) {
+
+                               // Certain elements can have dimension info if we invisibly show them
+                               // but it must have a current display style that would benefit
+                               return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
+                                       jQuery.swap( elem, cssShow, function() {
+                                               return getWidthOrHeight( elem, name, extra );
+                                       }) :
+                                       getWidthOrHeight( elem, name, extra );
+                       }
+               },
+
+               set: function( elem, value, extra ) {
+                       var styles = extra && getStyles( elem );
+                       return setPositiveNumber( elem, value, extra ?
+                               augmentWidthOrHeight(
+                                       elem,
+                                       name,
+                                       extra,
+                                       jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+                                       styles
+                               ) : 0
+                       );
+               }
+       };
+});
+
+// Support: Android 2.3
+jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
+       function( elem, computed ) {
+               if ( computed ) {
+                       return jQuery.swap( elem, { "display": "inline-block" },
+                               curCSS, [ elem, "marginRight" ] );
+               }
+       }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+       margin: "",
+       padding: "",
+       border: "Width"
+}, function( prefix, suffix ) {
+       jQuery.cssHooks[ prefix + suffix ] = {
+               expand: function( value ) {
+                       var i = 0,
+                               expanded = {},
+
+                               // Assumes a single number if not a string
+                               parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+                       for ( ; i < 4; i++ ) {
+                               expanded[ prefix + cssExpand[ i ] + suffix ] =
+                                       parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+                       }
+
+                       return expanded;
+               }
+       };
+
+       if ( !rmargin.test( prefix ) ) {
+               jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+       }
+});
+
+jQuery.fn.extend({
+       css: function( name, value ) {
+               return access( this, function( elem, name, value ) {
+                       var styles, len,
+                               map = {},
+                               i = 0;
+
+                       if ( jQuery.isArray( name ) ) {
+                               styles = getStyles( elem );
+                               len = name.length;
+
+                               for ( ; i < len; i++ ) {
+                                       map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+                               }
+
+                               return map;
+                       }
+
+                       return value !== undefined ?
+                               jQuery.style( elem, name, value ) :
+                               jQuery.css( elem, name );
+               }, name, value, arguments.length > 1 );
+       },
+       show: function() {
+               return showHide( this, true );
+       },
+       hide: function() {
+               return showHide( this );
+       },
+       toggle: function( state ) {
+               if ( typeof state === "boolean" ) {
+                       return state ? this.show() : this.hide();
+               }
+
+               return this.each(function() {
+                       if ( isHidden( this ) ) {
+                               jQuery( this ).show();
+                       } else {
+                               jQuery( this ).hide();
+                       }
+               });
+       }
+});
+
+
+function Tween( elem, options, prop, end, easing ) {
+       return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+       constructor: Tween,
+       init: function( elem, options, prop, end, easing, unit ) {
+               this.elem = elem;
+               this.prop = prop;
+               this.easing = easing || "swing";
+               this.options = options;
+               this.start = this.now = this.cur();
+               this.end = end;
+               this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+       },
+       cur: function() {
+               var hooks = Tween.propHooks[ this.prop ];
+
+               return hooks && hooks.get ?
+                       hooks.get( this ) :
+                       Tween.propHooks._default.get( this );
+       },
+       run: function( percent ) {
+               var eased,
+                       hooks = Tween.propHooks[ this.prop ];
+
+               if ( this.options.duration ) {
+                       this.pos = eased = jQuery.easing[ this.easing ](
+                               percent, this.options.duration * percent, 0, 1, this.options.duration
+                       );
+               } else {
+                       this.pos = eased = percent;
+               }
+               this.now = ( this.end - this.start ) * eased + this.start;
+
+               if ( this.options.step ) {
+                       this.options.step.call( this.elem, this.now, this );
+               }
+
+               if ( hooks && hooks.set ) {
+                       hooks.set( this );
+               } else {
+                       Tween.propHooks._default.set( this );
+               }
+               return this;
+       }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+       _default: {
+               get: function( tween ) {
+                       var result;
+
+                       if ( tween.elem[ tween.prop ] != null &&
+                               (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+                               return tween.elem[ tween.prop ];
+                       }
+
+                       // Passing an empty string as a 3rd parameter to .css will automatically
+                       // attempt a parseFloat and fallback to a string if the parse fails.
+                       // Simple values such as "10px" are parsed to Float;
+                       // complex values such as "rotate(1rad)" are returned as-is.
+                       result = jQuery.css( tween.elem, tween.prop, "" );
+                       // Empty strings, null, undefined and "auto" are converted to 0.
+                       return !result || result === "auto" ? 0 : result;
+               },
+               set: function( tween ) {
+                       // Use step hook for back compat.
+                       // Use cssHook if its there.
+                       // Use .style if available and use plain properties where available.
+                       if ( jQuery.fx.step[ tween.prop ] ) {
+                               jQuery.fx.step[ tween.prop ]( tween );
+                       } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+                               jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+                       } else {
+                               tween.elem[ tween.prop ] = tween.now;
+                       }
+               }
+       }
+};
+
+// Support: IE9
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+       set: function( tween ) {
+               if ( tween.elem.nodeType && tween.elem.parentNode ) {
+                       tween.elem[ tween.prop ] = tween.now;
+               }
+       }
+};
+
+jQuery.easing = {
+       linear: function( p ) {
+               return p;
+       },
+       swing: function( p ) {
+               return 0.5 - Math.cos( p * Math.PI ) / 2;
+       }
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+       fxNow, timerId,
+       rfxtypes = /^(?:toggle|show|hide)$/,
+       rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
+       rrun = /queueHooks$/,
+       animationPrefilters = [ defaultPrefilter ],
+       tweeners = {
+               "*": [ function( prop, value ) {
+                       var tween = this.createTween( prop, value ),
+                               target = tween.cur(),
+                               parts = rfxnum.exec( value ),
+                               unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+                               // Starting value computation is required for potential unit mismatches
+                               start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+                                       rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+                               scale = 1,
+                               maxIterations = 20;
+
+                       if ( start && start[ 3 ] !== unit ) {
+                               // Trust units reported by jQuery.css
+                               unit = unit || start[ 3 ];
+
+                               // Make sure we update the tween properties later on
+                               parts = parts || [];
+
+                               // Iteratively approximate from a nonzero starting point
+                               start = +target || 1;
+
+                               do {
+                                       // If previous iteration zeroed out, double until we get *something*.
+                                       // Use string for doubling so we don't accidentally see scale as unchanged below
+                                       scale = scale || ".5";
+
+                                       // Adjust and apply
+                                       start = start / scale;
+                                       jQuery.style( tween.elem, prop, start + unit );
+
+                               // Update scale, tolerating zero or NaN from tween.cur(),
+                               // break the loop if scale is unchanged or perfect, or if we've just had enough
+                               } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+                       }
+
+                       // Update tween properties
+                       if ( parts ) {
+                               start = tween.start = +start || +target || 0;
+                               tween.unit = unit;
+                               // If a +=/-= token was provided, we're doing a relative animation
+                               tween.end = parts[ 1 ] ?
+                                       start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+                                       +parts[ 2 ];
+                       }
+
+                       return tween;
+               } ]
+       };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+       setTimeout(function() {
+               fxNow = undefined;
+       });
+       return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+       var which,
+               i = 0,
+               attrs = { height: type };
+
+       // If we include width, step value is 1 to do all cssExpand values,
+       // otherwise step value is 2 to skip over Left and Right
+       includeWidth = includeWidth ? 1 : 0;
+       for ( ; i < 4 ; i += 2 - includeWidth ) {
+               which = cssExpand[ i ];
+               attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+       }
+
+       if ( includeWidth ) {
+               attrs.opacity = attrs.width = type;
+       }
+
+       return attrs;
+}
+
+function createTween( value, prop, animation ) {
+       var tween,
+               collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+               index = 0,
+               length = collection.length;
+       for ( ; index < length; index++ ) {
+               if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+                       // We're done with this property
+                       return tween;
+               }
+       }
+}
+
+function defaultPrefilter( elem, props, opts ) {
+       /* jshint validthis: true */
+       var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
+               anim = this,
+               orig = {},
+               style = elem.style,
+               hidden = elem.nodeType && isHidden( elem ),
+               dataShow = data_priv.get( elem, "fxshow" );
+
+       // Handle queue: false promises
+       if ( !opts.queue ) {
+               hooks = jQuery._queueHooks( elem, "fx" );
+               if ( hooks.unqueued == null ) {
+                       hooks.unqueued = 0;
+                       oldfire = hooks.empty.fire;
+                       hooks.empty.fire = function() {
+                               if ( !hooks.unqueued ) {
+                                       oldfire();
+                               }
+                       };
+               }
+               hooks.unqueued++;
+
+               anim.always(function() {
+                       // Ensure the complete handler is called before this completes
+                       anim.always(function() {
+                               hooks.unqueued--;
+                               if ( !jQuery.queue( elem, "fx" ).length ) {
+                                       hooks.empty.fire();
+                               }
+                       });
+               });
+       }
+
+       // Height/width overflow pass
+       if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+               // Make sure that nothing sneaks out
+               // Record all 3 overflow attributes because IE9-10 do not
+               // change the overflow attribute when overflowX and
+               // overflowY are set to the same value
+               opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+               // Set display property to inline-block for height/width
+               // animations on inline elements that are having width/height animated
+               display = jQuery.css( elem, "display" );
+
+               // Test default display if display is currently "none"
+               checkDisplay = display === "none" ?
+                       data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
+
+               if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
+                       style.display = "inline-block";
+               }
+       }
+
+       if ( opts.overflow ) {
+               style.overflow = "hidden";
+               anim.always(function() {
+                       style.overflow = opts.overflow[ 0 ];
+                       style.overflowX = opts.overflow[ 1 ];
+                       style.overflowY = opts.overflow[ 2 ];
+               });
+       }
+
+       // show/hide pass
+       for ( prop in props ) {
+               value = props[ prop ];
+               if ( rfxtypes.exec( value ) ) {
+                       delete props[ prop ];
+                       toggle = toggle || value === "toggle";
+                       if ( value === ( hidden ? "hide" : "show" ) ) {
+
+                               // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
+                               if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+                                       hidden = true;
+                               } else {
+                                       continue;
+                               }
+                       }
+                       orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+
+               // Any non-fx value stops us from restoring the original display value
+               } else {
+                       display = undefined;
+               }
+       }
+
+       if ( !jQuery.isEmptyObject( orig ) ) {
+               if ( dataShow ) {
+                       if ( "hidden" in dataShow ) {
+                               hidden = dataShow.hidden;
+                       }
+               } else {
+                       dataShow = data_priv.access( elem, "fxshow", {} );
+               }
+
+               // Store state if its toggle - enables .stop().toggle() to "reverse"
+               if ( toggle ) {
+                       dataShow.hidden = !hidden;
+               }
+               if ( hidden ) {
+                       jQuery( elem ).show();
+               } else {
+                       anim.done(function() {
+                               jQuery( elem ).hide();
+                       });
+               }
+               anim.done(function() {
+                       var prop;
+
+                       data_priv.remove( elem, "fxshow" );
+                       for ( prop in orig ) {
+                               jQuery.style( elem, prop, orig[ prop ] );
+                       }
+               });
+               for ( prop in orig ) {
+                       tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+                       if ( !( prop in dataShow ) ) {
+                               dataShow[ prop ] = tween.start;
+                               if ( hidden ) {
+                                       tween.end = tween.start;
+                                       tween.start = prop === "width" || prop === "height" ? 1 : 0;
+                               }
+                       }
+               }
+
+       // If this is a noop like .hide().hide(), restore an overwritten display value
+       } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
+               style.display = display;
+       }
+}
+
+function propFilter( props, specialEasing ) {
+       var index, name, easing, value, hooks;
+
+       // camelCase, specialEasing and expand cssHook pass
+       for ( index in props ) {
+               name = jQuery.camelCase( index );
+               easing = specialEasing[ name ];
+               value = props[ index ];
+               if ( jQuery.isArray( value ) ) {
+                       easing = value[ 1 ];
+                       value = props[ index ] = value[ 0 ];
+               }
+
+               if ( index !== name ) {
+                       props[ name ] = value;
+                       delete props[ index ];
+               }
+
+               hooks = jQuery.cssHooks[ name ];
+               if ( hooks && "expand" in hooks ) {
+                       value = hooks.expand( value );
+                       delete props[ name ];
+
+                       // Not quite $.extend, this won't overwrite existing keys.
+                       // Reusing 'index' because we have the correct "name"
+                       for ( index in value ) {
+                               if ( !( index in props ) ) {
+                                       props[ index ] = value[ index ];
+                                       specialEasing[ index ] = easing;
+                               }
+                       }
+               } else {
+                       specialEasing[ name ] = easing;
+               }
+       }
+}
+
+function Animation( elem, properties, options ) {
+       var result,
+               stopped,
+               index = 0,
+               length = animationPrefilters.length,
+               deferred = jQuery.Deferred().always( function() {
+                       // Don't match elem in the :animated selector
+                       delete tick.elem;
+               }),
+               tick = function() {
+                       if ( stopped ) {
+                               return false;
+                       }
+                       var currentTime = fxNow || createFxNow(),
+                               remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+                               // Support: Android 2.3
+                               // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+                               temp = remaining / animation.duration || 0,
+                               percent = 1 - temp,
+                               index = 0,
+                               length = animation.tweens.length;
+
+                       for ( ; index < length ; index++ ) {
+                               animation.tweens[ index ].run( percent );
+                       }
+
+                       deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+                       if ( percent < 1 && length ) {
+                               return remaining;
+                       } else {
+                               deferred.resolveWith( elem, [ animation ] );
+                               return false;
+                       }
+               },
+               animation = deferred.promise({
+                       elem: elem,
+                       props: jQuery.extend( {}, properties ),
+                       opts: jQuery.extend( true, { specialEasing: {} }, options ),
+                       originalProperties: properties,
+                       originalOptions: options,
+                       startTime: fxNow || createFxNow(),
+                       duration: options.duration,
+                       tweens: [],
+                       createTween: function( prop, end ) {
+                               var tween = jQuery.Tween( elem, animation.opts, prop, end,
+                                               animation.opts.specialEasing[ prop ] || animation.opts.easing );
+                               animation.tweens.push( tween );
+                               return tween;
+                       },
+                       stop: function( gotoEnd ) {
+                               var index = 0,
+                                       // If we are going to the end, we want to run all the tweens
+                                       // otherwise we skip this part
+                                       length = gotoEnd ? animation.tweens.length : 0;
+                               if ( stopped ) {
+                                       return this;
+                               }
+                               stopped = true;
+                               for ( ; index < length ; index++ ) {
+                                       animation.tweens[ index ].run( 1 );
+                               }
+
+                               // Resolve when we played the last frame; otherwise, reject
+                               if ( gotoEnd ) {
+                                       deferred.resolveWith( elem, [ animation, gotoEnd ] );
+                               } else {
+                                       deferred.rejectWith( elem, [ animation, gotoEnd ] );
+                               }
+                               return this;
+                       }
+               }),
+               props = animation.props;
+
+       propFilter( props, animation.opts.specialEasing );
+
+       for ( ; index < length ; index++ ) {
+               result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+               if ( result ) {
+                       return result;
+               }
+       }
+
+       jQuery.map( props, createTween, animation );
+
+       if ( jQuery.isFunction( animation.opts.start ) ) {
+               animation.opts.start.call( elem, animation );
+       }
+
+       jQuery.fx.timer(
+               jQuery.extend( tick, {
+                       elem: elem,
+                       anim: animation,
+                       queue: animation.opts.queue
+               })
+       );
+
+       // attach callbacks from options
+       return animation.progress( animation.opts.progress )
+               .done( animation.opts.done, animation.opts.complete )
+               .fail( animation.opts.fail )
+               .always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+       tweener: function( props, callback ) {
+               if ( jQuery.isFunction( props ) ) {
+                       callback = props;
+                       props = [ "*" ];
+               } else {
+                       props = props.split(" ");
+               }
+
+               var prop,
+                       index = 0,
+                       length = props.length;
+
+               for ( ; index < length ; index++ ) {
+                       prop = props[ index ];
+                       tweeners[ prop ] = tweeners[ prop ] || [];
+                       tweeners[ prop ].unshift( callback );
+               }
+       },
+
+       prefilter: function( callback, prepend ) {
+               if ( prepend ) {
+                       animationPrefilters.unshift( callback );
+               } else {
+                       animationPrefilters.push( callback );
+               }
+       }
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+       var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+               complete: fn || !fn && easing ||
+                       jQuery.isFunction( speed ) && speed,
+               duration: speed,
+               easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+       };
+
+       opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+               opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+       // Normalize opt.queue - true/undefined/null -> "fx"
+       if ( opt.queue == null || opt.queue === true ) {
+               opt.queue = "fx";
+       }
+
+       // Queueing
+       opt.old = opt.complete;
+
+       opt.complete = function() {
+               if ( jQuery.isFunction( opt.old ) ) {
+                       opt.old.call( this );
+               }
+
+               if ( opt.queue ) {
+                       jQuery.dequeue( this, opt.queue );
+               }
+       };
+
+       return opt;
+};
+
+jQuery.fn.extend({
+       fadeTo: function( speed, to, easing, callback ) {
+
+               // Show any hidden elements after setting opacity to 0
+               return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+                       // Animate to the value specified
+                       .end().animate({ opacity: to }, speed, easing, callback );
+       },
+       animate: function( prop, speed, easing, callback ) {
+               var empty = jQuery.isEmptyObject( prop ),
+                       optall = jQuery.speed( speed, easing, callback ),
+                       doAnimation = function() {
+                               // Operate on a copy of prop so per-property easing won't be lost
+                               var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+                               // Empty animations, or finishing resolves immediately
+                               if ( empty || data_priv.get( this, "finish" ) ) {
+                                       anim.stop( true );
+                               }
+                       };
+                       doAnimation.finish = doAnimation;
+
+               return empty || optall.queue === false ?
+                       this.each( doAnimation ) :
+                       this.queue( optall.queue, doAnimation );
+       },
+       stop: function( type, clearQueue, gotoEnd ) {
+               var stopQueue = function( hooks ) {
+                       var stop = hooks.stop;
+                       delete hooks.stop;
+                       stop( gotoEnd );
+               };
+
+               if ( typeof type !== "string" ) {
+                       gotoEnd = clearQueue;
+                       clearQueue = type;
+                       type = undefined;
+               }
+               if ( clearQueue && type !== false ) {
+                       this.queue( type || "fx", [] );
+               }
+
+               return this.each(function() {
+                       var dequeue = true,
+                               index = type != null && type + "queueHooks",
+                               timers = jQuery.timers,
+                               data = data_priv.get( this );
+
+                       if ( index ) {
+                               if ( data[ index ] && data[ index ].stop ) {
+                                       stopQueue( data[ index ] );
+                               }
+                       } else {
+                               for ( index in data ) {
+                                       if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+                                               stopQueue( data[ index ] );
+                                       }
+                               }
+                       }
+
+                       for ( index = timers.length; index--; ) {
+                               if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+                                       timers[ index ].anim.stop( gotoEnd );
+                                       dequeue = false;
+                                       timers.splice( index, 1 );
+                               }
+                       }
+
+                       // Start the next in the queue if the last step wasn't forced.
+                       // Timers currently will call their complete callbacks, which
+                       // will dequeue but only if they were gotoEnd.
+                       if ( dequeue || !gotoEnd ) {
+                               jQuery.dequeue( this, type );
+                       }
+               });
+       },
+       finish: function( type ) {
+               if ( type !== false ) {
+                       type = type || "fx";
+               }
+               return this.each(function() {
+                       var index,
+                               data = data_priv.get( this ),
+                               queue = data[ type + "queue" ],
+                               hooks = data[ type + "queueHooks" ],
+                               timers = jQuery.timers,
+                               length = queue ? queue.length : 0;
+
+                       // Enable finishing flag on private data
+                       data.finish = true;
+
+                       // Empty the queue first
+                       jQuery.queue( this, type, [] );
+
+                       if ( hooks && hooks.stop ) {
+                               hooks.stop.call( this, true );
+                       }
+
+                       // Look for any active animations, and finish them
+                       for ( index = timers.length; index--; ) {
+                               if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+                                       timers[ index ].anim.stop( true );
+                                       timers.splice( index, 1 );
+                               }
+                       }
+
+                       // Look for any animations in the old queue and finish them
+                       for ( index = 0; index < length; index++ ) {
+                               if ( queue[ index ] && queue[ index ].finish ) {
+                                       queue[ index ].finish.call( this );
+                               }
+                       }
+
+                       // Turn off finishing flag
+                       delete data.finish;
+               });
+       }
+});
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+       var cssFn = jQuery.fn[ name ];
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return speed == null || typeof speed === "boolean" ?
+                       cssFn.apply( this, arguments ) :
+                       this.animate( genFx( name, true ), speed, easing, callback );
+       };
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+       slideDown: genFx("show"),
+       slideUp: genFx("hide"),
+       slideToggle: genFx("toggle"),
+       fadeIn: { opacity: "show" },
+       fadeOut: { opacity: "hide" },
+       fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return this.animate( props, speed, easing, callback );
+       };
+});
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+       var timer,
+               i = 0,
+               timers = jQuery.timers;
+
+       fxNow = jQuery.now();
+
+       for ( ; i < timers.length; i++ ) {
+               timer = timers[ i ];
+               // Checks the timer has not already been removed
+               if ( !timer() && timers[ i ] === timer ) {
+                       timers.splice( i--, 1 );
+               }
+       }
+
+       if ( !timers.length ) {
+               jQuery.fx.stop();
+       }
+       fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+       jQuery.timers.push( timer );
+       if ( timer() ) {
+               jQuery.fx.start();
+       } else {
+               jQuery.timers.pop();
+       }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+       if ( !timerId ) {
+               timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+       }
+};
+
+jQuery.fx.stop = function() {
+       clearInterval( timerId );
+       timerId = null;
+};
+
+jQuery.fx.speeds = {
+       slow: 600,
+       fast: 200,
+       // Default speed
+       _default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+       time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+       type = type || "fx";
+
+       return this.queue( type, function( next, hooks ) {
+               var timeout = setTimeout( next, time );
+               hooks.stop = function() {
+                       clearTimeout( timeout );
+               };
+       });
+};
+
+
+(function() {
+       var input = document.createElement( "input" ),
+               select = document.createElement( "select" ),
+               opt = select.appendChild( document.createElement( "option" ) );
+
+       input.type = "checkbox";
+
+       // Support: iOS<=5.1, Android<=4.2+
+       // Default value for a checkbox should be "on"
+       support.checkOn = input.value !== "";
+
+       // Support: IE<=11+
+       // Must access selectedIndex to make default options select
+       support.optSelected = opt.selected;
+
+       // Support: Android<=2.3
+       // Options inside disabled selects are incorrectly marked as disabled
+       select.disabled = true;
+       support.optDisabled = !opt.disabled;
+
+       // Support: IE<=11+
+       // An input loses its value after becoming a radio
+       input = document.createElement( "input" );
+       input.value = "t";
+       input.type = "radio";
+       support.radioValue = input.value === "t";
+})();
+
+
+var nodeHook, boolHook,
+       attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend({
+       attr: function( name, value ) {
+               return access( this, jQuery.attr, name, value, arguments.length > 1 );
+       },
+
+       removeAttr: function( name ) {
+               return this.each(function() {
+                       jQuery.removeAttr( this, name );
+               });
+       }
+});
+
+jQuery.extend({
+       attr: function( elem, name, value ) {
+               var hooks, ret,
+                       nType = elem.nodeType;
+
+               // don't get/set attributes on text, comment and attribute nodes
+               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               // Fallback to prop when attributes are not supported
+               if ( typeof elem.getAttribute === strundefined ) {
+                       return jQuery.prop( elem, name, value );
+               }
+
+               // All attributes are lowercase
+               // Grab necessary hook if one is defined
+               if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+                       name = name.toLowerCase();
+                       hooks = jQuery.attrHooks[ name ] ||
+                               ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+               }
+
+               if ( value !== undefined ) {
+
+                       if ( value === null ) {
+                               jQuery.removeAttr( elem, name );
+
+                       } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+                               return ret;
+
+                       } else {
+                               elem.setAttribute( name, value + "" );
+                               return value;
+                       }
+
+               } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+                       return ret;
+
+               } else {
+                       ret = jQuery.find.attr( elem, name );
+
+                       // Non-existent attributes return null, we normalize to undefined
+                       return ret == null ?
+                               undefined :
+                               ret;
+               }
+       },
+
+       removeAttr: function( elem, value ) {
+               var name, propName,
+                       i = 0,
+                       attrNames = value && value.match( rnotwhite );
+
+               if ( attrNames && elem.nodeType === 1 ) {
+                       while ( (name = attrNames[i++]) ) {
+                               propName = jQuery.propFix[ name ] || name;
+
+                               // Boolean attributes get special treatment (#10870)
+                               if ( jQuery.expr.match.bool.test( name ) ) {
+                                       // Set corresponding property to false
+                                       elem[ propName ] = false;
+                               }
+
+                               elem.removeAttribute( name );
+                       }
+               }
+       },
+
+       attrHooks: {
+               type: {
+                       set: function( elem, value ) {
+                               if ( !support.radioValue && value === "radio" &&
+                                       jQuery.nodeName( elem, "input" ) ) {
+                                       var val = elem.value;
+                                       elem.setAttribute( "type", value );
+                                       if ( val ) {
+                                               elem.value = val;
+                                       }
+                                       return value;
+                               }
+                       }
+               }
+       }
+});
+
+// Hooks for boolean attributes
+boolHook = {
+       set: function( elem, value, name ) {
+               if ( value === false ) {
+                       // Remove boolean attributes when set to false
+                       jQuery.removeAttr( elem, name );
+               } else {
+                       elem.setAttribute( name, name );
+               }
+               return name;
+       }
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+       var getter = attrHandle[ name ] || jQuery.find.attr;
+
+       attrHandle[ name ] = function( elem, name, isXML ) {
+               var ret, handle;
+               if ( !isXML ) {
+                       // Avoid an infinite loop by temporarily removing this function from the getter
+                       handle = attrHandle[ name ];
+                       attrHandle[ name ] = ret;
+                       ret = getter( elem, name, isXML ) != null ?
+                               name.toLowerCase() :
+                               null;
+                       attrHandle[ name ] = handle;
+               }
+               return ret;
+       };
+});
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i;
+
+jQuery.fn.extend({
+       prop: function( name, value ) {
+               return access( this, jQuery.prop, name, value, arguments.length > 1 );
+       },
+
+       removeProp: function( name ) {
+               return this.each(function() {
+                       delete this[ jQuery.propFix[ name ] || name ];
+               });
+       }
+});
+
+jQuery.extend({
+       propFix: {
+               "for": "htmlFor",
+               "class": "className"
+       },
+
+       prop: function( elem, name, value ) {
+               var ret, hooks, notxml,
+                       nType = elem.nodeType;
+
+               // Don't get/set properties on text, comment and attribute nodes
+               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+               if ( notxml ) {
+                       // Fix name and attach hooks
+                       name = jQuery.propFix[ name ] || name;
+                       hooks = jQuery.propHooks[ name ];
+               }
+
+               if ( value !== undefined ) {
+                       return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+                               ret :
+                               ( elem[ name ] = value );
+
+               } else {
+                       return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+                               ret :
+                               elem[ name ];
+               }
+       },
+
+       propHooks: {
+               tabIndex: {
+                       get: function( elem ) {
+                               return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
+                                       elem.tabIndex :
+                                       -1;
+                       }
+               }
+       }
+});
+
+if ( !support.optSelected ) {
+       jQuery.propHooks.selected = {
+               get: function( elem ) {
+                       var parent = elem.parentNode;
+                       if ( parent && parent.parentNode ) {
+                               parent.parentNode.selectedIndex;
+                       }
+                       return null;
+               }
+       };
+}
+
+jQuery.each([
+       "tabIndex",
+       "readOnly",
+       "maxLength",
+       "cellSpacing",
+       "cellPadding",
+       "rowSpan",
+       "colSpan",
+       "useMap",
+       "frameBorder",
+       "contentEditable"
+], function() {
+       jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+
+
+
+var rclass = /[\t\r\n\f]/g;
+
+jQuery.fn.extend({
+       addClass: function( value ) {
+               var classes, elem, cur, clazz, j, finalValue,
+                       proceed = typeof value === "string" && value,
+                       i = 0,
+                       len = this.length;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( j ) {
+                               jQuery( this ).addClass( value.call( this, j, this.className ) );
+                       });
+               }
+
+               if ( proceed ) {
+                       // The disjunction here is for better compressibility (see removeClass)
+                       classes = ( value || "" ).match( rnotwhite ) || [];
+
+                       for ( ; i < len; i++ ) {
+                               elem = this[ i ];
+                               cur = elem.nodeType === 1 && ( elem.className ?
+                                       ( " " + elem.className + " " ).replace( rclass, " " ) :
+                                       " "
+                               );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( (clazz = classes[j++]) ) {
+                                               if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+                                                       cur += clazz + " ";
+                                               }
+                                       }
+
+                                       // only assign if different to avoid unneeded rendering.
+                                       finalValue = jQuery.trim( cur );
+                                       if ( elem.className !== finalValue ) {
+                                               elem.className = finalValue;
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       removeClass: function( value ) {
+               var classes, elem, cur, clazz, j, finalValue,
+                       proceed = arguments.length === 0 || typeof value === "string" && value,
+                       i = 0,
+                       len = this.length;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( j ) {
+                               jQuery( this ).removeClass( value.call( this, j, this.className ) );
+                       });
+               }
+               if ( proceed ) {
+                       classes = ( value || "" ).match( rnotwhite ) || [];
+
+                       for ( ; i < len; i++ ) {
+                               elem = this[ i ];
+                               // This expression is here for better compressibility (see addClass)
+                               cur = elem.nodeType === 1 && ( elem.className ?
+                                       ( " " + elem.className + " " ).replace( rclass, " " ) :
+                                       ""
+                               );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( (clazz = classes[j++]) ) {
+                                               // Remove *all* instances
+                                               while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+                                                       cur = cur.replace( " " + clazz + " ", " " );
+                                               }
+                                       }
+
+                                       // Only assign if different to avoid unneeded rendering.
+                                       finalValue = value ? jQuery.trim( cur ) : "";
+                                       if ( elem.className !== finalValue ) {
+                                               elem.className = finalValue;
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       toggleClass: function( value, stateVal ) {
+               var type = typeof value;
+
+               if ( typeof stateVal === "boolean" && type === "string" ) {
+                       return stateVal ? this.addClass( value ) : this.removeClass( value );
+               }
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( i ) {
+                               jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+                       });
+               }
+
+               return this.each(function() {
+                       if ( type === "string" ) {
+                               // Toggle individual class names
+                               var className,
+                                       i = 0,
+                                       self = jQuery( this ),
+                                       classNames = value.match( rnotwhite ) || [];
+
+                               while ( (className = classNames[ i++ ]) ) {
+                                       // Check each className given, space separated list
+                                       if ( self.hasClass( className ) ) {
+                                               self.removeClass( className );
+                                       } else {
+                                               self.addClass( className );
+                                       }
+                               }
+
+                       // Toggle whole class name
+                       } else if ( type === strundefined || type === "boolean" ) {
+                               if ( this.className ) {
+                                       // store className if set
+                                       data_priv.set( this, "__className__", this.className );
+                               }
+
+                               // If the element has a class name or if we're passed `false`,
+                               // then remove the whole classname (if there was one, the above saved it).
+                               // Otherwise bring back whatever was previously saved (if anything),
+                               // falling back to the empty string if nothing was stored.
+                               this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
+                       }
+               });
+       },
+
+       hasClass: function( selector ) {
+               var className = " " + selector + " ",
+                       i = 0,
+                       l = this.length;
+               for ( ; i < l; i++ ) {
+                       if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+                               return true;
+                       }
+               }
+
+               return false;
+       }
+});
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend({
+       val: function( value ) {
+               var hooks, ret, isFunction,
+                       elem = this[0];
+
+               if ( !arguments.length ) {
+                       if ( elem ) {
+                               hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+                               if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+                                       return ret;
+                               }
+
+                               ret = elem.value;
+
+                               return typeof ret === "string" ?
+                                       // Handle most common string cases
+                                       ret.replace(rreturn, "") :
+                                       // Handle cases where value is null/undef or number
+                                       ret == null ? "" : ret;
+                       }
+
+                       return;
+               }
+
+               isFunction = jQuery.isFunction( value );
+
+               return this.each(function( i ) {
+                       var val;
+
+                       if ( this.nodeType !== 1 ) {
+                               return;
+                       }
+
+                       if ( isFunction ) {
+                               val = value.call( this, i, jQuery( this ).val() );
+                       } else {
+                               val = value;
+                       }
+
+                       // Treat null/undefined as ""; convert numbers to string
+                       if ( val == null ) {
+                               val = "";
+
+                       } else if ( typeof val === "number" ) {
+                               val += "";
+
+                       } else if ( jQuery.isArray( val ) ) {
+                               val = jQuery.map( val, function( value ) {
+                                       return value == null ? "" : value + "";
+                               });
+                       }
+
+                       hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+                       // If set returns undefined, fall back to normal setting
+                       if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+                               this.value = val;
+                       }
+               });
+       }
+});
+
+jQuery.extend({
+       valHooks: {
+               option: {
+                       get: function( elem ) {
+                               var val = jQuery.find.attr( elem, "value" );
+                               return val != null ?
+                                       val :
+                                       // Support: IE10-11+
+                                       // option.text throws exceptions (#14686, #14858)
+                                       jQuery.trim( jQuery.text( elem ) );
+                       }
+               },
+               select: {
+                       get: function( elem ) {
+                               var value, option,
+                                       options = elem.options,
+                                       index = elem.selectedIndex,
+                                       one = elem.type === "select-one" || index < 0,
+                                       values = one ? null : [],
+                                       max = one ? index + 1 : options.length,
+                                       i = index < 0 ?
+                                               max :
+                                               one ? index : 0;
+
+                               // Loop through all the selected options
+                               for ( ; i < max; i++ ) {
+                                       option = options[ i ];
+
+                                       // IE6-9 doesn't update selected after form reset (#2551)
+                                       if ( ( option.selected || i === index ) &&
+                                                       // Don't return options that are disabled or in a disabled optgroup
+                                                       ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
+                                                       ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+                                               // Get the specific value for the option
+                                               value = jQuery( option ).val();
+
+                                               // We don't need an array for one selects
+                                               if ( one ) {
+                                                       return value;
+                                               }
+
+                                               // Multi-Selects return an array
+                                               values.push( value );
+                                       }
+                               }
+
+                               return values;
+                       },
+
+                       set: function( elem, value ) {
+                               var optionSet, option,
+                                       options = elem.options,
+                                       values = jQuery.makeArray( value ),
+                                       i = options.length;
+
+                               while ( i-- ) {
+                                       option = options[ i ];
+                                       if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
+                                               optionSet = true;
+                                       }
+                               }
+
+                               // Force browsers to behave consistently when non-matching value is set
+                               if ( !optionSet ) {
+                                       elem.selectedIndex = -1;
+                               }
+                               return values;
+                       }
+               }
+       }
+});
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+       jQuery.valHooks[ this ] = {
+               set: function( elem, value ) {
+                       if ( jQuery.isArray( value ) ) {
+                               return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+                       }
+               }
+       };
+       if ( !support.checkOn ) {
+               jQuery.valHooks[ this ].get = function( elem ) {
+                       return elem.getAttribute("value") === null ? "on" : elem.value;
+               };
+       }
+});
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+       "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+       "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+       // Handle event binding
+       jQuery.fn[ name ] = function( data, fn ) {
+               return arguments.length > 0 ?
+                       this.on( name, null, data, fn ) :
+                       this.trigger( name );
+       };
+});
+
+jQuery.fn.extend({
+       hover: function( fnOver, fnOut ) {
+               return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+       },
+
+       bind: function( types, data, fn ) {
+               return this.on( types, null, data, fn );
+       },
+       unbind: function( types, fn ) {
+               return this.off( types, null, fn );
+       },
+
+       delegate: function( selector, types, data, fn ) {
+               return this.on( types, selector, data, fn );
+       },
+       undelegate: function( selector, types, fn ) {
+               // ( namespace ) or ( selector, types [, fn] )
+               return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+       }
+});
+
+
+var nonce = jQuery.now();
+
+var rquery = (/\?/);
+
+
+
+// Support: Android 2.3
+// Workaround failure to string-cast null input
+jQuery.parseJSON = function( data ) {
+       return JSON.parse( data + "" );
+};
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+       var xml, tmp;
+       if ( !data || typeof data !== "string" ) {
+               return null;
+       }
+
+       // Support: IE9
+       try {
+               tmp = new DOMParser();
+               xml = tmp.parseFromString( data, "text/xml" );
+       } catch ( e ) {
+               xml = undefined;
+       }
+
+       if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+               jQuery.error( "Invalid XML: " + data );
+       }
+       return xml;
+};
+
+
+var
+       rhash = /#.*$/,
+       rts = /([?&])_=[^&]*/,
+       rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+       // #7653, #8125, #8152: local protocol detection
+       rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+       rnoContent = /^(?:GET|HEAD)$/,
+       rprotocol = /^\/\//,
+       rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
+
+       /* Prefilters
+        * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+        * 2) These are called:
+        *    - BEFORE asking for a transport
+        *    - AFTER param serialization (s.data is a string if s.processData is true)
+        * 3) key is the dataType
+        * 4) the catchall symbol "*" can be used
+        * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+        */
+       prefilters = {},
+
+       /* Transports bindings
+        * 1) key is the dataType
+        * 2) the catchall symbol "*" can be used
+        * 3) selection will start with transport dataType and THEN go to "*" if needed
+        */
+       transports = {},
+
+       // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+       allTypes = "*/".concat( "*" ),
+
+       // Document location
+       ajaxLocation = window.location.href,
+
+       // Segment location into parts
+       ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+       // dataTypeExpression is optional and defaults to "*"
+       return function( dataTypeExpression, func ) {
+
+               if ( typeof dataTypeExpression !== "string" ) {
+                       func = dataTypeExpression;
+                       dataTypeExpression = "*";
+               }
+
+               var dataType,
+                       i = 0,
+                       dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
+
+               if ( jQuery.isFunction( func ) ) {
+                       // For each dataType in the dataTypeExpression
+                       while ( (dataType = dataTypes[i++]) ) {
+                               // Prepend if requested
+                               if ( dataType[0] === "+" ) {
+                                       dataType = dataType.slice( 1 ) || "*";
+                                       (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+                               // Otherwise append
+                               } else {
+                                       (structure[ dataType ] = structure[ dataType ] || []).push( func );
+                               }
+                       }
+               }
+       };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+       var inspected = {},
+               seekingTransport = ( structure === transports );
+
+       function inspect( dataType ) {
+               var selected;
+               inspected[ dataType ] = true;
+               jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+                       var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+                       if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+                               options.dataTypes.unshift( dataTypeOrTransport );
+                               inspect( dataTypeOrTransport );
+                               return false;
+                       } else if ( seekingTransport ) {
+                               return !( selected = dataTypeOrTransport );
+                       }
+               });
+               return selected;
+       }
+
+       return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+       var key, deep,
+               flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+       for ( key in src ) {
+               if ( src[ key ] !== undefined ) {
+                       ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+               }
+       }
+       if ( deep ) {
+               jQuery.extend( true, target, deep );
+       }
+
+       return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+       var ct, type, finalDataType, firstDataType,
+               contents = s.contents,
+               dataTypes = s.dataTypes;
+
+       // Remove auto dataType and get content-type in the process
+       while ( dataTypes[ 0 ] === "*" ) {
+               dataTypes.shift();
+               if ( ct === undefined ) {
+                       ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+               }
+       }
+
+       // Check if we're dealing with a known content-type
+       if ( ct ) {
+               for ( type in contents ) {
+                       if ( contents[ type ] && contents[ type ].test( ct ) ) {
+                               dataTypes.unshift( type );
+                               break;
+                       }
+               }
+       }
+
+       // Check to see if we have a response for the expected dataType
+       if ( dataTypes[ 0 ] in responses ) {
+               finalDataType = dataTypes[ 0 ];
+       } else {
+               // Try convertible dataTypes
+               for ( type in responses ) {
+                       if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+                               finalDataType = type;
+                               break;
+                       }
+                       if ( !firstDataType ) {
+                               firstDataType = type;
+                       }
+               }
+               // Or just use first one
+               finalDataType = finalDataType || firstDataType;
+       }
+
+       // If we found a dataType
+       // We add the dataType to the list if needed
+       // and return the corresponding response
+       if ( finalDataType ) {
+               if ( finalDataType !== dataTypes[ 0 ] ) {
+                       dataTypes.unshift( finalDataType );
+               }
+               return responses[ finalDataType ];
+       }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+       var conv2, current, conv, tmp, prev,
+               converters = {},
+               // Work with a copy of dataTypes in case we need to modify it for conversion
+               dataTypes = s.dataTypes.slice();
+
+       // Create converters map with lowercased keys
+       if ( dataTypes[ 1 ] ) {
+               for ( conv in s.converters ) {
+                       converters[ conv.toLowerCase() ] = s.converters[ conv ];
+               }
+       }
+
+       current = dataTypes.shift();
+
+       // Convert to each sequential dataType
+       while ( current ) {
+
+               if ( s.responseFields[ current ] ) {
+                       jqXHR[ s.responseFields[ current ] ] = response;
+               }
+
+               // Apply the dataFilter if provided
+               if ( !prev && isSuccess && s.dataFilter ) {
+                       response = s.dataFilter( response, s.dataType );
+               }
+
+               prev = current;
+               current = dataTypes.shift();
+
+               if ( current ) {
+
+               // There's only work to do if current dataType is non-auto
+                       if ( current === "*" ) {
+
+                               current = prev;
+
+                       // Convert response if prev dataType is non-auto and differs from current
+                       } else if ( prev !== "*" && prev !== current ) {
+
+                               // Seek a direct converter
+                               conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+                               // If none found, seek a pair
+                               if ( !conv ) {
+                                       for ( conv2 in converters ) {
+
+                                               // If conv2 outputs current
+                                               tmp = conv2.split( " " );
+                                               if ( tmp[ 1 ] === current ) {
+
+                                                       // If prev can be converted to accepted input
+                                                       conv = converters[ prev + " " + tmp[ 0 ] ] ||
+                                                               converters[ "* " + tmp[ 0 ] ];
+                                                       if ( conv ) {
+                                                               // Condense equivalence converters
+                                                               if ( conv === true ) {
+                                                                       conv = converters[ conv2 ];
+
+                                                               // Otherwise, insert the intermediate dataType
+                                                               } else if ( converters[ conv2 ] !== true ) {
+                                                                       current = tmp[ 0 ];
+                                                                       dataTypes.unshift( tmp[ 1 ] );
+                                                               }
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               // Apply converter (if not an equivalence)
+                               if ( conv !== true ) {
+
+                                       // Unless errors are allowed to bubble, catch and return them
+                                       if ( conv && s[ "throws" ] ) {
+                                               response = conv( response );
+                                       } else {
+                                               try {
+                                                       response = conv( response );
+                                               } catch ( e ) {
+                                                       return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       return { state: "success", data: response };
+}
+
+jQuery.extend({
+
+       // Counter for holding the number of active queries
+       active: 0,
+
+       // Last-Modified header cache for next request
+       lastModified: {},
+       etag: {},
+
+       ajaxSettings: {
+               url: ajaxLocation,
+               type: "GET",
+               isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+               global: true,
+               processData: true,
+               async: true,
+               contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+               /*
+               timeout: 0,
+               data: null,
+               dataType: null,
+               username: null,
+               password: null,
+               cache: null,
+               throws: false,
+               traditional: false,
+               headers: {},
+               */
+
+               accepts: {
+                       "*": allTypes,
+                       text: "text/plain",
+                       html: "text/html",
+                       xml: "application/xml, text/xml",
+                       json: "application/json, text/javascript"
+               },
+
+               contents: {
+                       xml: /xml/,
+                       html: /html/,
+                       json: /json/
+               },
+
+               responseFields: {
+                       xml: "responseXML",
+                       text: "responseText",
+                       json: "responseJSON"
+               },
+
+               // Data converters
+               // Keys separate source (or catchall "*") and destination types with a single space
+               converters: {
+
+                       // Convert anything to text
+                       "* text": String,
+
+                       // Text to html (true = no transformation)
+                       "text html": true,
+
+                       // Evaluate text as a json expression
+                       "text json": jQuery.parseJSON,
+
+                       // Parse text as xml
+                       "text xml": jQuery.parseXML
+               },
+
+               // For options that shouldn't be deep extended:
+               // you can add your own custom options here if
+               // and when you create one that shouldn't be
+               // deep extended (see ajaxExtend)
+               flatOptions: {
+                       url: true,
+                       context: true
+               }
+       },
+
+       // Creates a full fledged settings object into target
+       // with both ajaxSettings and settings fields.
+       // If target is omitted, writes into ajaxSettings.
+       ajaxSetup: function( target, settings ) {
+               return settings ?
+
+                       // Building a settings object
+                       ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+                       // Extending ajaxSettings
+                       ajaxExtend( jQuery.ajaxSettings, target );
+       },
+
+       ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+       ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+       // Main method
+       ajax: function( url, options ) {
+
+               // If url is an object, simulate pre-1.5 signature
+               if ( typeof url === "object" ) {
+                       options = url;
+                       url = undefined;
+               }
+
+               // Force options to be an object
+               options = options || {};
+
+               var transport,
+                       // URL without anti-cache param
+                       cacheURL,
+                       // Response headers
+                       responseHeadersString,
+                       responseHeaders,
+                       // timeout handle
+                       timeoutTimer,
+                       // Cross-domain detection vars
+                       parts,
+                       // To know if global events are to be dispatched
+                       fireGlobals,
+                       // Loop variable
+                       i,
+                       // Create the final options object
+                       s = jQuery.ajaxSetup( {}, options ),
+                       // Callbacks context
+                       callbackContext = s.context || s,
+                       // Context for global events is callbackContext if it is a DOM node or jQuery collection
+                       globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+                               jQuery( callbackContext ) :
+                               jQuery.event,
+                       // Deferreds
+                       deferred = jQuery.Deferred(),
+                       completeDeferred = jQuery.Callbacks("once memory"),
+                       // Status-dependent callbacks
+                       statusCode = s.statusCode || {},
+                       // Headers (they are sent all at once)
+                       requestHeaders = {},
+                       requestHeadersNames = {},
+                       // The jqXHR state
+                       state = 0,
+                       // Default abort message
+                       strAbort = "canceled",
+                       // Fake xhr
+                       jqXHR = {
+                               readyState: 0,
+
+                               // Builds headers hashtable if needed
+                               getResponseHeader: function( key ) {
+                                       var match;
+                                       if ( state === 2 ) {
+                                               if ( !responseHeaders ) {
+                                                       responseHeaders = {};
+                                                       while ( (match = rheaders.exec( responseHeadersString )) ) {
+                                                               responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+                                                       }
+                                               }
+                                               match = responseHeaders[ key.toLowerCase() ];
+                                       }
+                                       return match == null ? null : match;
+                               },
+
+                               // Raw string
+                               getAllResponseHeaders: function() {
+                                       return state === 2 ? responseHeadersString : null;
+                               },
+
+                               // Caches the header
+                               setRequestHeader: function( name, value ) {
+                                       var lname = name.toLowerCase();
+                                       if ( !state ) {
+                                               name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+                                               requestHeaders[ name ] = value;
+                                       }
+                                       return this;
+                               },
+
+                               // Overrides response content-type header
+                               overrideMimeType: function( type ) {
+                                       if ( !state ) {
+                                               s.mimeType = type;
+                                       }
+                                       return this;
+                               },
+
+                               // Status-dependent callbacks
+                               statusCode: function( map ) {
+                                       var code;
+                                       if ( map ) {
+                                               if ( state < 2 ) {
+                                                       for ( code in map ) {
+                                                               // Lazy-add the new callback in a way that preserves old ones
+                                                               statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+                                                       }
+                                               } else {
+                                                       // Execute the appropriate callbacks
+                                                       jqXHR.always( map[ jqXHR.status ] );
+                                               }
+                                       }
+                                       return this;
+                               },
+
+                               // Cancel the request
+                               abort: function( statusText ) {
+                                       var finalText = statusText || strAbort;
+                                       if ( transport ) {
+                                               transport.abort( finalText );
+                                       }
+                                       done( 0, finalText );
+                                       return this;
+                               }
+                       };
+
+               // Attach deferreds
+               deferred.promise( jqXHR ).complete = completeDeferred.add;
+               jqXHR.success = jqXHR.done;
+               jqXHR.error = jqXHR.fail;
+
+               // Remove hash character (#7531: and string promotion)
+               // Add protocol if not provided (prefilters might expect it)
+               // Handle falsy url in the settings object (#10093: consistency with old signature)
+               // We also use the url parameter if available
+               s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
+                       .replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+               // Alias method option to type as per ticket #12004
+               s.type = options.method || options.type || s.method || s.type;
+
+               // Extract dataTypes list
+               s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
+
+               // A cross-domain request is in order when we have a protocol:host:port mismatch
+               if ( s.crossDomain == null ) {
+                       parts = rurl.exec( s.url.toLowerCase() );
+                       s.crossDomain = !!( parts &&
+                               ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+                                       ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+                                               ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+                       );
+               }
+
+               // Convert data if not already a string
+               if ( s.data && s.processData && typeof s.data !== "string" ) {
+                       s.data = jQuery.param( s.data, s.traditional );
+               }
+
+               // Apply prefilters
+               inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+               // If request was aborted inside a prefilter, stop there
+               if ( state === 2 ) {
+                       return jqXHR;
+               }
+
+               // We can fire global events as of now if asked to
+               // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+               fireGlobals = jQuery.event && s.global;
+
+               // Watch for a new set of requests
+               if ( fireGlobals && jQuery.active++ === 0 ) {
+                       jQuery.event.trigger("ajaxStart");
+               }
+
+               // Uppercase the type
+               s.type = s.type.toUpperCase();
+
+               // Determine if request has content
+               s.hasContent = !rnoContent.test( s.type );
+
+               // Save the URL in case we're toying with the If-Modified-Since
+               // and/or If-None-Match header later on
+               cacheURL = s.url;
+
+               // More options handling for requests with no content
+               if ( !s.hasContent ) {
+
+                       // If data is available, append data to url
+                       if ( s.data ) {
+                               cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+                               // #9682: remove data so that it's not used in an eventual retry
+                               delete s.data;
+                       }
+
+                       // Add anti-cache in url if needed
+                       if ( s.cache === false ) {
+                               s.url = rts.test( cacheURL ) ?
+
+                                       // If there is already a '_' parameter, set its value
+                                       cacheURL.replace( rts, "$1_=" + nonce++ ) :
+
+                                       // Otherwise add one to the end
+                                       cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
+                       }
+               }
+
+               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+               if ( s.ifModified ) {
+                       if ( jQuery.lastModified[ cacheURL ] ) {
+                               jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+                       }
+                       if ( jQuery.etag[ cacheURL ] ) {
+                               jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+                       }
+               }
+
+               // Set the correct header, if data is being sent
+               if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+                       jqXHR.setRequestHeader( "Content-Type", s.contentType );
+               }
+
+               // Set the Accepts header for the server, depending on the dataType
+               jqXHR.setRequestHeader(
+                       "Accept",
+                       s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+                               s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+                               s.accepts[ "*" ]
+               );
+
+               // Check for headers option
+               for ( i in s.headers ) {
+                       jqXHR.setRequestHeader( i, s.headers[ i ] );
+               }
+
+               // Allow custom headers/mimetypes and early abort
+               if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+                       // Abort if not done already and return
+                       return jqXHR.abort();
+               }
+
+               // Aborting is no longer a cancellation
+               strAbort = "abort";
+
+               // Install callbacks on deferreds
+               for ( i in { success: 1, error: 1, complete: 1 } ) {
+                       jqXHR[ i ]( s[ i ] );
+               }
+
+               // Get transport
+               transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+               // If no transport, we auto-abort
+               if ( !transport ) {
+                       done( -1, "No Transport" );
+               } else {
+                       jqXHR.readyState = 1;
+
+                       // Send global event
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+                       }
+                       // Timeout
+                       if ( s.async && s.timeout > 0 ) {
+                               timeoutTimer = setTimeout(function() {
+                                       jqXHR.abort("timeout");
+                               }, s.timeout );
+                       }
+
+                       try {
+                               state = 1;
+                               transport.send( requestHeaders, done );
+                       } catch ( e ) {
+                               // Propagate exception as error if not done
+                               if ( state < 2 ) {
+                                       done( -1, e );
+                               // Simply rethrow otherwise
+                               } else {
+                                       throw e;
+                               }
+                       }
+               }
+
+               // Callback for when everything is done
+               function done( status, nativeStatusText, responses, headers ) {
+                       var isSuccess, success, error, response, modified,
+                               statusText = nativeStatusText;
+
+                       // Called once
+                       if ( state === 2 ) {
+                               return;
+                       }
+
+                       // State is "done" now
+                       state = 2;
+
+                       // Clear timeout if it exists
+                       if ( timeoutTimer ) {
+                               clearTimeout( timeoutTimer );
+                       }
+
+                       // Dereference transport for early garbage collection
+                       // (no matter how long the jqXHR object will be used)
+                       transport = undefined;
+
+                       // Cache response headers
+                       responseHeadersString = headers || "";
+
+                       // Set readyState
+                       jqXHR.readyState = status > 0 ? 4 : 0;
+
+                       // Determine if successful
+                       isSuccess = status >= 200 && status < 300 || status === 304;
+
+                       // Get response data
+                       if ( responses ) {
+                               response = ajaxHandleResponses( s, jqXHR, responses );
+                       }
+
+                       // Convert no matter what (that way responseXXX fields are always set)
+                       response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+                       // If successful, handle type chaining
+                       if ( isSuccess ) {
+
+                               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+                               if ( s.ifModified ) {
+                                       modified = jqXHR.getResponseHeader("Last-Modified");
+                                       if ( modified ) {
+                                               jQuery.lastModified[ cacheURL ] = modified;
+                                       }
+                                       modified = jqXHR.getResponseHeader("etag");
+                                       if ( modified ) {
+                                               jQuery.etag[ cacheURL ] = modified;
+                                       }
+                               }
+
+                               // if no content
+                               if ( status === 204 || s.type === "HEAD" ) {
+                                       statusText = "nocontent";
+
+                               // if not modified
+                               } else if ( status === 304 ) {
+                                       statusText = "notmodified";
+
+                               // If we have data, let's convert it
+                               } else {
+                                       statusText = response.state;
+                                       success = response.data;
+                                       error = response.error;
+                                       isSuccess = !error;
+                               }
+                       } else {
+                               // Extract error from statusText and normalize for non-aborts
+                               error = statusText;
+                               if ( status || !statusText ) {
+                                       statusText = "error";
+                                       if ( status < 0 ) {
+                                               status = 0;
+                                       }
+                               }
+                       }
+
+                       // Set data for the fake xhr object
+                       jqXHR.status = status;
+                       jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+                       // Success/Error
+                       if ( isSuccess ) {
+                               deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+                       } else {
+                               deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+                       }
+
+                       // Status-dependent callbacks
+                       jqXHR.statusCode( statusCode );
+                       statusCode = undefined;
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+                                       [ jqXHR, s, isSuccess ? success : error ] );
+                       }
+
+                       // Complete
+                       completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+                               // Handle the global AJAX counter
+                               if ( !( --jQuery.active ) ) {
+                                       jQuery.event.trigger("ajaxStop");
+                               }
+                       }
+               }
+
+               return jqXHR;
+       },
+
+       getJSON: function( url, data, callback ) {
+               return jQuery.get( url, data, callback, "json" );
+       },
+
+       getScript: function( url, callback ) {
+               return jQuery.get( url, undefined, callback, "script" );
+       }
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+       jQuery[ method ] = function( url, data, callback, type ) {
+               // Shift arguments if data argument was omitted
+               if ( jQuery.isFunction( data ) ) {
+                       type = type || callback;
+                       callback = data;
+                       data = undefined;
+               }
+
+               return jQuery.ajax({
+                       url: url,
+                       type: method,
+                       dataType: type,
+                       data: data,
+                       success: callback
+               });
+       };
+});
+
+
+jQuery._evalUrl = function( url ) {
+       return jQuery.ajax({
+               url: url,
+               type: "GET",
+               dataType: "script",
+               async: false,
+               global: false,
+               "throws": true
+       });
+};
+
+
+jQuery.fn.extend({
+       wrapAll: function( html ) {
+               var wrap;
+
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function( i ) {
+                               jQuery( this ).wrapAll( html.call(this, i) );
+                       });
+               }
+
+               if ( this[ 0 ] ) {
+
+                       // The elements to wrap the target around
+                       wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+                       if ( this[ 0 ].parentNode ) {
+                               wrap.insertBefore( this[ 0 ] );
+                       }
+
+                       wrap.map(function() {
+                               var elem = this;
+
+                               while ( elem.firstElementChild ) {
+                                       elem = elem.firstElementChild;
+                               }
+
+                               return elem;
+                       }).append( this );
+               }
+
+               return this;
+       },
+
+       wrapInner: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function( i ) {
+                               jQuery( this ).wrapInner( html.call(this, i) );
+                       });
+               }
+
+               return this.each(function() {
+                       var self = jQuery( this ),
+                               contents = self.contents();
+
+                       if ( contents.length ) {
+                               contents.wrapAll( html );
+
+                       } else {
+                               self.append( html );
+                       }
+               });
+       },
+
+       wrap: function( html ) {
+               var isFunction = jQuery.isFunction( html );
+
+               return this.each(function( i ) {
+                       jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+               });
+       },
+
+       unwrap: function() {
+               return this.parent().each(function() {
+                       if ( !jQuery.nodeName( this, "body" ) ) {
+                               jQuery( this ).replaceWith( this.childNodes );
+                       }
+               }).end();
+       }
+});
+
+
+jQuery.expr.filters.hidden = function( elem ) {
+       // Support: Opera <= 12.12
+       // Opera reports offsetWidths and offsetHeights less than zero on some elements
+       return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
+};
+jQuery.expr.filters.visible = function( elem ) {
+       return !jQuery.expr.filters.hidden( elem );
+};
+
+
+
+
+var r20 = /%20/g,
+       rbracket = /\[\]$/,
+       rCRLF = /\r?\n/g,
+       rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+       rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+       var name;
+
+       if ( jQuery.isArray( obj ) ) {
+               // Serialize array item.
+               jQuery.each( obj, function( i, v ) {
+                       if ( traditional || rbracket.test( prefix ) ) {
+                               // Treat each array item as a scalar.
+                               add( prefix, v );
+
+                       } else {
+                               // Item is non-scalar (array or object), encode its numeric index.
+                               buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+                       }
+               });
+
+       } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+               // Serialize object item.
+               for ( name in obj ) {
+                       buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+               }
+
+       } else {
+               // Serialize scalar item.
+               add( prefix, obj );
+       }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+       var prefix,
+               s = [],
+               add = function( key, value ) {
+                       // If value is a function, invoke it and return its value
+                       value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+                       s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+               };
+
+       // Set traditional to true for jQuery <= 1.3.2 behavior.
+       if ( traditional === undefined ) {
+               traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+       }
+
+       // If an array was passed in, assume that it is an array of form elements.
+       if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+               // Serialize the form elements
+               jQuery.each( a, function() {
+                       add( this.name, this.value );
+               });
+
+       } else {
+               // If traditional, encode the "old" way (the way 1.3.2 or older
+               // did it), otherwise encode params recursively.
+               for ( prefix in a ) {
+                       buildParams( prefix, a[ prefix ], traditional, add );
+               }
+       }
+
+       // Return the resulting serialization
+       return s.join( "&" ).replace( r20, "+" );
+};
+
+jQuery.fn.extend({
+       serialize: function() {
+               return jQuery.param( this.serializeArray() );
+       },
+       serializeArray: function() {
+               return this.map(function() {
+                       // Can add propHook for "elements" to filter or add form elements
+                       var elements = jQuery.prop( this, "elements" );
+                       return elements ? jQuery.makeArray( elements ) : this;
+               })
+               .filter(function() {
+                       var type = this.type;
+
+                       // Use .is( ":disabled" ) so that fieldset[disabled] works
+                       return this.name && !jQuery( this ).is( ":disabled" ) &&
+                               rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+                               ( this.checked || !rcheckableType.test( type ) );
+               })
+               .map(function( i, elem ) {
+                       var val = jQuery( this ).val();
+
+                       return val == null ?
+                               null :
+                               jQuery.isArray( val ) ?
+                                       jQuery.map( val, function( val ) {
+                                               return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+                                       }) :
+                                       { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+               }).get();
+       }
+});
+
+
+jQuery.ajaxSettings.xhr = function() {
+       try {
+               return new XMLHttpRequest();
+       } catch( e ) {}
+};
+
+var xhrId = 0,
+       xhrCallbacks = {},
+       xhrSuccessStatus = {
+               // file protocol always yields status code 0, assume 200
+               0: 200,
+               // Support: IE9
+               // #1450: sometimes IE returns 1223 when it should be 204
+               1223: 204
+       },
+       xhrSupported = jQuery.ajaxSettings.xhr();
+
+// Support: IE9
+// Open requests must be manually aborted on unload (#5280)
+// See https://support.microsoft.com/kb/2856746 for more info
+if ( window.attachEvent ) {
+       window.attachEvent( "onunload", function() {
+               for ( var key in xhrCallbacks ) {
+                       xhrCallbacks[ key ]();
+               }
+       });
+}
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport(function( options ) {
+       var callback;
+
+       // Cross domain only allowed if supported through XMLHttpRequest
+       if ( support.cors || xhrSupported && !options.crossDomain ) {
+               return {
+                       send: function( headers, complete ) {
+                               var i,
+                                       xhr = options.xhr(),
+                                       id = ++xhrId;
+
+                               xhr.open( options.type, options.url, options.async, options.username, options.password );
+
+                               // Apply custom fields if provided
+                               if ( options.xhrFields ) {
+                                       for ( i in options.xhrFields ) {
+                                               xhr[ i ] = options.xhrFields[ i ];
+                                       }
+                               }
+
+                               // Override mime type if needed
+                               if ( options.mimeType && xhr.overrideMimeType ) {
+                                       xhr.overrideMimeType( options.mimeType );
+                               }
+
+                               // X-Requested-With header
+                               // For cross-domain requests, seeing as conditions for a preflight are
+                               // akin to a jigsaw puzzle, we simply never set it to be sure.
+                               // (it can always be set on a per-request basis or even using ajaxSetup)
+                               // For same-domain requests, won't change header if already provided.
+                               if ( !options.crossDomain && !headers["X-Requested-With"] ) {
+                                       headers["X-Requested-With"] = "XMLHttpRequest";
+                               }
+
+                               // Set headers
+                               for ( i in headers ) {
+                                       xhr.setRequestHeader( i, headers[ i ] );
+                               }
+
+                               // Callback
+                               callback = function( type ) {
+                                       return function() {
+                                               if ( callback ) {
+                                                       delete xhrCallbacks[ id ];
+                                                       callback = xhr.onload = xhr.onerror = null;
+
+                                                       if ( type === "abort" ) {
+                                                               xhr.abort();
+                                                       } else if ( type === "error" ) {
+                                                               complete(
+                                                                       // file: protocol always yields status 0; see #8605, #14207
+                                                                       xhr.status,
+                                                                       xhr.statusText
+                                                               );
+                                                       } else {
+                                                               complete(
+                                                                       xhrSuccessStatus[ xhr.status ] || xhr.status,
+                                                                       xhr.statusText,
+                                                                       // Support: IE9
+                                                                       // Accessing binary-data responseText throws an exception
+                                                                       // (#11426)
+                                                                       typeof xhr.responseText === "string" ? {
+                                                                               text: xhr.responseText
+                                                                       } : undefined,
+                                                                       xhr.getAllResponseHeaders()
+                                                               );
+                                                       }
+                                               }
+                                       };
+                               };
+
+                               // Listen to events
+                               xhr.onload = callback();
+                               xhr.onerror = callback("error");
+
+                               // Create the abort callback
+                               callback = xhrCallbacks[ id ] = callback("abort");
+
+                               try {
+                                       // Do send the request (this may raise an exception)
+                                       xhr.send( options.hasContent && options.data || null );
+                               } catch ( e ) {
+                                       // #14683: Only rethrow if this hasn't been notified as an error yet
+                                       if ( callback ) {
+                                               throw e;
+                                       }
+                               }
+                       },
+
+                       abort: function() {
+                               if ( callback ) {
+                                       callback();
+                               }
+                       }
+               };
+       }
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+       accepts: {
+               script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+       },
+       contents: {
+               script: /(?:java|ecma)script/
+       },
+       converters: {
+               "text script": function( text ) {
+                       jQuery.globalEval( text );
+                       return text;
+               }
+       }
+});
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+       if ( s.cache === undefined ) {
+               s.cache = false;
+       }
+       if ( s.crossDomain ) {
+               s.type = "GET";
+       }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+       // This transport only deals with cross domain requests
+       if ( s.crossDomain ) {
+               var script, callback;
+               return {
+                       send: function( _, complete ) {
+                               script = jQuery("<script>").prop({
+                                       async: true,
+                                       charset: s.scriptCharset,
+                                       src: s.url
+                               }).on(
+                                       "load error",
+                                       callback = function( evt ) {
+                                               script.remove();
+                                               callback = null;
+                                               if ( evt ) {
+                                                       complete( evt.type === "error" ? 404 : 200, evt.type );
+                                               }
+                                       }
+                               );
+                               document.head.appendChild( script[ 0 ] );
+                       },
+                       abort: function() {
+                               if ( callback ) {
+                                       callback();
+                               }
+                       }
+               };
+       }
+});
+
+
+
+
+var oldCallbacks = [],
+       rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+       jsonp: "callback",
+       jsonpCallback: function() {
+               var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+               this[ callback ] = true;
+               return callback;
+       }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+       var callbackName, overwritten, responseContainer,
+               jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+                       "url" :
+                       typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+               );
+
+       // Handle iff the expected data type is "jsonp" or we have a parameter to set
+       if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+               // Get callback name, remembering preexisting value associated with it
+               callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+                       s.jsonpCallback() :
+                       s.jsonpCallback;
+
+               // Insert callback into url or form data
+               if ( jsonProp ) {
+                       s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+               } else if ( s.jsonp !== false ) {
+                       s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+               }
+
+               // Use data converter to retrieve json after script execution
+               s.converters["script json"] = function() {
+                       if ( !responseContainer ) {
+                               jQuery.error( callbackName + " was not called" );
+                       }
+                       return responseContainer[ 0 ];
+               };
+
+               // force json dataType
+               s.dataTypes[ 0 ] = "json";
+
+               // Install callback
+               overwritten = window[ callbackName ];
+               window[ callbackName ] = function() {
+                       responseContainer = arguments;
+               };
+
+               // Clean-up function (fires after converters)
+               jqXHR.always(function() {
+                       // Restore preexisting value
+                       window[ callbackName ] = overwritten;
+
+                       // Save back as free
+                       if ( s[ callbackName ] ) {
+                               // make sure that re-using the options doesn't screw things around
+                               s.jsonpCallback = originalSettings.jsonpCallback;
+
+                               // save the callback name for future use
+                               oldCallbacks.push( callbackName );
+                       }
+
+                       // Call if it was a function and we have a response
+                       if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+                               overwritten( responseContainer[ 0 ] );
+                       }
+
+                       responseContainer = overwritten = undefined;
+               });
+
+               // Delegate to script
+               return "script";
+       }
+});
+
+
+
+
+// data: string of html
+// context (optional): If specified, the fragment will be created in this context, defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+       if ( !data || typeof data !== "string" ) {
+               return null;
+       }
+       if ( typeof context === "boolean" ) {
+               keepScripts = context;
+               context = false;
+       }
+       context = context || document;
+
+       var parsed = rsingleTag.exec( data ),
+               scripts = !keepScripts && [];
+
+       // Single tag
+       if ( parsed ) {
+               return [ context.createElement( parsed[1] ) ];
+       }
+
+       parsed = jQuery.buildFragment( [ data ], context, scripts );
+
+       if ( scripts && scripts.length ) {
+               jQuery( scripts ).remove();
+       }
+
+       return jQuery.merge( [], parsed.childNodes );
+};
+
+
+// Keep a copy of the old load method
+var _load = jQuery.fn.load;
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+       if ( typeof url !== "string" && _load ) {
+               return _load.apply( this, arguments );
+       }
+
+       var selector, type, response,
+               self = this,
+               off = url.indexOf(" ");
+
+       if ( off >= 0 ) {
+               selector = jQuery.trim( url.slice( off ) );
+               url = url.slice( 0, off );
+       }
+
+       // If it's a function
+       if ( jQuery.isFunction( params ) ) {
+
+               // We assume that it's the callback
+               callback = params;
+               params = undefined;
+
+       // Otherwise, build a param string
+       } else if ( params && typeof params === "object" ) {
+               type = "POST";
+       }
+
+       // If we have elements to modify, make the request
+       if ( self.length > 0 ) {
+               jQuery.ajax({
+                       url: url,
+
+                       // if "type" variable is undefined, then "GET" method will be used
+                       type: type,
+                       dataType: "html",
+                       data: params
+               }).done(function( responseText ) {
+
+                       // Save response for use in complete callback
+                       response = arguments;
+
+                       self.html( selector ?
+
+                               // If a selector was specified, locate the right elements in a dummy div
+                               // Exclude scripts to avoid IE 'Permission Denied' errors
+                               jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+                               // Otherwise use the full result
+                               responseText );
+
+               }).complete( callback && function( jqXHR, status ) {
+                       self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+               });
+       }
+
+       return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
+       jQuery.fn[ type ] = function( fn ) {
+               return this.on( type, fn );
+       };
+});
+
+
+
+
+jQuery.expr.filters.animated = function( elem ) {
+       return jQuery.grep(jQuery.timers, function( fn ) {
+               return elem === fn.elem;
+       }).length;
+};
+
+
+
+
+var docElem = window.document.documentElement;
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+       return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+       setOffset: function( elem, options, i ) {
+               var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+                       position = jQuery.css( elem, "position" ),
+                       curElem = jQuery( elem ),
+                       props = {};
+
+               // Set position first, in-case top/left are set even on static elem
+               if ( position === "static" ) {
+                       elem.style.position = "relative";
+               }
+
+               curOffset = curElem.offset();
+               curCSSTop = jQuery.css( elem, "top" );
+               curCSSLeft = jQuery.css( elem, "left" );
+               calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+                       ( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
+
+               // Need to be able to calculate position if either
+               // top or left is auto and position is either absolute or fixed
+               if ( calculatePosition ) {
+                       curPosition = curElem.position();
+                       curTop = curPosition.top;
+                       curLeft = curPosition.left;
+
+               } else {
+                       curTop = parseFloat( curCSSTop ) || 0;
+                       curLeft = parseFloat( curCSSLeft ) || 0;
+               }
+
+               if ( jQuery.isFunction( options ) ) {
+                       options = options.call( elem, i, curOffset );
+               }
+
+               if ( options.top != null ) {
+                       props.top = ( options.top - curOffset.top ) + curTop;
+               }
+               if ( options.left != null ) {
+                       props.left = ( options.left - curOffset.left ) + curLeft;
+               }
+
+               if ( "using" in options ) {
+                       options.using.call( elem, props );
+
+               } else {
+                       curElem.css( props );
+               }
+       }
+};
+
+jQuery.fn.extend({
+       offset: function( options ) {
+               if ( arguments.length ) {
+                       return options === undefined ?
+                               this :
+                               this.each(function( i ) {
+                                       jQuery.offset.setOffset( this, options, i );
+                               });
+               }
+
+               var docElem, win,
+                       elem = this[ 0 ],
+                       box = { top: 0, left: 0 },
+                       doc = elem && elem.ownerDocument;
+
+               if ( !doc ) {
+                       return;
+               }
+
+               docElem = doc.documentElement;
+
+               // Make sure it's not a disconnected DOM node
+               if ( !jQuery.contains( docElem, elem ) ) {
+                       return box;
+               }
+
+               // Support: BlackBerry 5, iOS 3 (original iPhone)
+               // If we don't have gBCR, just use 0,0 rather than error
+               if ( typeof elem.getBoundingClientRect !== strundefined ) {
+                       box = elem.getBoundingClientRect();
+               }
+               win = getWindow( doc );
+               return {
+                       top: box.top + win.pageYOffset - docElem.clientTop,
+                       left: box.left + win.pageXOffset - docElem.clientLeft
+               };
+       },
+
+       position: function() {
+               if ( !this[ 0 ] ) {
+                       return;
+               }
+
+               var offsetParent, offset,
+                       elem = this[ 0 ],
+                       parentOffset = { top: 0, left: 0 };
+
+               // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
+               if ( jQuery.css( elem, "position" ) === "fixed" ) {
+                       // Assume getBoundingClientRect is there when computed position is fixed
+                       offset = elem.getBoundingClientRect();
+
+               } else {
+                       // Get *real* offsetParent
+                       offsetParent = this.offsetParent();
+
+                       // Get correct offsets
+                       offset = this.offset();
+                       if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+                               parentOffset = offsetParent.offset();
+                       }
+
+                       // Add offsetParent borders
+                       parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+                       parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+               }
+
+               // Subtract parent offsets and element margins
+               return {
+                       top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+                       left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+               };
+       },
+
+       offsetParent: function() {
+               return this.map(function() {
+                       var offsetParent = this.offsetParent || docElem;
+
+                       while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
+                               offsetParent = offsetParent.offsetParent;
+                       }
+
+                       return offsetParent || docElem;
+               });
+       }
+});
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+       var top = "pageYOffset" === prop;
+
+       jQuery.fn[ method ] = function( val ) {
+               return access( this, function( elem, method, val ) {
+                       var win = getWindow( elem );
+
+                       if ( val === undefined ) {
+                               return win ? win[ prop ] : elem[ method ];
+                       }
+
+                       if ( win ) {
+                               win.scrollTo(
+                                       !top ? val : window.pageXOffset,
+                                       top ? val : window.pageYOffset
+                               );
+
+                       } else {
+                               elem[ method ] = val;
+                       }
+               }, method, val, arguments.length, null );
+       };
+});
+
+// Support: Safari<7+, Chrome<37+
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+       jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+               function( elem, computed ) {
+                       if ( computed ) {
+                               computed = curCSS( elem, prop );
+                               // If curCSS returns percentage, fallback to offset
+                               return rnumnonpx.test( computed ) ?
+                                       jQuery( elem ).position()[ prop ] + "px" :
+                                       computed;
+                       }
+               }
+       );
+});
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+       jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+               // Margin is only for outerHeight, outerWidth
+               jQuery.fn[ funcName ] = function( margin, value ) {
+                       var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+                               extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+                       return access( this, function( elem, type, value ) {
+                               var doc;
+
+                               if ( jQuery.isWindow( elem ) ) {
+                                       // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+                                       // isn't a whole lot we can do. See pull request at this URL for discussion:
+                                       // https://github.com/jquery/jquery/pull/764
+                                       return elem.document.documentElement[ "client" + name ];
+                               }
+
+                               // Get document width or height
+                               if ( elem.nodeType === 9 ) {
+                                       doc = elem.documentElement;
+
+                                       // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+                                       // whichever is greatest
+                                       return Math.max(
+                                               elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+                                               elem.body[ "offset" + name ], doc[ "offset" + name ],
+                                               doc[ "client" + name ]
+                                       );
+                               }
+
+                               return value === undefined ?
+                                       // Get width or height on the element, requesting but not forcing parseFloat
+                                       jQuery.css( elem, type, extra ) :
+
+                                       // Set width or height on the element
+                                       jQuery.style( elem, type, value, extra );
+                       }, type, chainable ? margin : undefined, chainable, null );
+               };
+       });
+});
+
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+       return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+       define( "jquery", [], function() {
+               return jQuery;
+       });
+}
+
+
+
+
+var
+       // Map over jQuery in case of overwrite
+       _jQuery = window.jQuery,
+
+       // Map over the $ in case of overwrite
+       _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+       if ( window.$ === jQuery ) {
+               window.$ = _$;
+       }
+
+       if ( deep && window.jQuery === jQuery ) {
+               window.jQuery = _jQuery;
+       }
+
+       return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( typeof noGlobal === strundefined ) {
+       window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+
+}));
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/dist/jquery.min.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/dist/jquery.min.js
new file mode 100644 (file)
index 0000000..fad9ab1
--- /dev/null
@@ -0,0 +1,5 @@
+/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){
+return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)),
+void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n});
+//# sourceMappingURL=jquery.min.map
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/dist/jquery.min.map b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/dist/jquery.min.map
new file mode 100644 (file)
index 0000000..95fc122
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"file":"jquery.min.js","sources":["jquery.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","support","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","call","get","num","pushStack","elems","ret","merge","prevObject","each","callback","args","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","parseFloat","nodeType","isEmptyObject","globalEval","code","script","indirect","eval","trim","createElement","text","head","appendChild","parentNode","removeChild","camelCase","string","nodeName","toLowerCase","value","isArraylike","makeArray","results","Object","inArray","second","grep","invert","callbackInverse","matches","callbackExpect","arg","guid","proxy","tmp","now","Date","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","pop","push_native","list","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","childNodes","e","els","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","div","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","is","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","next","prev","until","truncate","sibling","n","targets","l","closest","pos","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","reverse","rnotwhite","optionsCache","createOptions","object","flag","Callbacks","memory","fired","firing","firingStart","firingLength","firingIndex","stack","once","fire","data","stopOnFalse","disable","remove","lock","locked","fireWith","Deferred","func","tuples","state","promise","always","deferred","fail","then","fns","newDefer","tuple","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","resolveWith","progressContexts","resolveContexts","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","completed","removeEventListener","readyState","setTimeout","access","chainable","emptyGet","raw","bulk","acceptData","owner","Data","defineProperty","uid","accepts","descriptor","unlock","defineProperties","set","prop","stored","camel","hasData","discard","data_priv","data_user","rbrace","rmultiDash","dataAttr","parseJSON","removeData","_data","_removeData","camelKey","queue","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","cssExpand","isHidden","el","css","rcheckableType","fragment","createDocumentFragment","checkClone","cloneNode","noCloneChecked","strundefined","focusinBubbles","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","event","types","handleObjIn","eventHandle","events","t","handleObj","special","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","trigger","onlyHandlers","bubbleType","ontype","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","props","fixHooks","keyHooks","original","which","charCode","keyCode","mouseHooks","eventDoc","body","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","originalEvent","fixHook","load","blur","click","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","relatedTarget","attaches","on","one","origFn","rxhtmlTag","rtagName","rhtml","rnoInnerhtml","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","manipulationTarget","content","disableScript","restoreScript","setGlobalEval","refElements","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","getAll","fixInput","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","buildFragment","scripts","selection","wrap","nodes","createTextNode","cleanData","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","detach","hasScripts","iNoClone","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","actualDisplay","style","display","getDefaultComputedStyle","defaultDisplay","write","close","rmargin","rnumnonpx","getStyles","opener","getComputedStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","pixelPositionVal","boxSizingReliableVal","container","backgroundClip","clearCloneStyle","cssText","computePixelPositionAndBoxSizingReliable","divStyle","pixelPosition","boxSizingReliable","reliableMarginRight","marginDiv","marginRight","swap","rdisplayswap","rnumsplit","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","vendorPropName","capName","origName","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","showHide","show","hidden","cssHooks","opacity","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","margin","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","Tween","easing","unit","propHooks","run","percent","eased","duration","step","tween","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","*","createTween","scale","maxIterations","createFxNow","genFx","includeWidth","height","animation","collection","opts","oldfire","checkDisplay","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","Animation","properties","stopped","tick","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","rejectWith","timer","complete","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","optDisabled","radioValue","nodeHook","boolHook","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","rfocusable","removeProp","for","class","notxml","hasAttribute","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","valHooks","optionSet","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","JSON","parse","parseXML","DOMParser","parseFromString","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","transports","allTypes","ajaxLocation","ajaxLocParts","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","processData","async","contentType","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","status","abort","statusText","finalText","success","method","crossDomain","param","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","v","encodeURIComponent","serialize","serializeArray","xhr","XMLHttpRequest","xhrId","xhrCallbacks","xhrSuccessStatus",1223,"xhrSupported","cors","open","username","xhrFields","onload","onerror","responseText","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","left","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict"],"mappings":";CAcC,SAAUA,EAAQC,GAEK,gBAAXC,SAAiD,gBAAnBA,QAAOC,QAQhDD,OAAOC,QAAUH,EAAOI,SACvBH,EAASD,GAAQ,GACjB,SAAUK,GACT,IAAMA,EAAED,SACP,KAAM,IAAIE,OAAO,2CAElB,OAAOL,GAASI,IAGlBJ,EAASD,IAIS,mBAAXO,QAAyBA,OAASC,KAAM,SAAUD,EAAQE,GAQnE,GAAIC,MAEAC,EAAQD,EAAIC,MAEZC,EAASF,EAAIE,OAEbC,EAAOH,EAAIG,KAEXC,EAAUJ,EAAII,QAEdC,KAEAC,EAAWD,EAAWC,SAEtBC,EAASF,EAAWG,eAEpBC,KAMHf,EAAWG,EAAOH,SAElBgB,EAAU,QAGVC,EAAS,SAAUC,EAAUC,GAG5B,MAAO,IAAIF,GAAOG,GAAGC,KAAMH,EAAUC,IAKtCG,EAAQ,qCAGRC,EAAY,QACZC,EAAa,eAGbC,EAAa,SAAUC,EAAKC,GAC3B,MAAOA,GAAOC,cAGhBX,GAAOG,GAAKH,EAAOY,WAElBC,OAAQd,EAERe,YAAad,EAGbC,SAAU,GAGVc,OAAQ,EAERC,QAAS,WACR,MAAO1B,GAAM2B,KAAM9B,OAKpB+B,IAAK,SAAUC,GACd,MAAc,OAAPA,EAGE,EAANA,EAAUhC,KAAMgC,EAAMhC,KAAK4B,QAAW5B,KAAMgC,GAG9C7B,EAAM2B,KAAM9B,OAKdiC,UAAW,SAAUC,GAGpB,GAAIC,GAAMtB,EAAOuB,MAAOpC,KAAK2B,cAAeO,EAO5C,OAJAC,GAAIE,WAAarC,KACjBmC,EAAIpB,QAAUf,KAAKe,QAGZoB,GAMRG,KAAM,SAAUC,EAAUC,GACzB,MAAO3B,GAAOyB,KAAMtC,KAAMuC,EAAUC,IAGrCC,IAAK,SAAUF,GACd,MAAOvC,MAAKiC,UAAWpB,EAAO4B,IAAIzC,KAAM,SAAU0C,EAAMC,GACvD,MAAOJ,GAAST,KAAMY,EAAMC,EAAGD,OAIjCvC,MAAO,WACN,MAAOH,MAAKiC,UAAW9B,EAAMyC,MAAO5C,KAAM6C,aAG3CC,MAAO,WACN,MAAO9C,MAAK+C,GAAI,IAGjBC,KAAM,WACL,MAAOhD,MAAK+C,GAAI,KAGjBA,GAAI,SAAUJ,GACb,GAAIM,GAAMjD,KAAK4B,OACdsB,GAAKP,GAAU,EAAJA,EAAQM,EAAM,EAC1B,OAAOjD,MAAKiC,UAAWiB,GAAK,GAASD,EAAJC,GAAYlD,KAAKkD,SAGnDC,IAAK,WACJ,MAAOnD,MAAKqC,YAAcrC,KAAK2B,YAAY,OAK5CtB,KAAMA,EACN+C,KAAMlD,EAAIkD,KACVC,OAAQnD,EAAImD,QAGbxC,EAAOyC,OAASzC,EAAOG,GAAGsC,OAAS,WAClC,GAAIC,GAASC,EAAMC,EAAKC,EAAMC,EAAaC,EAC1CC,EAAShB,UAAU,OACnBF,EAAI,EACJf,EAASiB,UAAUjB,OACnBkC,GAAO,CAsBR,KAnBuB,iBAAXD,KACXC,EAAOD,EAGPA,EAAShB,UAAWF,OACpBA,KAIsB,gBAAXkB,IAAwBhD,EAAOkD,WAAWF,KACrDA,MAIIlB,IAAMf,IACViC,EAAS7D,KACT2C,KAGWf,EAAJe,EAAYA,IAEnB,GAAmC,OAA7BY,EAAUV,UAAWF,IAE1B,IAAMa,IAAQD,GACbE,EAAMI,EAAQL,GACdE,EAAOH,EAASC,GAGXK,IAAWH,IAKXI,GAAQJ,IAAU7C,EAAOmD,cAAcN,KAAUC,EAAc9C,EAAOoD,QAAQP,MAC7EC,GACJA,GAAc,EACdC,EAAQH,GAAO5C,EAAOoD,QAAQR,GAAOA,MAGrCG,EAAQH,GAAO5C,EAAOmD,cAAcP,GAAOA,KAI5CI,EAAQL,GAAS3C,EAAOyC,OAAQQ,EAAMF,EAAOF,IAGzBQ,SAATR,IACXG,EAAQL,GAASE,GAOrB,OAAOG,IAGRhD,EAAOyC,QAENa,QAAS,UAAavD,EAAUwD,KAAKC,UAAWC,QAAS,MAAO,IAGhEC,SAAS,EAETC,MAAO,SAAUC,GAChB,KAAM,IAAI3E,OAAO2E,IAGlBC,KAAM,aAENX,WAAY,SAAUY,GACrB,MAA4B,aAArB9D,EAAO+D,KAAKD,IAGpBV,QAASY,MAAMZ,QAEfa,SAAU,SAAUH,GACnB,MAAc,OAAPA,GAAeA,IAAQA,EAAI5E,QAGnCgF,UAAW,SAAUJ,GAKpB,OAAQ9D,EAAOoD,QAASU,IAAUA,EAAMK,WAAYL,GAAQ,GAAM,GAGnEX,cAAe,SAAUW,GAKxB,MAA4B,WAAvB9D,EAAO+D,KAAMD,IAAsBA,EAAIM,UAAYpE,EAAOiE,SAAUH,IACjE,EAGHA,EAAIhD,cACNlB,EAAOqB,KAAM6C,EAAIhD,YAAYF,UAAW,kBACnC,GAKD,GAGRyD,cAAe,SAAUP,GACxB,GAAInB,EACJ,KAAMA,IAAQmB,GACb,OAAO,CAER,QAAO,GAGRC,KAAM,SAAUD,GACf,MAAY,OAAPA,EACGA,EAAM,GAGQ,gBAARA,IAAmC,kBAARA,GACxCpE,EAAYC,EAASsB,KAAK6C,KAAU,eAC7BA,IAITQ,WAAY,SAAUC,GACrB,GAAIC,GACHC,EAAWC,IAEZH,GAAOvE,EAAO2E,KAAMJ,GAEfA,IAIgC,IAA/BA,EAAK9E,QAAQ,eACjB+E,EAASzF,EAAS6F,cAAc,UAChCJ,EAAOK,KAAON,EACdxF,EAAS+F,KAAKC,YAAaP,GAASQ,WAAWC,YAAaT,IAI5DC,EAAUF,KAQbW,UAAW,SAAUC,GACpB,MAAOA,GAAO1B,QAASnD,EAAW,OAAQmD,QAASlD,EAAYC,IAGhE4E,SAAU,SAAUvD,EAAMc,GACzB,MAAOd,GAAKuD,UAAYvD,EAAKuD,SAASC,gBAAkB1C,EAAK0C,eAI9D5D,KAAM,SAAUqC,EAAKpC,EAAUC,GAC9B,GAAI2D,GACHxD,EAAI,EACJf,EAAS+C,EAAI/C,OACbqC,EAAUmC,EAAazB,EAExB,IAAKnC,GACJ,GAAKyB,GACJ,KAAYrC,EAAJe,EAAYA,IAGnB,GAFAwD,EAAQ5D,EAASK,MAAO+B,EAAKhC,GAAKH,GAE7B2D,KAAU,EACd,UAIF,KAAMxD,IAAKgC,GAGV,GAFAwB,EAAQ5D,EAASK,MAAO+B,EAAKhC,GAAKH,GAE7B2D,KAAU,EACd,UAOH,IAAKlC,GACJ,KAAYrC,EAAJe,EAAYA,IAGnB,GAFAwD,EAAQ5D,EAAST,KAAM6C,EAAKhC,GAAKA,EAAGgC,EAAKhC,IAEpCwD,KAAU,EACd,UAIF,KAAMxD,IAAKgC,GAGV,GAFAwB,EAAQ5D,EAAST,KAAM6C,EAAKhC,GAAKA,EAAGgC,EAAKhC,IAEpCwD,KAAU,EACd,KAMJ,OAAOxB,IAIRa,KAAM,SAAUE,GACf,MAAe,OAARA,EACN,IACEA,EAAO,IAAKpB,QAASpD,EAAO,KAIhCmF,UAAW,SAAUnG,EAAKoG,GACzB,GAAInE,GAAMmE,KAaV,OAXY,OAAPpG,IACCkG,EAAaG,OAAOrG,IACxBW,EAAOuB,MAAOD,EACE,gBAARjC,IACLA,GAAQA,GAGXG,EAAKyB,KAAMK,EAAKjC,IAIXiC,GAGRqE,QAAS,SAAU9D,EAAMxC,EAAKyC,GAC7B,MAAc,OAAPzC,EAAc,GAAKI,EAAQwB,KAAM5B,EAAKwC,EAAMC,IAGpDP,MAAO,SAAUU,EAAO2D,GAKvB,IAJA,GAAIxD,IAAOwD,EAAO7E,OACjBsB,EAAI,EACJP,EAAIG,EAAMlB,OAECqB,EAAJC,EAASA,IAChBJ,EAAOH,KAAQ8D,EAAQvD,EAKxB,OAFAJ,GAAMlB,OAASe,EAERG,GAGR4D,KAAM,SAAUxE,EAAOK,EAAUoE,GAShC,IARA,GAAIC,GACHC,KACAlE,EAAI,EACJf,EAASM,EAAMN,OACfkF,GAAkBH,EAIP/E,EAAJe,EAAYA,IACnBiE,GAAmBrE,EAAUL,EAAOS,GAAKA,GACpCiE,IAAoBE,GACxBD,EAAQxG,KAAM6B,EAAOS,GAIvB,OAAOkE,IAIRpE,IAAK,SAAUP,EAAOK,EAAUwE,GAC/B,GAAIZ,GACHxD,EAAI,EACJf,EAASM,EAAMN,OACfqC,EAAUmC,EAAalE,GACvBC,IAGD,IAAK8B,EACJ,KAAYrC,EAAJe,EAAYA,IACnBwD,EAAQ5D,EAAUL,EAAOS,GAAKA,EAAGoE,GAEnB,MAATZ,GACJhE,EAAI9B,KAAM8F,OAMZ,KAAMxD,IAAKT,GACViE,EAAQ5D,EAAUL,EAAOS,GAAKA,EAAGoE,GAEnB,MAATZ,GACJhE,EAAI9B,KAAM8F,EAMb,OAAO/F,GAAOwC,SAAWT,IAI1B6E,KAAM,EAINC,MAAO,SAAUjG,EAAID,GACpB,GAAImG,GAAK1E,EAAMyE,CAUf,OARwB,gBAAZlG,KACXmG,EAAMlG,EAAID,GACVA,EAAUC,EACVA,EAAKkG,GAKArG,EAAOkD,WAAY/C,IAKzBwB,EAAOrC,EAAM2B,KAAMe,UAAW,GAC9BoE,EAAQ,WACP,MAAOjG,GAAG4B,MAAO7B,GAAWf,KAAMwC,EAAKpC,OAAQD,EAAM2B,KAAMe,cAI5DoE,EAAMD,KAAOhG,EAAGgG,KAAOhG,EAAGgG,MAAQnG,EAAOmG,OAElCC,GAZC/C,QAeTiD,IAAKC,KAAKD,IAIVxG,QAASA,IAIVE,EAAOyB,KAAK,gEAAgE+E,MAAM,KAAM,SAAS1E,EAAGa,GACnGjD,EAAY,WAAaiD,EAAO,KAAQA,EAAK0C,eAG9C,SAASE,GAAazB,GAMrB,GAAI/C,GAAS,UAAY+C,IAAOA,EAAI/C,OACnCgD,EAAO/D,EAAO+D,KAAMD,EAErB,OAAc,aAATC,GAAuB/D,EAAOiE,SAAUH,IACrC,EAGc,IAAjBA,EAAIM,UAAkBrD,GACnB,EAGQ,UAATgD,GAA+B,IAAXhD,GACR,gBAAXA,IAAuBA,EAAS,GAAOA,EAAS,IAAO+C,GAEhE,GAAI2C,GAWJ,SAAWvH,GAEX,GAAI4C,GACHhC,EACA4G,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACApI,EACAqI,EACAC,EACAC,EACAC,EACAvB,EACAwB,EAGAlE,EAAU,SAAW,EAAI,GAAIiD,MAC7BkB,EAAevI,EAAOH,SACtB2I,EAAU,EACVC,EAAO,EACPC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAY,SAAUC,EAAGC,GAIxB,MAHKD,KAAMC,IACVhB,GAAe,GAET,GAIRiB,EAAe,GAAK,GAGpBvI,KAAcC,eACdR,KACA+I,EAAM/I,EAAI+I,IACVC,EAAchJ,EAAIG,KAClBA,EAAOH,EAAIG,KACXF,EAAQD,EAAIC,MAGZG,EAAU,SAAU6I,EAAMzG,GAGzB,IAFA,GAAIC,GAAI,EACPM,EAAMkG,EAAKvH,OACAqB,EAAJN,EAASA,IAChB,GAAKwG,EAAKxG,KAAOD,EAChB,MAAOC,EAGT,OAAO,IAGRyG,EAAW,6HAKXC,EAAa,sBAEbC,EAAoB,mCAKpBC,EAAaD,EAAkBhF,QAAS,IAAK,MAG7CkF,EAAa,MAAQH,EAAa,KAAOC,EAAoB,OAASD,EAErE,gBAAkBA,EAElB,2DAA6DE,EAAa,OAASF,EACnF,OAEDI,EAAU,KAAOH,EAAoB,wFAKPE,EAAa,eAM3CE,EAAc,GAAIC,QAAQN,EAAa,IAAK,KAC5CnI,EAAQ,GAAIyI,QAAQ,IAAMN,EAAa,8BAAgCA,EAAa,KAAM,KAE1FO,EAAS,GAAID,QAAQ,IAAMN,EAAa,KAAOA,EAAa,KAC5DQ,EAAe,GAAIF,QAAQ,IAAMN,EAAa,WAAaA,EAAa,IAAMA,EAAa,KAE3FS,EAAmB,GAAIH,QAAQ,IAAMN,EAAa,iBAAmBA,EAAa,OAAQ,KAE1FU,EAAU,GAAIJ,QAAQF,GACtBO,EAAc,GAAIL,QAAQ,IAAMJ,EAAa,KAE7CU,GACCC,GAAM,GAAIP,QAAQ,MAAQL,EAAoB,KAC9Ca,MAAS,GAAIR,QAAQ,QAAUL,EAAoB,KACnDc,IAAO,GAAIT,QAAQ,KAAOL,EAAkBhF,QAAS,IAAK,MAAS,KACnE+F,KAAQ,GAAIV,QAAQ,IAAMH,GAC1Bc,OAAU,GAAIX,QAAQ,IAAMF,GAC5Bc,MAAS,GAAIZ,QAAQ,yDAA2DN,EAC/E,+BAAiCA,EAAa,cAAgBA,EAC9D,aAAeA,EAAa,SAAU,KACvCmB,KAAQ,GAAIb,QAAQ,OAASP,EAAW,KAAM,KAG9CqB,aAAgB,GAAId,QAAQ,IAAMN,EAAa,mDAC9CA,EAAa,mBAAqBA,EAAa,mBAAoB,MAGrEqB,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,GAAW,OACXC,GAAU,QAGVC,GAAY,GAAIrB,QAAQ,qBAAuBN,EAAa,MAAQA,EAAa,OAAQ,MACzF4B,GAAY,SAAUC,EAAGC,EAASC,GACjC,GAAIC,GAAO,KAAOF,EAAU,KAI5B,OAAOE,KAASA,GAAQD,EACvBD,EACO,EAAPE,EAECC,OAAOC,aAAcF,EAAO,OAE5BC,OAAOC,aAAcF,GAAQ,GAAK,MAAe,KAAPA,EAAe,QAO5DG,GAAgB,WACfxD,IAIF,KACC3H,EAAKuC,MACH1C,EAAMC,EAAM2B,KAAMwG,EAAamD,YAChCnD,EAAamD,YAIdvL,EAAKoI,EAAamD,WAAW7J,QAASqD,SACrC,MAAQyG,IACTrL,GAASuC,MAAO1C,EAAI0B,OAGnB,SAAUiC,EAAQ8H,GACjBzC,EAAYtG,MAAOiB,EAAQ1D,EAAM2B,KAAK6J,KAKvC,SAAU9H,EAAQ8H,GACjB,GAAIzI,GAAIW,EAAOjC,OACde,EAAI,CAEL,OAASkB,EAAOX,KAAOyI,EAAIhJ,MAC3BkB,EAAOjC,OAASsB,EAAI,IAKvB,QAASoE,IAAQxG,EAAUC,EAASuF,EAASsF,GAC5C,GAAIC,GAAOnJ,EAAMoJ,EAAG7G,EAEnBtC,EAAGoJ,EAAQC,EAAKC,EAAKC,EAAYC,CAUlC,KAROpL,EAAUA,EAAQqL,eAAiBrL,EAAUuH,KAAmB1I,GACtEoI,EAAajH,GAGdA,EAAUA,GAAWnB,EACrB0G,EAAUA,MACVrB,EAAWlE,EAAQkE,SAEM,gBAAbnE,KAA0BA,GACxB,IAAbmE,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,MAAOqB,EAGR,KAAMsF,GAAQ1D,EAAiB,CAG9B,GAAkB,KAAbjD,IAAoB4G,EAAQhB,EAAWwB,KAAMvL,IAEjD,GAAMgL,EAAID,EAAM,IACf,GAAkB,IAAb5G,EAAiB,CAIrB,GAHAvC,EAAO3B,EAAQuL,eAAgBR,IAG1BpJ,IAAQA,EAAKmD,WAQjB,MAAOS,EALP,IAAK5D,EAAK6J,KAAOT,EAEhB,MADAxF,GAAQjG,KAAMqC,GACP4D,MAOT,IAAKvF,EAAQqL,gBAAkB1J,EAAO3B,EAAQqL,cAAcE,eAAgBR,KAC3EzD,EAAUtH,EAAS2B,IAAUA,EAAK6J,KAAOT,EAEzC,MADAxF,GAAQjG,KAAMqC,GACP4D,MAKH,CAAA,GAAKuF,EAAM,GAEjB,MADAxL,GAAKuC,MAAO0D,EAASvF,EAAQyL,qBAAsB1L,IAC5CwF,CAGD,KAAMwF,EAAID,EAAM,KAAOlL,EAAQ8L,uBAErC,MADApM,GAAKuC,MAAO0D,EAASvF,EAAQ0L,uBAAwBX,IAC9CxF,EAKT,GAAK3F,EAAQ+L,OAASvE,IAAcA,EAAUwE,KAAM7L,IAAc,CASjE,GARAmL,EAAMD,EAAM7H,EACZ+H,EAAanL,EACboL,EAA2B,IAAblH,GAAkBnE,EAMd,IAAbmE,GAAqD,WAAnClE,EAAQkF,SAASC,cAA6B,CACpE6F,EAASrE,EAAU5G,IAEbkL,EAAMjL,EAAQ6L,aAAa,OAChCX,EAAMD,EAAI1H,QAASyG,GAAS,QAE5BhK,EAAQ8L,aAAc,KAAMZ,GAE7BA,EAAM,QAAUA,EAAM,MAEtBtJ,EAAIoJ,EAAOnK,MACX,OAAQe,IACPoJ,EAAOpJ,GAAKsJ,EAAMa,GAAYf,EAAOpJ,GAEtCuJ,GAAapB,GAAS6B,KAAM7L,IAAciM,GAAahM,EAAQ8E,aAAgB9E,EAC/EoL,EAAcJ,EAAOiB,KAAK,KAG3B,GAAKb,EACJ,IAIC,MAHA9L,GAAKuC,MAAO0D,EACX4F,EAAWe,iBAAkBd,IAEvB7F,EACN,MAAM4G,IACN,QACKlB,GACLjL,EAAQoM,gBAAgB,QAQ7B,MAAOvF,GAAQ9G,EAASwD,QAASpD,EAAO,MAAQH,EAASuF,EAASsF,GASnE,QAASlD,MACR,GAAI0E,KAEJ,SAASC,GAAOC,EAAKnH,GAMpB,MAJKiH,GAAK/M,KAAMiN,EAAM,KAAQ/F,EAAKgG,mBAE3BF,GAAOD,EAAKI,SAEZH,EAAOC,EAAM,KAAQnH,EAE9B,MAAOkH,GAOR,QAASI,IAAczM,GAEtB,MADAA,GAAImD,IAAY,EACTnD,EAOR,QAAS0M,IAAQ1M,GAChB,GAAI2M,GAAM/N,EAAS6F,cAAc,MAEjC,KACC,QAASzE,EAAI2M,GACZ,MAAOjC,GACR,OAAO,EACN,QAEIiC,EAAI9H,YACR8H,EAAI9H,WAAWC,YAAa6H,GAG7BA,EAAM,MASR,QAASC,IAAWC,EAAOC,GAC1B,GAAI5N,GAAM2N,EAAMxG,MAAM,KACrB1E,EAAIkL,EAAMjM,MAEX,OAAQe,IACP4E,EAAKwG,WAAY7N,EAAIyC,IAAOmL,EAU9B,QAASE,IAAclF,EAAGC,GACzB,GAAIkF,GAAMlF,GAAKD,EACdoF,EAAOD,GAAsB,IAAfnF,EAAE7D,UAAiC,IAAf8D,EAAE9D,YAChC8D,EAAEoF,aAAenF,KACjBF,EAAEqF,aAAenF,EAGtB,IAAKkF,EACJ,MAAOA,EAIR,IAAKD,EACJ,MAASA,EAAMA,EAAIG,YAClB,GAAKH,IAAQlF,EACZ,MAAO,EAKV,OAAOD,GAAI,EAAI,GAOhB,QAASuF,IAAmBzJ,GAC3B,MAAO,UAAUlC,GAChB,GAAIc,GAAOd,EAAKuD,SAASC,aACzB,OAAgB,UAAT1C,GAAoBd,EAAKkC,OAASA,GAQ3C,QAAS0J,IAAoB1J,GAC5B,MAAO,UAAUlC,GAChB,GAAIc,GAAOd,EAAKuD,SAASC,aACzB,QAAiB,UAAT1C,GAA6B,WAATA,IAAsBd,EAAKkC,OAASA,GAQlE,QAAS2J,IAAwBvN,GAChC,MAAOyM,IAAa,SAAUe,GAE7B,MADAA,IAAYA,EACLf,GAAa,SAAU7B,EAAM/E,GACnC,GAAI3D,GACHuL,EAAezN,KAAQ4K,EAAKhK,OAAQ4M,GACpC7L,EAAI8L,EAAa7M,MAGlB,OAAQe,IACFiJ,EAAO1I,EAAIuL,EAAa9L,MAC5BiJ,EAAK1I,KAAO2D,EAAQ3D,GAAK0I,EAAK1I,SAYnC,QAAS6J,IAAahM,GACrB,MAAOA,IAAmD,mBAAjCA,GAAQyL,sBAAwCzL,EAI1EJ,EAAU2G,GAAO3G,WAOjB8G,EAAQH,GAAOG,MAAQ,SAAU/E,GAGhC,GAAIgM,GAAkBhM,IAASA,EAAK0J,eAAiB1J,GAAMgM,eAC3D,OAAOA,GAA+C,SAA7BA,EAAgBzI,UAAsB,GAQhE+B,EAAcV,GAAOU,YAAc,SAAU2G,GAC5C,GAAIC,GAAYC,EACfC,EAAMH,EAAOA,EAAKvC,eAAiBuC,EAAOrG,CAG3C,OAAKwG,KAAQlP,GAA6B,IAAjBkP,EAAI7J,UAAmB6J,EAAIJ,iBAKpD9O,EAAWkP,EACX7G,EAAU6G,EAAIJ,gBACdG,EAASC,EAAIC,YAMRF,GAAUA,IAAWA,EAAOG,MAE3BH,EAAOI,iBACXJ,EAAOI,iBAAkB,SAAUzD,IAAe,GACvCqD,EAAOK,aAClBL,EAAOK,YAAa,WAAY1D,KAMlCtD,GAAkBT,EAAOqH,GAQzBnO,EAAQ6I,WAAakE,GAAO,SAAUC,GAErC,MADAA,GAAIwB,UAAY,KACRxB,EAAIf,aAAa,eAO1BjM,EAAQ6L,qBAAuBkB,GAAO,SAAUC,GAE/C,MADAA,GAAI/H,YAAakJ,EAAIM,cAAc,MAC3BzB,EAAInB,qBAAqB,KAAK5K,SAIvCjB,EAAQ8L,uBAAyB7B,EAAQ+B,KAAMmC,EAAIrC,wBAMnD9L,EAAQ0O,QAAU3B,GAAO,SAAUC,GAElC,MADA1F,GAAQrC,YAAa+H,GAAMpB,GAAKpI,GACxB2K,EAAIQ,oBAAsBR,EAAIQ,kBAAmBnL,GAAUvC,SAI/DjB,EAAQ0O,SACZ9H,EAAKgI,KAAS,GAAI,SAAUhD,EAAIxL,GAC/B,GAAuC,mBAA3BA,GAAQuL,gBAAkCpE,EAAiB,CACtE,GAAI4D,GAAI/K,EAAQuL,eAAgBC,EAGhC,OAAOT,IAAKA,EAAEjG,YAAeiG,QAG/BvE,EAAKiI,OAAW,GAAI,SAAUjD,GAC7B,GAAIkD,GAASlD,EAAGjI,QAAS0G,GAAWC,GACpC,OAAO,UAAUvI,GAChB,MAAOA,GAAKkK,aAAa,QAAU6C,YAM9BlI,GAAKgI,KAAS,GAErBhI,EAAKiI,OAAW,GAAK,SAAUjD,GAC9B,GAAIkD,GAASlD,EAAGjI,QAAS0G,GAAWC,GACpC,OAAO,UAAUvI,GAChB,GAAIiM,GAAwC,mBAA1BjM,GAAKgN,kBAAoChN,EAAKgN,iBAAiB,KACjF,OAAOf,IAAQA,EAAKxI,QAAUsJ,KAMjClI,EAAKgI,KAAU,IAAI5O,EAAQ6L,qBAC1B,SAAUmD,EAAK5O,GACd,MAA6C,mBAAjCA,GAAQyL,qBACZzL,EAAQyL,qBAAsBmD,GAG1BhP,EAAQ+L,IACZ3L,EAAQkM,iBAAkB0C,GAD3B,QAKR,SAAUA,EAAK5O,GACd,GAAI2B,GACHwE,KACAvE,EAAI,EAEJ2D,EAAUvF,EAAQyL,qBAAsBmD,EAGzC,IAAa,MAARA,EAAc,CAClB,MAASjN,EAAO4D,EAAQ3D,KACA,IAAlBD,EAAKuC,UACTiC,EAAI7G,KAAMqC,EAIZ,OAAOwE,GAER,MAAOZ,IAITiB,EAAKgI,KAAY,MAAI5O,EAAQ8L,wBAA0B,SAAU0C,EAAWpO,GAC3E,MAAKmH,GACGnH,EAAQ0L,uBAAwB0C,GADxC,QAWD/G,KAOAD,MAEMxH,EAAQ+L,IAAM9B,EAAQ+B,KAAMmC,EAAI7B,qBAGrCS,GAAO,SAAUC,GAMhB1F,EAAQrC,YAAa+H,GAAMiC,UAAY,UAAYzL,EAAU,qBAC3CA,EAAU,iEAOvBwJ,EAAIV,iBAAiB,wBAAwBrL,QACjDuG,EAAU9H,KAAM,SAAWgJ,EAAa,gBAKnCsE,EAAIV,iBAAiB,cAAcrL,QACxCuG,EAAU9H,KAAM,MAAQgJ,EAAa,aAAeD,EAAW,KAI1DuE,EAAIV,iBAAkB,QAAU9I,EAAU,MAAOvC,QACtDuG,EAAU9H,KAAK,MAMVsN,EAAIV,iBAAiB,YAAYrL,QACtCuG,EAAU9H,KAAK,YAMVsN,EAAIV,iBAAkB,KAAO9I,EAAU,MAAOvC,QACnDuG,EAAU9H,KAAK,cAIjBqN,GAAO,SAAUC,GAGhB,GAAIkC,GAAQf,EAAIrJ,cAAc,QAC9BoK,GAAMhD,aAAc,OAAQ,UAC5Bc,EAAI/H,YAAaiK,GAAQhD,aAAc,OAAQ,KAI1Cc,EAAIV,iBAAiB,YAAYrL,QACrCuG,EAAU9H,KAAM,OAASgJ,EAAa,eAKjCsE,EAAIV,iBAAiB,YAAYrL,QACtCuG,EAAU9H,KAAM,WAAY,aAI7BsN,EAAIV,iBAAiB,QACrB9E,EAAU9H,KAAK,YAIXM,EAAQmP,gBAAkBlF,EAAQ+B,KAAO9F,EAAUoB,EAAQpB,SAChEoB,EAAQ8H,uBACR9H,EAAQ+H,oBACR/H,EAAQgI,kBACRhI,EAAQiI,qBAERxC,GAAO,SAAUC,GAGhBhN,EAAQwP,kBAAoBtJ,EAAQ/E,KAAM6L,EAAK,OAI/C9G,EAAQ/E,KAAM6L,EAAK,aACnBvF,EAAc/H,KAAM,KAAMoJ,KAI5BtB,EAAYA,EAAUvG,QAAU,GAAI+H,QAAQxB,EAAU6E,KAAK,MAC3D5E,EAAgBA,EAAcxG,QAAU,GAAI+H,QAAQvB,EAAc4E,KAAK,MAIvE4B,EAAahE,EAAQ+B,KAAM1E,EAAQmI,yBAKnC/H,EAAWuG,GAAchE,EAAQ+B,KAAM1E,EAAQI,UAC9C,SAAUS,EAAGC,GACZ,GAAIsH,GAAuB,IAAfvH,EAAE7D,SAAiB6D,EAAE4F,gBAAkB5F,EAClDwH,EAAMvH,GAAKA,EAAElD,UACd,OAAOiD,KAAMwH,MAAWA,GAAwB,IAAjBA,EAAIrL,YAClCoL,EAAMhI,SACLgI,EAAMhI,SAAUiI,GAChBxH,EAAEsH,yBAA8D,GAAnCtH,EAAEsH,wBAAyBE,MAG3D,SAAUxH,EAAGC,GACZ,GAAKA,EACJ,MAASA,EAAIA,EAAElD,WACd,GAAKkD,IAAMD,EACV,OAAO,CAIV,QAAO,GAOTD,EAAY+F,EACZ,SAAU9F,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,MADAhB,IAAe,EACR,CAIR,IAAIwI,IAAWzH,EAAEsH,yBAA2BrH,EAAEqH,uBAC9C,OAAKG,GACGA,GAIRA,GAAYzH,EAAEsD,eAAiBtD,MAAUC,EAAEqD,eAAiBrD,GAC3DD,EAAEsH,wBAAyBrH,GAG3B,EAGc,EAAVwH,IACF5P,EAAQ6P,cAAgBzH,EAAEqH,wBAAyBtH,KAAQyH,EAGxDzH,IAAMgG,GAAOhG,EAAEsD,gBAAkB9D,GAAgBD,EAASC,EAAcQ,GACrE,GAEHC,IAAM+F,GAAO/F,EAAEqD,gBAAkB9D,GAAgBD,EAASC,EAAcS,GACrE,EAIDjB,EACJxH,EAASwH,EAAWgB,GAAMxI,EAASwH,EAAWiB,GAChD,EAGe,EAAVwH,EAAc,GAAK,IAE3B,SAAUzH,EAAGC,GAEZ,GAAKD,IAAMC,EAEV,MADAhB,IAAe,EACR,CAGR,IAAIkG,GACHtL,EAAI,EACJ8N,EAAM3H,EAAEjD,WACRyK,EAAMvH,EAAElD,WACR6K,GAAO5H,GACP6H,GAAO5H,EAGR,KAAM0H,IAAQH,EACb,MAAOxH,KAAMgG,EAAM,GAClB/F,IAAM+F,EAAM,EACZ2B,EAAM,GACNH,EAAM,EACNxI,EACExH,EAASwH,EAAWgB,GAAMxI,EAASwH,EAAWiB,GAChD,CAGK,IAAK0H,IAAQH,EACnB,MAAOtC,IAAclF,EAAGC,EAIzBkF,GAAMnF,CACN,OAASmF,EAAMA,EAAIpI,WAClB6K,EAAGE,QAAS3C,EAEbA,GAAMlF,CACN,OAASkF,EAAMA,EAAIpI,WAClB8K,EAAGC,QAAS3C,EAIb,OAAQyC,EAAG/N,KAAOgO,EAAGhO,GACpBA,GAGD,OAAOA,GAENqL,GAAc0C,EAAG/N,GAAIgO,EAAGhO,IAGxB+N,EAAG/N,KAAO2F,EAAe,GACzBqI,EAAGhO,KAAO2F,EAAe,EACzB,GAGKwG,GA1WClP,GA6WT0H,GAAOT,QAAU,SAAUgK,EAAMC,GAChC,MAAOxJ,IAAQuJ,EAAM,KAAM,KAAMC,IAGlCxJ,GAAOwI,gBAAkB,SAAUpN,EAAMmO,GASxC,IAPOnO,EAAK0J,eAAiB1J,KAAW9C,GACvCoI,EAAatF,GAIdmO,EAAOA,EAAKvM,QAASwF,EAAkB,aAElCnJ,EAAQmP,kBAAmB5H,GAC5BE,GAAkBA,EAAcuE,KAAMkE,IACtC1I,GAAkBA,EAAUwE,KAAMkE,IAErC,IACC,GAAI1O,GAAM0E,EAAQ/E,KAAMY,EAAMmO,EAG9B,IAAK1O,GAAOxB,EAAQwP,mBAGlBzN,EAAK9C,UAAuC,KAA3B8C,EAAK9C,SAASqF,SAChC,MAAO9C,GAEP,MAAOuJ,IAGV,MAAOpE,IAAQuJ,EAAMjR,EAAU,MAAQ8C,IAASd,OAAS,GAG1D0F,GAAOe,SAAW,SAAUtH,EAAS2B,GAKpC,OAHO3B,EAAQqL,eAAiBrL,KAAcnB,GAC7CoI,EAAajH,GAEPsH,EAAUtH,EAAS2B,IAG3B4E,GAAOyJ,KAAO,SAAUrO,EAAMc,IAEtBd,EAAK0J,eAAiB1J,KAAW9C,GACvCoI,EAAatF,EAGd,IAAI1B,GAAKuG,EAAKwG,WAAYvK,EAAK0C,eAE9B8K,EAAMhQ,GAAMP,EAAOqB,KAAMyF,EAAKwG,WAAYvK,EAAK0C,eAC9ClF,EAAI0B,EAAMc,GAAO0E,GACjBhE,MAEF,OAAeA,UAAR8M,EACNA,EACArQ,EAAQ6I,aAAetB,EACtBxF,EAAKkK,aAAcpJ,IAClBwN,EAAMtO,EAAKgN,iBAAiBlM,KAAUwN,EAAIC,UAC1CD,EAAI7K,MACJ,MAGJmB,GAAO9C,MAAQ,SAAUC,GACxB,KAAM,IAAI3E,OAAO,0CAA4C2E,IAO9D6C,GAAO4J,WAAa,SAAU5K,GAC7B,GAAI5D,GACHyO,KACAjO,EAAI,EACJP,EAAI,CAOL,IAJAoF,GAAgBpH,EAAQyQ,iBACxBtJ,GAAanH,EAAQ0Q,YAAc/K,EAAQnG,MAAO,GAClDmG,EAAQlD,KAAMyF,GAETd,EAAe,CACnB,MAASrF,EAAO4D,EAAQ3D,KAClBD,IAAS4D,EAAS3D,KACtBO,EAAIiO,EAAW9Q,KAAMsC,GAGvB,OAAQO,IACPoD,EAAQjD,OAAQ8N,EAAYjO,GAAK,GAQnC,MAFA4E,GAAY,KAELxB,GAORkB,EAAUF,GAAOE,QAAU,SAAU9E,GACpC,GAAIiM,GACHxM,EAAM,GACNQ,EAAI,EACJsC,EAAWvC,EAAKuC,QAEjB,IAAMA,GAMC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAGjE,GAAiC,gBAArBvC,GAAK4O,YAChB,MAAO5O,GAAK4O,WAGZ,KAAM5O,EAAOA,EAAK6O,WAAY7O,EAAMA,EAAOA,EAAK0L,YAC/CjM,GAAOqF,EAAS9E,OAGZ,IAAkB,IAAbuC,GAA+B,IAAbA,EAC7B,MAAOvC,GAAK8O,cAhBZ,OAAS7C,EAAOjM,EAAKC,KAEpBR,GAAOqF,EAASmH,EAkBlB,OAAOxM,IAGRoF,EAAOD,GAAOmK,WAGblE,YAAa,GAEbmE,aAAcjE,GAEd5B,MAAO5B,EAEP8D,cAEAwB,QAEAoC,UACCC,KAAOC,IAAK,aAAc/O,OAAO,GACjCgP,KAAOD,IAAK,cACZE,KAAOF,IAAK,kBAAmB/O,OAAO,GACtCkP,KAAOH,IAAK,oBAGbI,WACC5H,KAAQ,SAAUwB,GAUjB,MATAA,GAAM,GAAKA,EAAM,GAAGvH,QAAS0G,GAAWC,IAGxCY,EAAM,IAAOA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAM,IAAKvH,QAAS0G,GAAWC,IAExD,OAAbY,EAAM,KACVA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAGtBA,EAAM1L,MAAO,EAAG,IAGxBoK,MAAS,SAAUsB,GA6BlB,MAlBAA,GAAM,GAAKA,EAAM,GAAG3F,cAEY,QAA3B2F,EAAM,GAAG1L,MAAO,EAAG,IAEjB0L,EAAM,IACXvE,GAAO9C,MAAOqH,EAAM,IAKrBA,EAAM,KAAQA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAmB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACzFA,EAAM,KAAUA,EAAM,GAAKA,EAAM,IAAqB,QAAbA,EAAM,KAGpCA,EAAM,IACjBvE,GAAO9C,MAAOqH,EAAM,IAGdA,GAGRvB,OAAU,SAAUuB,GACnB,GAAIqG,GACHC,GAAYtG,EAAM,IAAMA,EAAM,EAE/B,OAAK5B,GAAiB,MAAE0C,KAAMd,EAAM,IAC5B,MAIHA,EAAM,GACVA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAGxBsG,GAAYpI,EAAQ4C,KAAMwF,KAEpCD,EAASxK,EAAUyK,GAAU,MAE7BD,EAASC,EAAS7R,QAAS,IAAK6R,EAASvQ,OAASsQ,GAAWC,EAASvQ,UAGvEiK,EAAM,GAAKA,EAAM,GAAG1L,MAAO,EAAG+R,GAC9BrG,EAAM,GAAKsG,EAAShS,MAAO,EAAG+R,IAIxBrG,EAAM1L,MAAO,EAAG,MAIzBqP,QAECpF,IAAO,SAAUgI,GAChB,GAAInM,GAAWmM,EAAiB9N,QAAS0G,GAAWC,IAAY/E,aAChE,OAA4B,MAArBkM,EACN,WAAa,OAAO,GACpB,SAAU1P,GACT,MAAOA,GAAKuD,UAAYvD,EAAKuD,SAASC,gBAAkBD,IAI3DkE,MAAS,SAAUgF,GAClB,GAAIkD,GAAU5J,EAAY0G,EAAY,IAEtC,OAAOkD,KACLA,EAAU,GAAI1I,QAAQ,MAAQN,EAAa,IAAM8F,EAAY,IAAM9F,EAAa,SACjFZ,EAAY0G,EAAW,SAAUzM,GAChC,MAAO2P,GAAQ1F,KAAgC,gBAAnBjK,GAAKyM,WAA0BzM,EAAKyM,WAA0C,mBAAtBzM,GAAKkK,cAAgClK,EAAKkK,aAAa,UAAY,OAI1JvC,KAAQ,SAAU7G,EAAM8O,EAAUC,GACjC,MAAO,UAAU7P,GAChB,GAAI8P,GAASlL,GAAOyJ,KAAMrO,EAAMc,EAEhC,OAAe,OAAVgP,EACgB,OAAbF,EAEFA,GAINE,GAAU,GAEU,MAAbF,EAAmBE,IAAWD,EACvB,OAAbD,EAAoBE,IAAWD,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BC,EAAOlS,QAASiS,GAChC,OAAbD,EAAoBC,GAASC,EAAOlS,QAASiS,GAAU,GAC1C,OAAbD,EAAoBC,GAASC,EAAOrS,OAAQoS,EAAM3Q,UAAa2Q,EAClD,OAAbD,GAAsB,IAAME,EAAOlO,QAASoF,EAAa,KAAQ,KAAMpJ,QAASiS,GAAU,GAC7E,OAAbD,EAAoBE,IAAWD,GAASC,EAAOrS,MAAO,EAAGoS,EAAM3Q,OAAS,KAAQ2Q,EAAQ,KACxF,IAZO,IAgBVhI,MAAS,SAAU3F,EAAM6N,EAAMjE,EAAU1L,EAAOE,GAC/C,GAAI0P,GAAgC,QAAvB9N,EAAKzE,MAAO,EAAG,GAC3BwS,EAA+B,SAArB/N,EAAKzE,MAAO,IACtByS,EAAkB,YAATH,CAEV,OAAiB,KAAV3P,GAAwB,IAATE,EAGrB,SAAUN,GACT,QAASA,EAAKmD,YAGf,SAAUnD,EAAM3B,EAAS8R,GACxB,GAAIxF,GAAOyF,EAAYnE,EAAMT,EAAM6E,EAAWC,EAC7CnB,EAAMa,IAAWC,EAAU,cAAgB,kBAC3C9D,EAASnM,EAAKmD,WACdrC,EAAOoP,GAAUlQ,EAAKuD,SAASC,cAC/B+M,GAAYJ,IAAQD,CAErB,IAAK/D,EAAS,CAGb,GAAK6D,EAAS,CACb,MAAQb,EAAM,CACblD,EAAOjM,CACP,OAASiM,EAAOA,EAAMkD,GACrB,GAAKe,EAASjE,EAAK1I,SAASC,gBAAkB1C,EAAyB,IAAlBmL,EAAK1J,SACzD,OAAO,CAIT+N,GAAQnB,EAAe,SAATjN,IAAoBoO,GAAS,cAE5C,OAAO,EAMR,GAHAA,GAAUL,EAAU9D,EAAO0C,WAAa1C,EAAOqE,WAG1CP,GAAWM,EAAW,CAE1BH,EAAajE,EAAQ1K,KAAc0K,EAAQ1K,OAC3CkJ,EAAQyF,EAAYlO,OACpBmO,EAAY1F,EAAM,KAAO9E,GAAW8E,EAAM,GAC1Ca,EAAOb,EAAM,KAAO9E,GAAW8E,EAAM,GACrCsB,EAAOoE,GAAalE,EAAOpD,WAAYsH,EAEvC,OAASpE,IAASoE,GAAapE,GAAQA,EAAMkD,KAG3C3D,EAAO6E,EAAY,IAAMC,EAAM/J,MAGhC,GAAuB,IAAlB0F,EAAK1J,YAAoBiJ,GAAQS,IAASjM,EAAO,CACrDoQ,EAAYlO,IAAW2D,EAASwK,EAAW7E,EAC3C,YAKI,IAAK+E,IAAa5F,GAAS3K,EAAMyB,KAAczB,EAAMyB,QAAkBS,KAAWyI,EAAM,KAAO9E,EACrG2F,EAAOb,EAAM,OAKb,OAASsB,IAASoE,GAAapE,GAAQA,EAAMkD,KAC3C3D,EAAO6E,EAAY,IAAMC,EAAM/J,MAEhC,IAAO2J,EAASjE,EAAK1I,SAASC,gBAAkB1C,EAAyB,IAAlBmL,EAAK1J,aAAsBiJ,IAE5E+E,KACHtE,EAAMxK,KAAcwK,EAAMxK,QAAkBS,IAAW2D,EAAS2F,IAG7DS,IAASjM,GACb,KAQJ,OADAwL,IAAQlL,EACDkL,IAASpL,GAAWoL,EAAOpL,IAAU,GAAKoL,EAAOpL,GAAS,KAKrEwH,OAAU,SAAU6I,EAAQ3E,GAK3B,GAAIhM,GACHxB,EAAKuG,EAAKkC,QAAS0J,IAAY5L,EAAK6L,WAAYD,EAAOjN,gBACtDoB,GAAO9C,MAAO,uBAAyB2O,EAKzC,OAAKnS,GAAImD,GACDnD,EAAIwN,GAIPxN,EAAGY,OAAS,GAChBY,GAAS2Q,EAAQA,EAAQ,GAAI3E,GACtBjH,EAAK6L,WAAW1S,eAAgByS,EAAOjN,eAC7CuH,GAAa,SAAU7B,EAAM/E,GAC5B,GAAIwM,GACHC,EAAUtS,EAAI4K,EAAM4C,GACpB7L,EAAI2Q,EAAQ1R,MACb,OAAQe,IACP0Q,EAAM/S,EAASsL,EAAM0H,EAAQ3Q,IAC7BiJ,EAAMyH,KAAWxM,EAASwM,GAAQC,EAAQ3Q,MAG5C,SAAUD,GACT,MAAO1B,GAAI0B,EAAM,EAAGF,KAIhBxB,IAITyI,SAEC8J,IAAO9F,GAAa,SAAU3M,GAI7B,GAAI+O,MACHvJ,KACAkN,EAAU7L,EAAS7G,EAASwD,QAASpD,EAAO,MAE7C,OAAOsS,GAASrP,GACfsJ,GAAa,SAAU7B,EAAM/E,EAAS9F,EAAS8R,GAC9C,GAAInQ,GACH+Q,EAAYD,EAAS5H,EAAM,KAAMiH,MACjClQ,EAAIiJ,EAAKhK,MAGV,OAAQe,KACDD,EAAO+Q,EAAU9Q,MACtBiJ,EAAKjJ,KAAOkE,EAAQlE,GAAKD,MAI5B,SAAUA,EAAM3B,EAAS8R,GAKxB,MAJAhD,GAAM,GAAKnN,EACX8Q,EAAS3D,EAAO,KAAMgD,EAAKvM,GAE3BuJ,EAAM,GAAK,MACHvJ,EAAQ2C,SAInByK,IAAOjG,GAAa,SAAU3M,GAC7B,MAAO,UAAU4B,GAChB,MAAO4E,IAAQxG,EAAU4B,GAAOd,OAAS,KAI3CyG,SAAYoF,GAAa,SAAU/H,GAElC,MADAA,GAAOA,EAAKpB,QAAS0G,GAAWC,IACzB,SAAUvI,GAChB,OAASA,EAAK4O,aAAe5O,EAAKiR,WAAanM,EAAS9E,IAASpC,QAASoF,GAAS,MAWrFkO,KAAQnG,GAAc,SAAUmG,GAM/B,MAJM5J,GAAY2C,KAAKiH,GAAQ,KAC9BtM,GAAO9C,MAAO,qBAAuBoP,GAEtCA,EAAOA,EAAKtP,QAAS0G,GAAWC,IAAY/E,cACrC,SAAUxD,GAChB,GAAImR,EACJ,GACC,IAAMA,EAAW3L,EAChBxF,EAAKkR,KACLlR,EAAKkK,aAAa,aAAelK,EAAKkK,aAAa,QAGnD,MADAiH,GAAWA,EAAS3N,cACb2N,IAAaD,GAA2C,IAAnCC,EAASvT,QAASsT,EAAO,YAE5ClR,EAAOA,EAAKmD,aAAiC,IAAlBnD,EAAKuC,SAC3C,QAAO,KAKTpB,OAAU,SAAUnB,GACnB,GAAIoR,GAAO/T,EAAOgU,UAAYhU,EAAOgU,SAASD,IAC9C,OAAOA,IAAQA,EAAK3T,MAAO,KAAQuC,EAAK6J,IAGzCyH,KAAQ,SAAUtR,GACjB,MAAOA,KAASuF,GAGjBgM,MAAS,SAAUvR,GAClB,MAAOA,KAAS9C,EAASsU,iBAAmBtU,EAASuU,UAAYvU,EAASuU,gBAAkBzR,EAAKkC,MAAQlC,EAAK0R,OAAS1R,EAAK2R,WAI7HC,QAAW,SAAU5R,GACpB,MAAOA,GAAK6R,YAAa,GAG1BA,SAAY,SAAU7R,GACrB,MAAOA,GAAK6R,YAAa,GAG1BC,QAAW,SAAU9R,GAGpB,GAAIuD,GAAWvD,EAAKuD,SAASC,aAC7B,OAAqB,UAAbD,KAA0BvD,EAAK8R,SAA0B,WAAbvO,KAA2BvD,EAAK+R,UAGrFA,SAAY,SAAU/R,GAOrB,MAJKA,GAAKmD,YACTnD,EAAKmD,WAAW6O,cAGVhS,EAAK+R,YAAa,GAI1BE,MAAS,SAAUjS,GAKlB,IAAMA,EAAOA,EAAK6O,WAAY7O,EAAMA,EAAOA,EAAK0L,YAC/C,GAAK1L,EAAKuC,SAAW,EACpB,OAAO,CAGT,QAAO,GAGR4J,OAAU,SAAUnM,GACnB,OAAQ6E,EAAKkC,QAAe,MAAG/G,IAIhCkS,OAAU,SAAUlS,GACnB,MAAOiI,GAAQgC,KAAMjK,EAAKuD,WAG3B4J,MAAS,SAAUnN,GAClB,MAAOgI,GAAQiC,KAAMjK,EAAKuD,WAG3B4O,OAAU,SAAUnS,GACnB,GAAIc,GAAOd,EAAKuD,SAASC,aACzB,OAAgB,UAAT1C,GAAkC,WAAdd,EAAKkC,MAA8B,WAATpB,GAGtDkC,KAAQ,SAAUhD,GACjB,GAAIqO,EACJ,OAAuC,UAAhCrO,EAAKuD,SAASC,eACN,SAAdxD,EAAKkC,OAImC,OAArCmM,EAAOrO,EAAKkK,aAAa,UAA2C,SAAvBmE,EAAK7K,gBAIvDpD,MAASyL,GAAuB,WAC/B,OAAS,KAGVvL,KAAQuL,GAAuB,SAAUE,EAAc7M,GACtD,OAASA,EAAS,KAGnBmB,GAAMwL,GAAuB,SAAUE,EAAc7M,EAAQ4M,GAC5D,OAAoB,EAAXA,EAAeA,EAAW5M,EAAS4M,KAG7CsG,KAAQvG,GAAuB,SAAUE,EAAc7M,GAEtD,IADA,GAAIe,GAAI,EACIf,EAAJe,EAAYA,GAAK,EACxB8L,EAAapO,KAAMsC,EAEpB,OAAO8L,KAGRsG,IAAOxG,GAAuB,SAAUE,EAAc7M,GAErD,IADA,GAAIe,GAAI,EACIf,EAAJe,EAAYA,GAAK,EACxB8L,EAAapO,KAAMsC,EAEpB,OAAO8L,KAGRuG,GAAMzG,GAAuB,SAAUE,EAAc7M,EAAQ4M,GAE5D,IADA,GAAI7L,GAAe,EAAX6L,EAAeA,EAAW5M,EAAS4M,IACjC7L,GAAK,GACd8L,EAAapO,KAAMsC,EAEpB,OAAO8L,KAGRwG,GAAM1G,GAAuB,SAAUE,EAAc7M,EAAQ4M,GAE5D,IADA,GAAI7L,GAAe,EAAX6L,EAAeA,EAAW5M,EAAS4M,IACjC7L,EAAIf,GACb6M,EAAapO,KAAMsC,EAEpB,OAAO8L,OAKVlH,EAAKkC,QAAa,IAAIlC,EAAKkC,QAAY,EAGvC,KAAM9G,KAAOuS,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5E/N,EAAKkC,QAAS9G,GAAM0L,GAAmB1L,EAExC,KAAMA,KAAO4S,QAAQ,EAAMC,OAAO,GACjCjO,EAAKkC,QAAS9G,GAAM2L,GAAoB3L,EAIzC,SAASyQ,OACTA,GAAW3R,UAAY8F,EAAKkO,QAAUlO,EAAKkC,QAC3ClC,EAAK6L,WAAa,GAAIA,IAEtB1L,EAAWJ,GAAOI,SAAW,SAAU5G,EAAU4U,GAChD,GAAIpC,GAASzH,EAAO8J,EAAQ/Q,EAC3BgR,EAAO7J,EAAQ8J,EACfC,EAASnN,EAAY7H,EAAW,IAEjC,IAAKgV,EACJ,MAAOJ,GAAY,EAAII,EAAO3V,MAAO,EAGtCyV,GAAQ9U,EACRiL,KACA8J,EAAatO,EAAK0K,SAElB,OAAQ2D,EAAQ,GAGTtC,IAAYzH,EAAQjC,EAAOyC,KAAMuJ,OACjC/J,IAEJ+J,EAAQA,EAAMzV,MAAO0L,EAAM,GAAGjK,SAAYgU,GAE3C7J,EAAO1L,KAAOsV,OAGfrC,GAAU,GAGJzH,EAAQhC,EAAawC,KAAMuJ,MAChCtC,EAAUzH,EAAM2B,QAChBmI,EAAOtV,MACN8F,MAAOmN,EAEP1O,KAAMiH,EAAM,GAAGvH,QAASpD,EAAO,OAEhC0U,EAAQA,EAAMzV,MAAOmT,EAAQ1R,QAI9B,KAAMgD,IAAQ2C,GAAKiI,SACZ3D,EAAQ5B,EAAWrF,GAAOyH,KAAMuJ,KAAcC,EAAYjR,MAC9DiH,EAAQgK,EAAYjR,GAAQiH,MAC7ByH,EAAUzH,EAAM2B,QAChBmI,EAAOtV,MACN8F,MAAOmN,EACP1O,KAAMA,EACNiC,QAASgF,IAEV+J,EAAQA,EAAMzV,MAAOmT,EAAQ1R,QAI/B,KAAM0R,EACL,MAOF,MAAOoC,GACNE,EAAMhU,OACNgU,EACCtO,GAAO9C,MAAO1D,GAEd6H,EAAY7H,EAAUiL,GAAS5L,MAAO,GAGzC,SAAS2M,IAAY6I,GAIpB,IAHA,GAAIhT,GAAI,EACPM,EAAM0S,EAAO/T,OACbd,EAAW,GACAmC,EAAJN,EAASA,IAChB7B,GAAY6U,EAAOhT,GAAGwD,KAEvB,OAAOrF,GAGR,QAASiV,IAAevC,EAASwC,EAAYC,GAC5C,GAAIpE,GAAMmE,EAAWnE,IACpBqE,EAAmBD,GAAgB,eAARpE,EAC3BsE,EAAW3N,GAEZ,OAAOwN,GAAWlT,MAEjB,SAAUJ,EAAM3B,EAAS8R,GACxB,MAASnQ,EAAOA,EAAMmP,GACrB,GAAuB,IAAlBnP,EAAKuC,UAAkBiR,EAC3B,MAAO1C,GAAS9Q,EAAM3B,EAAS8R,IAMlC,SAAUnQ,EAAM3B,EAAS8R,GACxB,GAAIuD,GAAUtD,EACbuD,GAAa9N,EAAS4N,EAGvB,IAAKtD,GACJ,MAASnQ,EAAOA,EAAMmP,GACrB,IAAuB,IAAlBnP,EAAKuC,UAAkBiR,IACtB1C,EAAS9Q,EAAM3B,EAAS8R,GAC5B,OAAO,MAKV,OAASnQ,EAAOA,EAAMmP,GACrB,GAAuB,IAAlBnP,EAAKuC,UAAkBiR,EAAmB,CAE9C,GADApD,EAAapQ,EAAMyB,KAAczB,EAAMyB,QACjCiS,EAAWtD,EAAYjB,KAC5BuE,EAAU,KAAQ7N,GAAW6N,EAAU,KAAQD,EAG/C,MAAQE,GAAU,GAAMD,EAAU,EAMlC,IAHAtD,EAAYjB,GAAQwE,EAGdA,EAAU,GAAM7C,EAAS9Q,EAAM3B,EAAS8R,GAC7C,OAAO,IASf,QAASyD,IAAgBC,GACxB,MAAOA,GAAS3U,OAAS,EACxB,SAAUc,EAAM3B,EAAS8R,GACxB,GAAIlQ,GAAI4T,EAAS3U,MACjB,OAAQe,IACP,IAAM4T,EAAS5T,GAAID,EAAM3B,EAAS8R,GACjC,OAAO,CAGT,QAAO,GAER0D,EAAS,GAGX,QAASC,IAAkB1V,EAAU2V,EAAUnQ,GAG9C,IAFA,GAAI3D,GAAI,EACPM,EAAMwT,EAAS7U,OACJqB,EAAJN,EAASA,IAChB2E,GAAQxG,EAAU2V,EAAS9T,GAAI2D,EAEhC,OAAOA,GAGR,QAASoQ,IAAUjD,EAAWhR,EAAK+M,EAAQzO,EAAS8R,GAOnD,IANA,GAAInQ,GACHiU,KACAhU,EAAI,EACJM,EAAMwQ,EAAU7R,OAChBgV,EAAgB,MAAPnU,EAEEQ,EAAJN,EAASA,KACVD,EAAO+Q,EAAU9Q,OAChB6M,GAAUA,EAAQ9M,EAAM3B,EAAS8R,MACtC8D,EAAatW,KAAMqC,GACdkU,GACJnU,EAAIpC,KAAMsC,GAMd,OAAOgU,GAGR,QAASE,IAAY5E,EAAWnR,EAAU0S,EAASsD,EAAYC,EAAYC,GAO1E,MANKF,KAAeA,EAAY3S,KAC/B2S,EAAaD,GAAYC,IAErBC,IAAeA,EAAY5S,KAC/B4S,EAAaF,GAAYE,EAAYC,IAE/BvJ,GAAa,SAAU7B,EAAMtF,EAASvF,EAAS8R,GACrD,GAAIoE,GAAMtU,EAAGD,EACZwU,KACAC,KACAC,EAAc9Q,EAAQ1E,OAGtBM,EAAQ0J,GAAQ4K,GAAkB1V,GAAY,IAAKC,EAAQkE,UAAalE,GAAYA,MAGpFsW,GAAYpF,IAAerG,GAAS9K,EAEnCoB,EADAwU,GAAUxU,EAAOgV,EAAQjF,EAAWlR,EAAS8R,GAG9CyE,EAAa9D,EAEZuD,IAAgBnL,EAAOqG,EAAYmF,GAAeN,MAMjDxQ,EACD+Q,CAQF,IALK7D,GACJA,EAAS6D,EAAWC,EAAYvW,EAAS8R,GAIrCiE,EAAa,CACjBG,EAAOP,GAAUY,EAAYH,GAC7BL,EAAYG,KAAUlW,EAAS8R,GAG/BlQ,EAAIsU,EAAKrV,MACT,OAAQe,KACDD,EAAOuU,EAAKtU,MACjB2U,EAAYH,EAAQxU,MAAS0U,EAAWF,EAAQxU,IAAOD,IAK1D,GAAKkJ,GACJ,GAAKmL,GAAc9E,EAAY,CAC9B,GAAK8E,EAAa,CAEjBE,KACAtU,EAAI2U,EAAW1V,MACf,OAAQe,KACDD,EAAO4U,EAAW3U,KAEvBsU,EAAK5W,KAAOgX,EAAU1U,GAAKD,EAG7BqU,GAAY,KAAOO,KAAkBL,EAAMpE,GAI5ClQ,EAAI2U,EAAW1V,MACf,OAAQe,KACDD,EAAO4U,EAAW3U,MACtBsU,EAAOF,EAAazW,EAASsL,EAAMlJ,GAASwU,EAAOvU,IAAM,KAE1DiJ,EAAKqL,KAAU3Q,EAAQ2Q,GAAQvU,SAOlC4U,GAAaZ,GACZY,IAAehR,EACdgR,EAAWjU,OAAQ+T,EAAaE,EAAW1V,QAC3C0V,GAEGP,EACJA,EAAY,KAAMzQ,EAASgR,EAAYzE,GAEvCxS,EAAKuC,MAAO0D,EAASgR,KAMzB,QAASC,IAAmB5B,GAwB3B,IAvBA,GAAI6B,GAAchE,EAAStQ,EAC1BD,EAAM0S,EAAO/T,OACb6V,EAAkBlQ,EAAKoK,SAAUgE,EAAO,GAAG/Q,MAC3C8S,EAAmBD,GAAmBlQ,EAAKoK,SAAS,KACpDhP,EAAI8U,EAAkB,EAAI,EAG1BE,EAAe5B,GAAe,SAAUrT,GACvC,MAAOA,KAAS8U,GACdE,GAAkB,GACrBE,EAAkB7B,GAAe,SAAUrT,GAC1C,MAAOpC,GAASkX,EAAc9U,GAAS,IACrCgV,GAAkB,GACrBnB,GAAa,SAAU7T,EAAM3B,EAAS8R,GACrC,GAAI1Q,IAASsV,IAAqB5E,GAAO9R,IAAY8G,MACnD2P,EAAezW,GAASkE,SACxB0S,EAAcjV,EAAM3B,EAAS8R,GAC7B+E,EAAiBlV,EAAM3B,EAAS8R,GAGlC,OADA2E,GAAe,KACRrV,IAGGc,EAAJN,EAASA,IAChB,GAAM6Q,EAAUjM,EAAKoK,SAAUgE,EAAOhT,GAAGiC,MACxC2R,GAAaR,GAAcO,GAAgBC,GAAY/C,QACjD,CAIN,GAHAA,EAAUjM,EAAKiI,OAAQmG,EAAOhT,GAAGiC,MAAOhC,MAAO,KAAM+S,EAAOhT,GAAGkE,SAG1D2M,EAASrP,GAAY,CAGzB,IADAjB,IAAMP,EACMM,EAAJC,EAASA,IAChB,GAAKqE,EAAKoK,SAAUgE,EAAOzS,GAAG0B,MAC7B,KAGF,OAAOiS,IACNlU,EAAI,GAAK2T,GAAgBC,GACzB5T,EAAI,GAAKmK,GAER6I,EAAOxV,MAAO,EAAGwC,EAAI,GAAIvC,QAAS+F,MAAgC,MAAzBwP,EAAQhT,EAAI,GAAIiC,KAAe,IAAM,MAC7EN,QAASpD,EAAO,MAClBsS,EACItQ,EAAJP,GAAS4U,GAAmB5B,EAAOxV,MAAOwC,EAAGO,IACzCD,EAAJC,GAAWqU,GAAoB5B,EAASA,EAAOxV,MAAO+C,IAClDD,EAAJC,GAAW4J,GAAY6I,IAGzBY,EAASlW,KAAMmT,GAIjB,MAAO8C,IAAgBC,GAGxB,QAASsB,IAA0BC,EAAiBC,GACnD,GAAIC,GAAQD,EAAYnW,OAAS,EAChCqW,EAAYH,EAAgBlW,OAAS,EACrCsW,EAAe,SAAUtM,EAAM7K,EAAS8R,EAAKvM,EAAS6R,GACrD,GAAIzV,GAAMQ,EAAGsQ,EACZ4E,EAAe,EACfzV,EAAI,IACJ8Q,EAAY7H,MACZyM,KACAC,EAAgBzQ,EAEhB3F,EAAQ0J,GAAQqM,GAAa1Q,EAAKgI,KAAU,IAAG,IAAK4I,GAEpDI,EAAiBhQ,GAA4B,MAAjB+P,EAAwB,EAAIlU,KAAKC,UAAY,GACzEpB,EAAMf,EAAMN,MAUb,KARKuW,IACJtQ,EAAmB9G,IAAYnB,GAAYmB,GAOpC4B,IAAMM,GAA4B,OAApBP,EAAOR,EAAMS,IAAaA,IAAM,CACrD,GAAKsV,GAAavV,EAAO,CACxBQ,EAAI,CACJ,OAASsQ,EAAUsE,EAAgB5U,KAClC,GAAKsQ,EAAS9Q,EAAM3B,EAAS8R,GAAQ,CACpCvM,EAAQjG,KAAMqC,EACd,OAGGyV,IACJ5P,EAAUgQ,GAKPP,KAEEtV,GAAQ8Q,GAAW9Q,IACxB0V,IAIIxM,GACJ6H,EAAUpT,KAAMqC,IAOnB,GADA0V,GAAgBzV,EACXqV,GAASrV,IAAMyV,EAAe,CAClClV,EAAI,CACJ,OAASsQ,EAAUuE,EAAY7U,KAC9BsQ,EAASC,EAAW4E,EAAYtX,EAAS8R,EAG1C,IAAKjH,EAAO,CAEX,GAAKwM,EAAe,EACnB,MAAQzV,IACA8Q,EAAU9Q,IAAM0V,EAAW1V,KACjC0V,EAAW1V,GAAKsG,EAAInH,KAAMwE,GAM7B+R,GAAa3B,GAAU2B,GAIxBhY,EAAKuC,MAAO0D,EAAS+R,GAGhBF,IAAcvM,GAAQyM,EAAWzW,OAAS,GAC5CwW,EAAeL,EAAYnW,OAAW,GAExC0F,GAAO4J,WAAY5K,GAUrB,MALK6R,KACJ5P,EAAUgQ,EACV1Q,EAAmByQ,GAGb7E,EAGT,OAAOuE,GACNvK,GAAcyK,GACdA,EA+KF,MA5KAvQ,GAAUL,GAAOK,QAAU,SAAU7G,EAAU+K,GAC9C,GAAIlJ,GACHoV,KACAD,KACAhC,EAASlN,EAAe9H,EAAW,IAEpC,KAAMgV,EAAS,CAERjK,IACLA,EAAQnE,EAAU5G,IAEnB6B,EAAIkJ,EAAMjK,MACV,OAAQe,IACPmT,EAASyB,GAAmB1L,EAAMlJ,IAC7BmT,EAAQ3R,GACZ4T,EAAY1X,KAAMyV,GAElBgC,EAAgBzX,KAAMyV,EAKxBA,GAASlN,EAAe9H,EAAU+W,GAA0BC,EAAiBC,IAG7EjC,EAAOhV,SAAWA,EAEnB,MAAOgV,IAYRlO,EAASN,GAAOM,OAAS,SAAU9G,EAAUC,EAASuF,EAASsF,GAC9D,GAAIjJ,GAAGgT,EAAQ6C,EAAO5T,EAAM2K,EAC3BkJ,EAA+B,kBAAb3X,IAA2BA,EAC7C+K,GAASD,GAAQlE,EAAW5G,EAAW2X,EAAS3X,UAAYA,EAK7D,IAHAwF,EAAUA,MAGY,IAAjBuF,EAAMjK,OAAe,CAIzB,GADA+T,EAAS9J,EAAM,GAAKA,EAAM,GAAG1L,MAAO,GAC/BwV,EAAO/T,OAAS,GAAkC,QAA5B4W,EAAQ7C,EAAO,IAAI/Q,MAC5CjE,EAAQ0O,SAAgC,IAArBtO,EAAQkE,UAAkBiD,GAC7CX,EAAKoK,SAAUgE,EAAO,GAAG/Q,MAAS,CAGnC,GADA7D,GAAYwG,EAAKgI,KAAS,GAAGiJ,EAAM3R,QAAQ,GAAGvC,QAAQ0G,GAAWC,IAAYlK,QAAkB,IACzFA,EACL,MAAOuF,EAGImS,KACX1X,EAAUA,EAAQ8E,YAGnB/E,EAAWA,EAASX,MAAOwV,EAAOnI,QAAQrH,MAAMvE,QAIjDe,EAAIsH,EAAwB,aAAE0C,KAAM7L,GAAa,EAAI6U,EAAO/T,MAC5D,OAAQe,IAAM,CAIb,GAHA6V,EAAQ7C,EAAOhT,GAGV4E,EAAKoK,SAAW/M,EAAO4T,EAAM5T,MACjC,KAED,KAAM2K,EAAOhI,EAAKgI,KAAM3K,MAEjBgH,EAAO2D,EACZiJ,EAAM3R,QAAQ,GAAGvC,QAAS0G,GAAWC,IACrCH,GAAS6B,KAAMgJ,EAAO,GAAG/Q,OAAUmI,GAAahM,EAAQ8E,aAAgB9E,IACpE,CAKJ,GAFA4U,EAAOtS,OAAQV,EAAG,GAClB7B,EAAW8K,EAAKhK,QAAUkL,GAAY6I,IAChC7U,EAEL,MADAT,GAAKuC,MAAO0D,EAASsF,GACdtF,CAGR,SAeJ,OAPEmS,GAAY9Q,EAAS7G,EAAU+K,IAChCD,EACA7K,GACCmH,EACD5B,EACAwE,GAAS6B,KAAM7L,IAAciM,GAAahM,EAAQ8E,aAAgB9E,GAE5DuF,GAMR3F,EAAQ0Q,WAAalN,EAAQkD,MAAM,IAAIjE,KAAMyF,GAAYmE,KAAK,MAAQ7I,EAItExD,EAAQyQ,mBAAqBrJ,EAG7BC,IAIArH,EAAQ6P,aAAe9C,GAAO,SAAUgL,GAEvC,MAAuE,GAAhEA,EAAKtI,wBAAyBxQ,EAAS6F,cAAc,UAMvDiI,GAAO,SAAUC,GAEtB,MADAA,GAAIiC,UAAY,mBAC+B,MAAxCjC,EAAI4D,WAAW3E,aAAa,WAEnCgB,GAAW,yBAA0B,SAAUlL,EAAMc,EAAMiE,GAC1D,MAAMA,GAAN,OACQ/E,EAAKkK,aAAcpJ,EAA6B,SAAvBA,EAAK0C,cAA2B,EAAI,KAOjEvF,EAAQ6I,YAAekE,GAAO,SAAUC,GAG7C,MAFAA,GAAIiC,UAAY,WAChBjC,EAAI4D,WAAW1E,aAAc,QAAS,IACY,KAA3Cc,EAAI4D,WAAW3E,aAAc,YAEpCgB,GAAW,QAAS,SAAUlL,EAAMc,EAAMiE,GACzC,MAAMA,IAAyC,UAAhC/E,EAAKuD,SAASC,cAA7B,OACQxD,EAAKiW,eAOTjL,GAAO,SAAUC,GACtB,MAAuC,OAAhCA,EAAIf,aAAa,eAExBgB,GAAWxE,EAAU,SAAU1G,EAAMc,EAAMiE,GAC1C,GAAIuJ,EACJ,OAAMvJ,GAAN,OACQ/E,EAAMc,MAAW,EAAOA,EAAK0C,eACjC8K,EAAMtO,EAAKgN,iBAAkBlM,KAAWwN,EAAIC,UAC7CD,EAAI7K,MACL,OAKGmB,IAEHvH,EAIJc,GAAO0O,KAAOjI,EACdzG,EAAOgQ,KAAOvJ,EAAOmK,UACrB5Q,EAAOgQ,KAAK,KAAOhQ,EAAOgQ,KAAKpH,QAC/B5I,EAAO+X,OAAStR,EAAO4J,WACvBrQ,EAAO6E,KAAO4B,EAAOE,QACrB3G,EAAOgY,SAAWvR,EAAOG,MACzB5G,EAAOwH,SAAWf,EAAOe,QAIzB,IAAIyQ,GAAgBjY,EAAOgQ,KAAKhF,MAAMpB,aAElCsO,EAAa,6BAIbC,EAAY,gBAGhB,SAASC,GAAQnI,EAAUoI,EAAW3F,GACrC,GAAK1S,EAAOkD,WAAYmV,GACvB,MAAOrY,GAAO6F,KAAMoK,EAAU,SAAUpO,EAAMC,GAE7C,QAASuW,EAAUpX,KAAMY,EAAMC,EAAGD,KAAW6Q,GAK/C,IAAK2F,EAAUjU,SACd,MAAOpE,GAAO6F,KAAMoK,EAAU,SAAUpO,GACvC,MAASA,KAASwW,IAAgB3F,GAKpC,IAA0B,gBAAd2F,GAAyB,CACpC,GAAKF,EAAUrM,KAAMuM,GACpB,MAAOrY,GAAO2O,OAAQ0J,EAAWpI,EAAUyC,EAG5C2F,GAAYrY,EAAO2O,OAAQ0J,EAAWpI,GAGvC,MAAOjQ,GAAO6F,KAAMoK,EAAU,SAAUpO,GACvC,MAASpC,GAAQwB,KAAMoX,EAAWxW,IAAU,IAAQ6Q,IAItD1S,EAAO2O,OAAS,SAAUqB,EAAM3O,EAAOqR,GACtC,GAAI7Q,GAAOR,EAAO,EAMlB,OAJKqR,KACJ1C,EAAO,QAAUA,EAAO,KAGD,IAAjB3O,EAAMN,QAAkC,IAAlBc,EAAKuC,SACjCpE,EAAO0O,KAAKO,gBAAiBpN,EAAMmO,IAAWnO,MAC9C7B,EAAO0O,KAAK1I,QAASgK,EAAMhQ,EAAO6F,KAAMxE,EAAO,SAAUQ,GACxD,MAAyB,KAAlBA,EAAKuC,aAIfpE,EAAOG,GAAGsC,QACTiM,KAAM,SAAUzO,GACf,GAAI6B,GACHM,EAAMjD,KAAK4B,OACXO,KACAgX,EAAOnZ,IAER,IAAyB,gBAAbc,GACX,MAAOd,MAAKiC,UAAWpB,EAAQC,GAAW0O,OAAO,WAChD,IAAM7M,EAAI,EAAOM,EAAJN,EAASA,IACrB,GAAK9B,EAAOwH,SAAU8Q,EAAMxW,GAAK3C,MAChC,OAAO,IAMX,KAAM2C,EAAI,EAAOM,EAAJN,EAASA,IACrB9B,EAAO0O,KAAMzO,EAAUqY,EAAMxW,GAAKR,EAMnC,OAFAA,GAAMnC,KAAKiC,UAAWgB,EAAM,EAAIpC,EAAO+X,OAAQzW,GAAQA,GACvDA,EAAIrB,SAAWd,KAAKc,SAAWd,KAAKc,SAAW,IAAMA,EAAWA,EACzDqB,GAERqN,OAAQ,SAAU1O,GACjB,MAAOd,MAAKiC,UAAWgX,EAAOjZ,KAAMc,OAAgB,KAErDyS,IAAK,SAAUzS,GACd,MAAOd,MAAKiC,UAAWgX,EAAOjZ,KAAMc,OAAgB,KAErDsY,GAAI,SAAUtY,GACb,QAASmY,EACRjZ,KAIoB,gBAAbc,IAAyBgY,EAAcnM,KAAM7L,GACnDD,EAAQC,GACRA,OACD,GACCc,SASJ,IAAIyX,GAKHxO,EAAa,sCAEb5J,EAAOJ,EAAOG,GAAGC,KAAO,SAAUH,EAAUC,GAC3C,GAAI8K,GAAOnJ,CAGX,KAAM5B,EACL,MAAOd,KAIR,IAAyB,gBAAbc,GAAwB,CAUnC,GAPC+K,EAFoB,MAAhB/K,EAAS,IAAkD,MAApCA,EAAUA,EAASc,OAAS,IAAed,EAASc,QAAU,GAE/E,KAAMd,EAAU,MAGlB+J,EAAWwB,KAAMvL,IAIrB+K,IAAUA,EAAM,IAAO9K,EAgDrB,OAAMA,GAAWA,EAAQW,QACtBX,GAAWsY,GAAa9J,KAAMzO,GAKhCd,KAAK2B,YAAaZ,GAAUwO,KAAMzO,EAnDzC,IAAK+K,EAAM,GAAK,CAYf,GAXA9K,EAAUA,YAAmBF,GAASE,EAAQ,GAAKA,EAInDF,EAAOuB,MAAOpC,KAAMa,EAAOyY,UAC1BzN,EAAM,GACN9K,GAAWA,EAAQkE,SAAWlE,EAAQqL,eAAiBrL,EAAUnB,GACjE,IAIImZ,EAAWpM,KAAMd,EAAM,KAAQhL,EAAOmD,cAAejD,GACzD,IAAM8K,IAAS9K,GAETF,EAAOkD,WAAY/D,KAAM6L,IAC7B7L,KAAM6L,GAAS9K,EAAS8K,IAIxB7L,KAAK+Q,KAAMlF,EAAO9K,EAAS8K,GAK9B,OAAO7L,MAgBP,MAZA0C,GAAO9C,EAAS0M,eAAgBT,EAAM,IAIjCnJ,GAAQA,EAAKmD,aAEjB7F,KAAK4B,OAAS,EACd5B,KAAK,GAAK0C,GAGX1C,KAAKe,QAAUnB,EACfI,KAAKc,SAAWA,EACTd,KAcH,MAAKc,GAASmE,UACpBjF,KAAKe,QAAUf,KAAK,GAAKc,EACzBd,KAAK4B,OAAS,EACP5B,MAIIa,EAAOkD,WAAYjD,GACK,mBAArBuY,GAAWE,MACxBF,EAAWE,MAAOzY,GAElBA,EAAUD,IAGeqD,SAAtBpD,EAASA,WACbd,KAAKc,SAAWA,EAASA,SACzBd,KAAKe,QAAUD,EAASC,SAGlBF,EAAOwF,UAAWvF,EAAUd,OAIrCiB,GAAKQ,UAAYZ,EAAOG,GAGxBqY,EAAaxY,EAAQjB,EAGrB,IAAI4Z,GAAe,iCAElBC,GACCC,UAAU,EACVC,UAAU,EACVC,MAAM,EACNC,MAAM,EAGRhZ,GAAOyC,QACNuO,IAAK,SAAUnP,EAAMmP,EAAKiI,GACzB,GAAIxG,MACHyG,EAAqB7V,SAAV4V,CAEZ,QAASpX,EAAOA,EAAMmP,KAA4B,IAAlBnP,EAAKuC,SACpC,GAAuB,IAAlBvC,EAAKuC,SAAiB,CAC1B,GAAK8U,GAAYlZ,EAAQ6B,GAAO0W,GAAIU,GACnC,KAEDxG,GAAQjT,KAAMqC,GAGhB,MAAO4Q,IAGR0G,QAAS,SAAUC,EAAGvX,GAGrB,IAFA,GAAI4Q,MAEI2G,EAAGA,EAAIA,EAAE7L,YACI,IAAf6L,EAAEhV,UAAkBgV,IAAMvX,GAC9B4Q,EAAQjT,KAAM4Z,EAIhB,OAAO3G,MAITzS,EAAOG,GAAGsC,QACToQ,IAAK,SAAU7P,GACd,GAAIqW,GAAUrZ,EAAQgD,EAAQ7D,MAC7Bma,EAAID,EAAQtY,MAEb,OAAO5B,MAAKwP,OAAO,WAElB,IADA,GAAI7M,GAAI,EACIwX,EAAJxX,EAAOA,IACd,GAAK9B,EAAOwH,SAAUrI,KAAMka,EAAQvX,IACnC,OAAO,KAMXyX,QAAS,SAAU3I,EAAW1Q,GAS7B,IARA,GAAIkN,GACHtL,EAAI,EACJwX,EAAIna,KAAK4B,OACT0R,KACA+G,EAAMvB,EAAcnM,KAAM8E,IAAoC,gBAAdA,GAC/C5Q,EAAQ4Q,EAAW1Q,GAAWf,KAAKe,SACnC,EAEUoZ,EAAJxX,EAAOA,IACd,IAAMsL,EAAMjO,KAAK2C,GAAIsL,GAAOA,IAAQlN,EAASkN,EAAMA,EAAIpI,WAEtD,GAAKoI,EAAIhJ,SAAW,KAAOoV,EAC1BA,EAAIC,MAAMrM,GAAO,GAGA,IAAjBA,EAAIhJ,UACHpE,EAAO0O,KAAKO,gBAAgB7B,EAAKwD,IAAc,CAEhD6B,EAAQjT,KAAM4N,EACd,OAKH,MAAOjO,MAAKiC,UAAWqR,EAAQ1R,OAAS,EAAIf,EAAO+X,OAAQtF,GAAYA,IAIxEgH,MAAO,SAAU5X,GAGhB,MAAMA,GAKe,gBAATA,GACJpC,EAAQwB,KAAMjB,EAAQ6B,GAAQ1C,KAAM,IAIrCM,EAAQwB,KAAM9B,KAGpB0C,EAAKhB,OAASgB,EAAM,GAAMA,GAZjB1C,KAAM,IAAOA,KAAM,GAAI6F,WAAe7F,KAAK8C,QAAQyX,UAAU3Y,OAAS,IAgBjF4Y,IAAK,SAAU1Z,EAAUC,GACxB,MAAOf,MAAKiC,UACXpB,EAAO+X,OACN/X,EAAOuB,MAAOpC,KAAK+B,MAAOlB,EAAQC,EAAUC,OAK/C0Z,QAAS,SAAU3Z,GAClB,MAAOd,MAAKwa,IAAiB,MAAZ1Z,EAChBd,KAAKqC,WAAarC,KAAKqC,WAAWmN,OAAO1O,MAK5C,SAASkZ,GAAS/L,EAAK4D,GACtB,OAAS5D,EAAMA,EAAI4D,KAA0B,IAAjB5D,EAAIhJ,UAChC,MAAOgJ,GAGRpN,EAAOyB,MACNuM,OAAQ,SAAUnM,GACjB,GAAImM,GAASnM,EAAKmD,UAClB,OAAOgJ,IAA8B,KAApBA,EAAO5J,SAAkB4J,EAAS,MAEpD6L,QAAS,SAAUhY,GAClB,MAAO7B,GAAOgR,IAAKnP,EAAM,eAE1BiY,aAAc,SAAUjY,EAAMC,EAAGmX,GAChC,MAAOjZ,GAAOgR,IAAKnP,EAAM,aAAcoX,IAExCF,KAAM,SAAUlX,GACf,MAAOsX,GAAStX,EAAM,gBAEvBmX,KAAM,SAAUnX,GACf,MAAOsX,GAAStX,EAAM,oBAEvBkY,QAAS,SAAUlY,GAClB,MAAO7B,GAAOgR,IAAKnP,EAAM,gBAE1B6X,QAAS,SAAU7X,GAClB,MAAO7B,GAAOgR,IAAKnP,EAAM,oBAE1BmY,UAAW,SAAUnY,EAAMC,EAAGmX,GAC7B,MAAOjZ,GAAOgR,IAAKnP,EAAM,cAAeoX,IAEzCgB,UAAW,SAAUpY,EAAMC,EAAGmX,GAC7B,MAAOjZ,GAAOgR,IAAKnP,EAAM,kBAAmBoX,IAE7CiB,SAAU,SAAUrY,GACnB,MAAO7B,GAAOmZ,SAAWtX,EAAKmD,gBAAmB0L,WAAY7O,IAE9DgX,SAAU,SAAUhX,GACnB,MAAO7B,GAAOmZ,QAAStX,EAAK6O,aAE7BoI,SAAU,SAAUjX,GACnB,MAAOA,GAAKsY,iBAAmBna,EAAOuB,SAAWM,EAAK+I,cAErD,SAAUjI,EAAMxC,GAClBH,EAAOG,GAAIwC,GAAS,SAAUsW,EAAOhZ,GACpC,GAAIwS,GAAUzS,EAAO4B,IAAKzC,KAAMgB,EAAI8Y,EAsBpC,OApB0B,UAArBtW,EAAKrD,MAAO,MAChBW,EAAWgZ,GAGPhZ,GAAgC,gBAAbA,KACvBwS,EAAUzS,EAAO2O,OAAQ1O,EAAUwS,IAG/BtT,KAAK4B,OAAS,IAEZ6X,EAAkBjW,IACvB3C,EAAO+X,OAAQtF,GAIXkG,EAAa7M,KAAMnJ,IACvB8P,EAAQ2H,WAIHjb,KAAKiC,UAAWqR,KAGzB,IAAI4H,GAAY,OAKZC,IAGJ,SAASC,GAAe7X,GACvB,GAAI8X,GAASF,EAAc5X,KAI3B,OAHA1C,GAAOyB,KAAMiB,EAAQsI,MAAOqP,OAAmB,SAAUhQ,EAAGoQ,GAC3DD,EAAQC,IAAS,IAEXD,EAyBRxa,EAAO0a,UAAY,SAAUhY,GAI5BA,EAA6B,gBAAZA,GACd4X,EAAc5X,IAAa6X,EAAe7X,GAC5C1C,EAAOyC,UAAYC,EAEpB,IACCiY,GAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAEA1S,KAEA2S,GAASvY,EAAQwY,SAEjBC,EAAO,SAAUC,GAOhB,IANAT,EAASjY,EAAQiY,QAAUS,EAC3BR,GAAQ,EACRI,EAAcF,GAAe,EAC7BA,EAAc,EACdC,EAAezS,EAAKvH,OACpB8Z,GAAS,EACDvS,GAAsByS,EAAdC,EAA4BA,IAC3C,GAAK1S,EAAM0S,GAAcjZ,MAAOqZ,EAAM,GAAKA,EAAM,OAAU,GAAS1Y,EAAQ2Y,YAAc,CACzFV,GAAS,CACT,OAGFE,GAAS,EACJvS,IACC2S,EACCA,EAAMla,QACVoa,EAAMF,EAAMtO,SAEFgO,EACXrS,KAEAgQ,EAAKgD,YAKRhD,GAECqB,IAAK,WACJ,GAAKrR,EAAO,CAEX,GAAI6J,GAAQ7J,EAAKvH,QACjB,QAAU4Y,GAAKhY,GACd3B,EAAOyB,KAAME,EAAM,SAAU0I,EAAGnE,GAC/B,GAAInC,GAAO/D,EAAO+D,KAAMmC,EACV,cAATnC,EACErB,EAAQqV,QAAWO,EAAKzF,IAAK3M,IAClCoC,EAAK9I,KAAM0G,GAEDA,GAAOA,EAAInF,QAAmB,WAATgD,GAEhC4V,EAAKzT,MAGJlE,WAGC6Y,EACJE,EAAezS,EAAKvH,OAGT4Z,IACXG,EAAc3I,EACdgJ,EAAMR,IAGR,MAAOxb,OAGRoc,OAAQ,WAkBP,MAjBKjT,IACJtI,EAAOyB,KAAMO,UAAW,SAAUqI,EAAGnE,GACpC,GAAIuT,EACJ,QAAUA,EAAQzZ,EAAO2F,QAASO,EAAKoC,EAAMmR,IAAY,GACxDnR,EAAK9F,OAAQiX,EAAO,GAEfoB,IACUE,GAATtB,GACJsB,IAEaC,GAATvB,GACJuB,OAME7b,MAIR0T,IAAK,SAAU1S,GACd,MAAOA,GAAKH,EAAO2F,QAASxF,EAAImI,GAAS,MAASA,IAAQA,EAAKvH,SAGhE+S,MAAO,WAGN,MAFAxL,MACAyS,EAAe,EACR5b,MAGRmc,QAAS,WAER,MADAhT,GAAO2S,EAAQN,EAAStX,OACjBlE,MAGRuU,SAAU,WACT,OAAQpL,GAGTkT,KAAM,WAKL,MAJAP,GAAQ5X,OACFsX,GACLrC,EAAKgD,UAECnc,MAGRsc,OAAQ,WACP,OAAQR,GAGTS,SAAU,SAAUxb,EAASyB,GAU5B,OATK2G,GAAWsS,IAASK,IACxBtZ,EAAOA,MACPA,GAASzB,EAASyB,EAAKrC,MAAQqC,EAAKrC,QAAUqC,GACzCkZ,EACJI,EAAMzb,KAAMmC,GAEZwZ,EAAMxZ,IAGDxC,MAGRgc,KAAM,WAEL,MADA7C,GAAKoD,SAAUvc,KAAM6C,WACd7C,MAGRyb,MAAO,WACN,QAASA,GAIZ,OAAOtC,IAIRtY,EAAOyC,QAENkZ,SAAU,SAAUC,GACnB,GAAIC,KAEA,UAAW,OAAQ7b,EAAO0a,UAAU,eAAgB,aACpD,SAAU,OAAQ1a,EAAO0a,UAAU,eAAgB,aACnD,SAAU,WAAY1a,EAAO0a,UAAU,YAE1CoB,EAAQ,UACRC,GACCD,MAAO,WACN,MAAOA,IAERE,OAAQ,WAEP,MADAC,GAAStU,KAAM3F,WAAYka,KAAMla,WAC1B7C,MAERgd,KAAM,WACL,GAAIC,GAAMpa,SACV,OAAOhC,GAAO2b,SAAS,SAAUU,GAChCrc,EAAOyB,KAAMoa,EAAQ,SAAU/Z,EAAGwa,GACjC,GAAInc,GAAKH,EAAOkD,WAAYkZ,EAAKta,KAASsa,EAAKta,EAE/Cma,GAAUK,EAAM,IAAK,WACpB,GAAIC,GAAWpc,GAAMA,EAAG4B,MAAO5C,KAAM6C,UAChCua,IAAYvc,EAAOkD,WAAYqZ,EAASR,SAC5CQ,EAASR,UACPpU,KAAM0U,EAASG,SACfN,KAAMG,EAASI,QACfC,SAAUL,EAASM,QAErBN,EAAUC,EAAO,GAAM,QAAUnd,OAAS4c,EAAUM,EAASN,UAAY5c,KAAMgB,GAAOoc,GAAava,eAItGoa,EAAM,OACJL,WAIJA,QAAS,SAAUjY,GAClB,MAAc,OAAPA,EAAc9D,EAAOyC,OAAQqB,EAAKiY,GAAYA,IAGvDE,IAwCD,OArCAF,GAAQa,KAAOb,EAAQI,KAGvBnc,EAAOyB,KAAMoa,EAAQ,SAAU/Z,EAAGwa,GACjC,GAAIhU,GAAOgU,EAAO,GACjBO,EAAcP,EAAO,EAGtBP,GAASO,EAAM,IAAOhU,EAAKqR,IAGtBkD,GACJvU,EAAKqR,IAAI,WAERmC,EAAQe,GAGNhB,EAAY,EAAJ/Z,GAAS,GAAIwZ,QAASO,EAAQ,GAAK,GAAIL,MAInDS,EAAUK,EAAM,IAAO,WAEtB,MADAL,GAAUK,EAAM,GAAK,QAAUnd,OAAS8c,EAAWF,EAAU5c,KAAM6C,WAC5D7C,MAER8c,EAAUK,EAAM,GAAK,QAAWhU,EAAKoT,WAItCK,EAAQA,QAASE,GAGZL,GACJA,EAAK3a,KAAMgb,EAAUA,GAIfA,GAIRa,KAAM,SAAUC,GACf,GAAIjb,GAAI,EACPkb,EAAgB1d,EAAM2B,KAAMe,WAC5BjB,EAASic,EAAcjc,OAGvBkc,EAAuB,IAAXlc,GAAkBgc,GAAe/c,EAAOkD,WAAY6Z,EAAYhB,SAAchb,EAAS,EAGnGkb,EAAyB,IAAdgB,EAAkBF,EAAc/c,EAAO2b,WAGlDuB,EAAa,SAAUpb,EAAG8T,EAAUuH,GACnC,MAAO,UAAU7X,GAChBsQ,EAAU9T,GAAM3C,KAChBge,EAAQrb,GAAME,UAAUjB,OAAS,EAAIzB,EAAM2B,KAAMe,WAAcsD,EAC1D6X,IAAWC,EACfnB,EAASoB,WAAYzH,EAAUuH,KACfF,GAChBhB,EAASqB,YAAa1H,EAAUuH,KAKnCC,EAAgBG,EAAkBC,CAGnC,IAAKzc,EAAS,EAIb,IAHAqc,EAAiB,GAAIpZ,OAAOjD,GAC5Bwc,EAAmB,GAAIvZ,OAAOjD,GAC9Byc,EAAkB,GAAIxZ,OAAOjD,GACjBA,EAAJe,EAAYA,IACdkb,EAAelb,IAAO9B,EAAOkD,WAAY8Z,EAAelb,GAAIia,SAChEiB,EAAelb,GAAIia,UACjBpU,KAAMuV,EAAYpb,EAAG0b,EAAiBR,IACtCd,KAAMD,EAASQ,QACfC,SAAUQ,EAAYpb,EAAGyb,EAAkBH,MAE3CH,CAUL,OAJMA,IACLhB,EAASqB,YAAaE,EAAiBR,GAGjCf,EAASF,YAMlB,IAAI0B,EAEJzd,GAAOG,GAAGuY,MAAQ,SAAUvY,GAI3B,MAFAH,GAAO0Y,MAAMqD,UAAUpU,KAAMxH,GAEtBhB,MAGRa,EAAOyC,QAENiB,SAAS,EAITga,UAAW,EAGXC,UAAW,SAAUC,GACfA,EACJ5d,EAAO0d,YAEP1d,EAAO0Y,OAAO,IAKhBA,MAAO,SAAUmF,IAGXA,KAAS,IAAS7d,EAAO0d,UAAY1d,EAAO0D,WAKjD1D,EAAO0D,SAAU,EAGZma,KAAS,KAAU7d,EAAO0d,UAAY,IAK3CD,EAAUH,YAAave,GAAYiB,IAG9BA,EAAOG,GAAG2d,iBACd9d,EAAQjB,GAAW+e,eAAgB,SACnC9d,EAAQjB,GAAWgf,IAAK,cAQ3B,SAASC,KACRjf,EAASkf,oBAAqB,mBAAoBD,GAAW,GAC7D9e,EAAO+e,oBAAqB,OAAQD,GAAW,GAC/Che,EAAO0Y,QAGR1Y,EAAO0Y,MAAMqD,QAAU,SAAUjY,GAqBhC,MApBM2Z,KAELA,EAAYzd,EAAO2b,WAKU,aAAxB5c,EAASmf,WAEbC,WAAYne,EAAO0Y,QAKnB3Z,EAASqP,iBAAkB,mBAAoB4P,GAAW,GAG1D9e,EAAOkP,iBAAkB,OAAQ4P,GAAW,KAGvCP,EAAU1B,QAASjY,IAI3B9D,EAAO0Y,MAAMqD,SAOb,IAAIqC,GAASpe,EAAOoe,OAAS,SAAU/c,EAAOlB,EAAIsM,EAAKnH,EAAO+Y,EAAWC,EAAUC,GAClF,GAAIzc,GAAI,EACPM,EAAMf,EAAMN,OACZyd,EAAc,MAAP/R,CAGR,IAA4B,WAAvBzM,EAAO+D,KAAM0I,GAAqB,CACtC4R,GAAY,CACZ,KAAMvc,IAAK2K,GACVzM,EAAOoe,OAAQ/c,EAAOlB,EAAI2B,EAAG2K,EAAI3K,IAAI,EAAMwc,EAAUC,OAIhD,IAAelb,SAAViC,IACX+Y,GAAY,EAENre,EAAOkD,WAAYoC,KACxBiZ,GAAM,GAGFC,IAECD,GACJpe,EAAGc,KAAMI,EAAOiE,GAChBnF,EAAK,OAILqe,EAAOre,EACPA,EAAK,SAAU0B,EAAM4K,EAAKnH,GACzB,MAAOkZ,GAAKvd,KAAMjB,EAAQ6B,GAAQyD,MAKhCnF,GACJ,KAAYiC,EAAJN,EAASA,IAChB3B,EAAIkB,EAAMS,GAAI2K,EAAK8R,EAAMjZ,EAAQA,EAAMrE,KAAMI,EAAMS,GAAIA,EAAG3B,EAAIkB,EAAMS,GAAI2K,IAK3E,OAAO4R,GACNhd,EAGAmd,EACCre,EAAGc,KAAMI,GACTe,EAAMjC,EAAIkB,EAAM,GAAIoL,GAAQ6R,EAO/Bte,GAAOye,WAAa,SAAUC,GAQ7B,MAA0B,KAAnBA,EAAMta,UAAqC,IAAnBsa,EAAMta,YAAsBsa,EAAMta,SAIlE,SAASua,KAIRjZ,OAAOkZ,eAAgBzf,KAAKqN,SAAY,GACvCtL,IAAK,WACJ,YAIF/B,KAAKmE,QAAUtD,EAAOsD,QAAUqb,EAAKE,MAGtCF,EAAKE,IAAM,EACXF,EAAKG,QAAU9e,EAAOye,WAEtBE,EAAK/d,WACJ6L,IAAK,SAAUiS,GAId,IAAMC,EAAKG,QAASJ,GACnB,MAAO,EAGR,IAAIK,MAEHC,EAASN,EAAOvf,KAAKmE,QAGtB,KAAM0b,EAAS,CACdA,EAASL,EAAKE,KAGd,KACCE,EAAY5f,KAAKmE,UAAcgC,MAAO0Z,GACtCtZ,OAAOuZ,iBAAkBP,EAAOK,GAI/B,MAAQlU,GACTkU,EAAY5f,KAAKmE,SAAY0b,EAC7Bhf,EAAOyC,OAAQic,EAAOK,IASxB,MAJM5f,MAAKqN,MAAOwS,KACjB7f,KAAKqN,MAAOwS,OAGNA,GAERE,IAAK,SAAUR,EAAOtD,EAAM9V,GAC3B,GAAI6Z,GAIHH,EAAS7f,KAAKsN,IAAKiS,GACnBlS,EAAQrN,KAAKqN,MAAOwS,EAGrB,IAAqB,gBAAT5D,GACX5O,EAAO4O,GAAS9V,MAKhB,IAAKtF,EAAOqE,cAAemI,GAC1BxM,EAAOyC,OAAQtD,KAAKqN,MAAOwS,GAAU5D,OAGrC,KAAM+D,IAAQ/D,GACb5O,EAAO2S,GAAS/D,EAAM+D,EAIzB,OAAO3S,IAERtL,IAAK,SAAUwd,EAAOjS,GAKrB,GAAID,GAAQrN,KAAKqN,MAAOrN,KAAKsN,IAAKiS,GAElC,OAAerb,UAARoJ,EACND,EAAQA,EAAOC,IAEjB2R,OAAQ,SAAUM,EAAOjS,EAAKnH,GAC7B,GAAI8Z,EAYJ,OAAa/b,UAARoJ,GACDA,GAAsB,gBAARA,IAA+BpJ,SAAViC,GAEtC8Z,EAASjgB,KAAK+B,IAAKwd,EAAOjS,GAERpJ,SAAX+b,EACNA,EAASjgB,KAAK+B,IAAKwd,EAAO1e,EAAOkF,UAAUuH,MAS7CtN,KAAK+f,IAAKR,EAAOjS,EAAKnH,GAILjC,SAAViC,EAAsBA,EAAQmH,IAEtC8O,OAAQ,SAAUmD,EAAOjS,GACxB,GAAI3K,GAAGa,EAAM0c,EACZL,EAAS7f,KAAKsN,IAAKiS,GACnBlS,EAAQrN,KAAKqN,MAAOwS,EAErB,IAAa3b,SAARoJ,EACJtN,KAAKqN,MAAOwS,UAEN,CAEDhf,EAAOoD,QAASqJ,GAOpB9J,EAAO8J,EAAIlN,OAAQkN,EAAI7K,IAAK5B,EAAOkF,aAEnCma,EAAQrf,EAAOkF,UAAWuH,GAErBA,IAAOD,GACX7J,GAAS8J,EAAK4S,IAId1c,EAAO0c,EACP1c,EAAOA,IAAQ6J,IACZ7J,GAAWA,EAAKqI,MAAOqP,SAI5BvY,EAAIa,EAAK5B,MACT,OAAQe,UACA0K,GAAO7J,EAAMb,MAIvBwd,QAAS,SAAUZ,GAClB,OAAQ1e,EAAOqE,cACdlF,KAAKqN,MAAOkS,EAAOvf,KAAKmE,gBAG1Bic,QAAS,SAAUb,GACbA,EAAOvf,KAAKmE,gBACTnE,MAAKqN,MAAOkS,EAAOvf,KAAKmE,WAIlC,IAAIkc,GAAY,GAAIb,GAEhBc,EAAY,GAAId,GAchBe,EAAS,gCACZC,EAAa,UAEd,SAASC,GAAU/d,EAAM4K,EAAK2O,GAC7B,GAAIzY,EAIJ,IAAcU,SAAT+X,GAAwC,IAAlBvZ,EAAKuC,SAI/B,GAHAzB,EAAO,QAAU8J,EAAIhJ,QAASkc,EAAY,OAAQta,cAClD+V,EAAOvZ,EAAKkK,aAAcpJ,GAEL,gBAATyY,GAAoB,CAC/B,IACCA,EAAgB,SAATA,GAAkB,EACf,UAATA,GAAmB,EACV,SAATA,EAAkB,MAEjBA,EAAO,KAAOA,GAAQA,EACvBsE,EAAO5T,KAAMsP,GAASpb,EAAO6f,UAAWzE,GACxCA,EACA,MAAOvQ,IAGT4U,EAAUP,IAAKrd,EAAM4K,EAAK2O,OAE1BA,GAAO/X,MAGT,OAAO+X,GAGRpb,EAAOyC,QACN6c,QAAS,SAAUzd,GAClB,MAAO4d,GAAUH,QAASzd,IAAU2d,EAAUF,QAASzd,IAGxDuZ,KAAM,SAAUvZ,EAAMc,EAAMyY;AAC3B,MAAOqE,GAAUrB,OAAQvc,EAAMc,EAAMyY,IAGtC0E,WAAY,SAAUje,EAAMc,GAC3B8c,EAAUlE,OAAQ1Z,EAAMc,IAKzBod,MAAO,SAAUle,EAAMc,EAAMyY,GAC5B,MAAOoE,GAAUpB,OAAQvc,EAAMc,EAAMyY,IAGtC4E,YAAa,SAAUne,EAAMc,GAC5B6c,EAAUjE,OAAQ1Z,EAAMc,MAI1B3C,EAAOG,GAAGsC,QACT2Y,KAAM,SAAU3O,EAAKnH,GACpB,GAAIxD,GAAGa,EAAMyY,EACZvZ,EAAO1C,KAAM,GACb6N,EAAQnL,GAAQA,EAAK8G,UAGtB,IAAatF,SAARoJ,EAAoB,CACxB,GAAKtN,KAAK4B,SACTqa,EAAOqE,EAAUve,IAAKW,GAEC,IAAlBA,EAAKuC,WAAmBob,EAAUte,IAAKW,EAAM,iBAAmB,CACpEC,EAAIkL,EAAMjM,MACV,OAAQe,IAIFkL,EAAOlL,KACXa,EAAOqK,EAAOlL,GAAIa,KACe,IAA5BA,EAAKlD,QAAS,WAClBkD,EAAO3C,EAAOkF,UAAWvC,EAAKrD,MAAM,IACpCsgB,EAAU/d,EAAMc,EAAMyY,EAAMzY,KAI/B6c,GAAUN,IAAKrd,EAAM,gBAAgB,GAIvC,MAAOuZ,GAIR,MAAoB,gBAAR3O,GACJtN,KAAKsC,KAAK,WAChBge,EAAUP,IAAK/f,KAAMsN,KAIhB2R,EAAQjf,KAAM,SAAUmG,GAC9B,GAAI8V,GACH6E,EAAWjgB,EAAOkF,UAAWuH,EAO9B,IAAK5K,GAAkBwB,SAAViC,EAAb,CAIC,GADA8V,EAAOqE,EAAUve,IAAKW,EAAM4K,GACdpJ,SAAT+X,EACJ,MAAOA,EAMR,IADAA,EAAOqE,EAAUve,IAAKW,EAAMoe,GACd5c,SAAT+X,EACJ,MAAOA,EAMR,IADAA,EAAOwE,EAAU/d,EAAMoe,EAAU5c,QACnBA,SAAT+X,EACJ,MAAOA,OAQTjc,MAAKsC,KAAK,WAGT,GAAI2Z,GAAOqE,EAAUve,IAAK/B,KAAM8gB,EAKhCR,GAAUP,IAAK/f,KAAM8gB,EAAU3a,GAKL,KAArBmH,EAAIhN,QAAQ,MAAwB4D,SAAT+X,GAC/BqE,EAAUP,IAAK/f,KAAMsN,EAAKnH,MAG1B,KAAMA,EAAOtD,UAAUjB,OAAS,EAAG,MAAM,IAG7C+e,WAAY,SAAUrT,GACrB,MAAOtN,MAAKsC,KAAK,WAChBge,EAAUlE,OAAQpc,KAAMsN,QAM3BzM,EAAOyC,QACNyd,MAAO,SAAUre,EAAMkC,EAAMqX,GAC5B,GAAI8E,EAEJ,OAAKre,IACJkC,GAASA,GAAQ,MAAS,QAC1Bmc,EAAQV,EAAUte,IAAKW,EAAMkC,GAGxBqX,KACE8E,GAASlgB,EAAOoD,QAASgY,GAC9B8E,EAAQV,EAAUpB,OAAQvc,EAAMkC,EAAM/D,EAAOwF,UAAU4V,IAEvD8E,EAAM1gB,KAAM4b,IAGP8E,OAZR,QAgBDC,QAAS,SAAUte,EAAMkC,GACxBA,EAAOA,GAAQ,IAEf,IAAImc,GAAQlgB,EAAOkgB,MAAOre,EAAMkC,GAC/Bqc,EAAcF,EAAMnf,OACpBZ,EAAK+f,EAAMvT,QACX0T,EAAQrgB,EAAOsgB,YAAaze,EAAMkC,GAClCgV,EAAO,WACN/Y,EAAOmgB,QAASte,EAAMkC,GAIZ,gBAAP5D,IACJA,EAAK+f,EAAMvT,QACXyT,KAGIjgB,IAIU,OAAT4D,GACJmc,EAAMnQ,QAAS,oBAITsQ,GAAME,KACbpgB,EAAGc,KAAMY,EAAMkX,EAAMsH,KAGhBD,GAAeC,GACpBA,EAAMvM,MAAMqH,QAKdmF,YAAa,SAAUze,EAAMkC,GAC5B,GAAI0I,GAAM1I,EAAO,YACjB,OAAOyb,GAAUte,IAAKW,EAAM4K,IAAS+S,EAAUpB,OAAQvc,EAAM4K,GAC5DqH,MAAO9T,EAAO0a,UAAU,eAAef,IAAI,WAC1C6F,EAAUjE,OAAQ1Z,GAAQkC,EAAO,QAAS0I,WAM9CzM,EAAOG,GAAGsC,QACTyd,MAAO,SAAUnc,EAAMqX,GACtB,GAAIoF,GAAS,CAQb,OANqB,gBAATzc,KACXqX,EAAOrX,EACPA,EAAO,KACPyc,KAGIxe,UAAUjB,OAASyf,EAChBxgB,EAAOkgB,MAAO/gB,KAAK,GAAI4E,GAGfV,SAAT+X,EACNjc,KACAA,KAAKsC,KAAK,WACT,GAAIye,GAAQlgB,EAAOkgB,MAAO/gB,KAAM4E,EAAMqX,EAGtCpb,GAAOsgB,YAAanhB,KAAM4E,GAEZ,OAATA,GAA8B,eAAbmc,EAAM,IAC3BlgB,EAAOmgB,QAAShhB,KAAM4E,MAI1Boc,QAAS,SAAUpc,GAClB,MAAO5E,MAAKsC,KAAK,WAChBzB,EAAOmgB,QAAShhB,KAAM4E,MAGxB0c,WAAY,SAAU1c,GACrB,MAAO5E,MAAK+gB,MAAOnc,GAAQ,UAI5BgY,QAAS,SAAUhY,EAAMD,GACxB,GAAIuC,GACHqa,EAAQ,EACRC,EAAQ3gB,EAAO2b,WACf1L,EAAW9Q,KACX2C,EAAI3C,KAAK4B,OACTyb,EAAU,aACCkE,GACTC,EAAMrD,YAAarN,GAAYA,IAIb,iBAATlM,KACXD,EAAMC,EACNA,EAAOV,QAERU,EAAOA,GAAQ,IAEf,OAAQjC,IACPuE,EAAMmZ,EAAUte,IAAK+O,EAAUnO,GAAKiC,EAAO,cACtCsC,GAAOA,EAAIyN,QACf4M,IACAra,EAAIyN,MAAM6F,IAAK6C,GAIjB,OADAA,KACOmE,EAAM5E,QAASjY,KAGxB,IAAI8c,GAAO,sCAAwCC,OAE/CC,GAAc,MAAO,QAAS,SAAU,QAExCC,EAAW,SAAUlf,EAAMmf,GAI7B,MADAnf,GAAOmf,GAAMnf,EAC4B,SAAlC7B,EAAOihB,IAAKpf,EAAM,aAA2B7B,EAAOwH,SAAU3F,EAAK0J,cAAe1J,IAGvFqf,EAAiB,yBAIrB,WACC,GAAIC,GAAWpiB,EAASqiB,yBACvBtU,EAAMqU,EAASpc,YAAahG,EAAS6F,cAAe,QACpDoK,EAAQjQ,EAAS6F,cAAe,QAMjCoK,GAAMhD,aAAc,OAAQ,SAC5BgD,EAAMhD,aAAc,UAAW,WAC/BgD,EAAMhD,aAAc,OAAQ,KAE5Bc,EAAI/H,YAAaiK,GAIjBlP,EAAQuhB,WAAavU,EAAIwU,WAAW,GAAOA,WAAW,GAAOjP,UAAUsB,QAIvE7G,EAAIiC,UAAY,yBAChBjP,EAAQyhB,iBAAmBzU,EAAIwU,WAAW,GAAOjP,UAAUyF,eAE5D,IAAI0J,GAAe,WAInB1hB,GAAQ2hB,eAAiB,aAAeviB,EAGxC,IACCwiB,GAAY,OACZC,EAAc,uCACdC,EAAc,kCACdC,EAAiB,sBAElB,SAASC,KACR,OAAO,EAGR,QAASC,KACR,OAAO,EAGR,QAASC,KACR,IACC,MAAOjjB,GAASsU,cACf,MAAQ4O,KAOXjiB,EAAOkiB,OAENvjB,UAEAgb,IAAK,SAAU9X,EAAMsgB,EAAOlV,EAASmO,EAAMnb,GAE1C,GAAImiB,GAAaC,EAAahc,EAC7Bic,EAAQC,EAAGC,EACXC,EAASC,EAAU3e,EAAM4e,EAAYC,EACrCC,EAAWrD,EAAUte,IAAKW,EAG3B,IAAMghB,EAAN,CAKK5V,EAAQA,UACZmV,EAAcnV,EACdA,EAAUmV,EAAYnV,QACtBhN,EAAWmiB,EAAYniB,UAIlBgN,EAAQ9G,OACb8G,EAAQ9G,KAAOnG,EAAOmG,SAIhBmc,EAASO,EAASP,UACxBA,EAASO,EAASP,YAEZD,EAAcQ,EAASC,UAC7BT,EAAcQ,EAASC,OAAS,SAAUjY,GAGzC,aAAc7K,KAAWwhB,GAAgBxhB,EAAOkiB,MAAMa,YAAclY,EAAE9G,KACrE/D,EAAOkiB,MAAMc,SAASjhB,MAAOF,EAAMG,WAAcqB,SAKpD8e,GAAUA,GAAS,IAAKnX,MAAOqP,KAAiB,IAChDkI,EAAIJ,EAAMphB,MACV,OAAQwhB,IACPlc,EAAMwb,EAAerW,KAAM2W,EAAMI,QACjCxe,EAAO6e,EAAWvc,EAAI,GACtBsc,GAAetc,EAAI,IAAM,IAAKG,MAAO,KAAMjE,OAGrCwB,IAKN0e,EAAUziB,EAAOkiB,MAAMO,QAAS1e,OAGhCA,GAAS9D,EAAWwiB,EAAQQ,aAAeR,EAAQS,WAAcnf,EAGjE0e,EAAUziB,EAAOkiB,MAAMO,QAAS1e,OAGhCye,EAAYxiB,EAAOyC,QAClBsB,KAAMA,EACN6e,SAAUA,EACVxH,KAAMA,EACNnO,QAASA,EACT9G,KAAM8G,EAAQ9G,KACdlG,SAAUA,EACV2J,aAAc3J,GAAYD,EAAOgQ,KAAKhF,MAAMpB,aAAakC,KAAM7L,GAC/DkjB,UAAWR,EAAWxW,KAAK,MACzBiW,IAGIM,EAAWJ,EAAQve,MACzB2e,EAAWJ,EAAQve,MACnB2e,EAASU,cAAgB,EAGnBX,EAAQY,OAASZ,EAAQY,MAAMpiB,KAAMY,EAAMuZ,EAAMuH,EAAYN,MAAkB,GAC/ExgB,EAAKuM,kBACTvM,EAAKuM,iBAAkBrK,EAAMse,GAAa,IAKxCI,EAAQ9I,MACZ8I,EAAQ9I,IAAI1Y,KAAMY,EAAM2gB,GAElBA,EAAUvV,QAAQ9G,OACvBqc,EAAUvV,QAAQ9G,KAAO8G,EAAQ9G,OAK9BlG,EACJyiB,EAASlgB,OAAQkgB,EAASU,gBAAiB,EAAGZ,GAE9CE,EAASljB,KAAMgjB,GAIhBxiB,EAAOkiB,MAAMvjB,OAAQoF,IAAS,KAMhCwX,OAAQ,SAAU1Z,EAAMsgB,EAAOlV,EAAShN,EAAUqjB,GAEjD,GAAIjhB,GAAGkhB,EAAWld,EACjBic,EAAQC,EAAGC,EACXC,EAASC,EAAU3e,EAAM4e,EAAYC,EACrCC,EAAWrD,EAAUF,QAASzd,IAAU2d,EAAUte,IAAKW,EAExD,IAAMghB,IAAcP,EAASO,EAASP,QAAtC,CAKAH,GAAUA,GAAS,IAAKnX,MAAOqP,KAAiB,IAChDkI,EAAIJ,EAAMphB,MACV,OAAQwhB,IAMP,GALAlc,EAAMwb,EAAerW,KAAM2W,EAAMI,QACjCxe,EAAO6e,EAAWvc,EAAI,GACtBsc,GAAetc,EAAI,IAAM,IAAKG,MAAO,KAAMjE,OAGrCwB,EAAN,CAOA0e,EAAUziB,EAAOkiB,MAAMO,QAAS1e,OAChCA,GAAS9D,EAAWwiB,EAAQQ,aAAeR,EAAQS,WAAcnf,EACjE2e,EAAWJ,EAAQve,OACnBsC,EAAMA,EAAI,IAAM,GAAIyC,QAAQ,UAAY6Z,EAAWxW,KAAK,iBAAmB,WAG3EoX,EAAYlhB,EAAIqgB,EAAS3hB,MACzB,OAAQsB,IACPmgB,EAAYE,EAAUrgB,IAEfihB,GAAeV,IAAaJ,EAAUI,UACzC3V,GAAWA,EAAQ9G,OAASqc,EAAUrc,MACtCE,IAAOA,EAAIyF,KAAM0W,EAAUW,YAC3BljB,GAAYA,IAAauiB,EAAUviB,WAAyB,OAAbA,IAAqBuiB,EAAUviB,YACjFyiB,EAASlgB,OAAQH,EAAG,GAEfmgB,EAAUviB,UACdyiB,EAASU,gBAELX,EAAQlH,QACZkH,EAAQlH,OAAOta,KAAMY,EAAM2gB,GAOzBe,KAAcb,EAAS3hB,SACrB0hB,EAAQe,UAAYf,EAAQe,SAASviB,KAAMY,EAAM8gB,EAAYE,EAASC,WAAa,GACxF9iB,EAAOyjB,YAAa5hB,EAAMkC,EAAM8e,EAASC,cAGnCR,GAAQve,QAtCf,KAAMA,IAAQue,GACbtiB,EAAOkiB,MAAM3G,OAAQ1Z,EAAMkC,EAAOoe,EAAOI,GAAKtV,EAAShN,GAAU,EA0C/DD,GAAOqE,cAAeie,WACnBO,GAASC,OAChBtD,EAAUjE,OAAQ1Z,EAAM,aAI1B6hB,QAAS,SAAUxB,EAAO9G,EAAMvZ,EAAM8hB,GAErC,GAAI7hB,GAAGsL,EAAK/G,EAAKud,EAAYC,EAAQf,EAAQL,EAC5CqB,GAAcjiB,GAAQ9C,GACtBgF,EAAOnE,EAAOqB,KAAMihB,EAAO,QAAWA,EAAMne,KAAOme,EACnDS,EAAa/iB,EAAOqB,KAAMihB,EAAO,aAAgBA,EAAMiB,UAAU3c,MAAM,OAKxE,IAHA4G,EAAM/G,EAAMxE,EAAOA,GAAQ9C,EAGJ,IAAlB8C,EAAKuC,UAAoC,IAAlBvC,EAAKuC,WAK5Bwd,EAAY9V,KAAM/H,EAAO/D,EAAOkiB,MAAMa,aAItChf,EAAKtE,QAAQ,MAAQ,IAEzBkjB,EAAa5e,EAAKyC,MAAM,KACxBzC,EAAO4e,EAAWhW,QAClBgW,EAAWpgB,QAEZshB,EAAS9f,EAAKtE,QAAQ,KAAO,GAAK,KAAOsE,EAGzCme,EAAQA,EAAOliB,EAAOsD,SACrB4e,EACA,GAAIliB,GAAO+jB,MAAOhgB,EAAuB,gBAAVme,IAAsBA,GAGtDA,EAAM8B,UAAYL,EAAe,EAAI,EACrCzB,EAAMiB,UAAYR,EAAWxW,KAAK,KAClC+V,EAAM+B,aAAe/B,EAAMiB,UAC1B,GAAIra,QAAQ,UAAY6Z,EAAWxW,KAAK,iBAAmB,WAC3D,KAGD+V,EAAMvQ,OAAStO,OACT6e,EAAMlf,SACXkf,EAAMlf,OAASnB,GAIhBuZ,EAAe,MAARA,GACJ8G,GACFliB,EAAOwF,UAAW4V,GAAQ8G,IAG3BO,EAAUziB,EAAOkiB,MAAMO,QAAS1e,OAC1B4f,IAAgBlB,EAAQiB,SAAWjB,EAAQiB,QAAQ3hB,MAAOF,EAAMuZ,MAAW,GAAjF,CAMA,IAAMuI,IAAiBlB,EAAQyB,WAAalkB,EAAOiE,SAAUpC,GAAS,CAMrE,IAJA+hB,EAAanB,EAAQQ,cAAgBlf,EAC/B6d,EAAY9V,KAAM8X,EAAa7f,KACpCqJ,EAAMA,EAAIpI,YAEHoI,EAAKA,EAAMA,EAAIpI,WACtB8e,EAAUtkB,KAAM4N,GAChB/G,EAAM+G,CAIF/G,MAASxE,EAAK0J,eAAiBxM,IACnC+kB,EAAUtkB,KAAM6G,EAAI6H,aAAe7H,EAAI8d,cAAgBjlB,GAKzD4C,EAAI,CACJ,QAASsL,EAAM0W,EAAUhiB,QAAUogB,EAAMkC,uBAExClC,EAAMne,KAAOjC,EAAI,EAChB8hB,EACAnB,EAAQS,UAAYnf,EAGrB+e,GAAWtD,EAAUte,IAAKkM,EAAK,eAAoB8U,EAAMne,OAAUyb,EAAUte,IAAKkM,EAAK,UAClF0V,GACJA,EAAO/gB,MAAOqL,EAAKgO,GAIpB0H,EAASe,GAAUzW,EAAKyW,GACnBf,GAAUA,EAAO/gB,OAAS/B,EAAOye,WAAYrR,KACjD8U,EAAMvQ,OAASmR,EAAO/gB,MAAOqL,EAAKgO,GAC7B8G,EAAMvQ,UAAW,GACrBuQ,EAAMmC,iBAmCT,OA/BAnC,GAAMne,KAAOA,EAGP4f,GAAiBzB,EAAMoC,sBAErB7B,EAAQ8B,UAAY9B,EAAQ8B,SAASxiB,MAAO+hB,EAAU1b,MAAOgT,MAAW,IAC9Epb,EAAOye,WAAY5c,IAIdgiB,GAAU7jB,EAAOkD,WAAYrB,EAAMkC,MAAa/D,EAAOiE,SAAUpC,KAGrEwE,EAAMxE,EAAMgiB,GAEPxd,IACJxE,EAAMgiB,GAAW,MAIlB7jB,EAAOkiB,MAAMa,UAAYhf,EACzBlC,EAAMkC,KACN/D,EAAOkiB,MAAMa,UAAY1f,OAEpBgD,IACJxE,EAAMgiB,GAAWxd,IAMd6b,EAAMvQ,SAGdqR,SAAU,SAAUd,GAGnBA,EAAQliB,EAAOkiB,MAAMsC,IAAKtC,EAE1B,IAAIpgB,GAAGO,EAAGf,EAAKmR,EAAS+P,EACvBiC,KACA9iB,EAAOrC,EAAM2B,KAAMe,WACnB0gB,GAAalD,EAAUte,IAAK/B,KAAM,eAAoB+iB,EAAMne,UAC5D0e,EAAUziB,EAAOkiB,MAAMO,QAASP,EAAMne,SAOvC,IAJApC,EAAK,GAAKugB,EACVA,EAAMwC,eAAiBvlB,MAGlBsjB,EAAQkC,aAAelC,EAAQkC,YAAY1jB,KAAM9B,KAAM+iB,MAAY,EAAxE,CAKAuC,EAAezkB,EAAOkiB,MAAMQ,SAASzhB,KAAM9B,KAAM+iB,EAAOQ,GAGxD5gB,EAAI,CACJ,QAAS2Q,EAAUgS,EAAc3iB,QAAWogB,EAAMkC,uBAAyB,CAC1ElC,EAAM0C,cAAgBnS,EAAQ5Q,KAE9BQ,EAAI,CACJ,QAASmgB,EAAY/P,EAAQiQ,SAAUrgB,QAAW6f,EAAM2C,kCAIjD3C,EAAM+B,cAAgB/B,EAAM+B,aAAanY,KAAM0W,EAAUW,cAE9DjB,EAAMM,UAAYA,EAClBN,EAAM9G,KAAOoH,EAAUpH,KAEvB9Z,IAAStB,EAAOkiB,MAAMO,QAASD,EAAUI,eAAkBE,QAAUN,EAAUvV,SAC5ElL,MAAO0Q,EAAQ5Q,KAAMF,GAEX0B,SAAR/B,IACE4gB,EAAMvQ,OAASrQ,MAAS,IAC7B4gB,EAAMmC,iBACNnC,EAAM4C,oBAYX,MAJKrC,GAAQsC,cACZtC,EAAQsC,aAAa9jB,KAAM9B,KAAM+iB,GAG3BA,EAAMvQ,SAGd+Q,SAAU,SAAUR,EAAOQ,GAC1B,GAAI5gB,GAAGkE,EAASgf,EAAKxC,EACpBiC,KACArB,EAAgBV,EAASU,cACzBhW,EAAM8U,EAAMlf,MAKb,IAAKogB,GAAiBhW,EAAIhJ,YAAc8d,EAAMlO,QAAyB,UAAfkO,EAAMne,MAE7D,KAAQqJ,IAAQjO,KAAMiO,EAAMA,EAAIpI,YAAc7F,KAG7C,GAAKiO,EAAIsG,YAAa,GAAuB,UAAfwO,EAAMne,KAAmB,CAEtD,IADAiC,KACMlE,EAAI,EAAOshB,EAAJthB,EAAmBA,IAC/B0gB,EAAYE,EAAU5gB,GAGtBkjB,EAAMxC,EAAUviB,SAAW,IAEHoD,SAAnB2C,EAASgf,KACbhf,EAASgf,GAAQxC,EAAU5Y,aAC1B5J,EAAQglB,EAAK7lB,MAAOsa,MAAOrM,IAAS,EACpCpN,EAAO0O,KAAMsW,EAAK7lB,KAAM,MAAQiO,IAAQrM,QAErCiF,EAASgf,IACbhf,EAAQxG,KAAMgjB,EAGXxc,GAAQjF,QACZ0jB,EAAajlB,MAAOqC,KAAMuL,EAAKsV,SAAU1c,IAW7C,MAJKod,GAAgBV,EAAS3hB,QAC7B0jB,EAAajlB,MAAOqC,KAAM1C,KAAMujB,SAAUA,EAASpjB,MAAO8jB,KAGpDqB,GAIRQ,MAAO,wHAAwHze,MAAM,KAErI0e,YAEAC,UACCF,MAAO,4BAA4Bze,MAAM,KACzCmI,OAAQ,SAAUuT,EAAOkD,GAOxB,MAJoB,OAAflD,EAAMmD,QACVnD,EAAMmD,MAA6B,MAArBD,EAASE,SAAmBF,EAASE,SAAWF,EAASG,SAGjErD,IAITsD,YACCP,MAAO,uFAAuFze,MAAM,KACpGmI,OAAQ,SAAUuT,EAAOkD,GACxB,GAAIK,GAAUxX,EAAKyX,EAClB1R,EAASoR,EAASpR,MAkBnB,OAfoB,OAAfkO,EAAMyD,OAAqC,MAApBP,EAASQ,UACpCH,EAAWvD,EAAMlf,OAAOuI,eAAiBxM,EACzCkP,EAAMwX,EAAS5X,gBACf6X,EAAOD,EAASC,KAEhBxD,EAAMyD,MAAQP,EAASQ,SAAY3X,GAAOA,EAAI4X,YAAcH,GAAQA,EAAKG,YAAc,IAAQ5X,GAAOA,EAAI6X,YAAcJ,GAAQA,EAAKI,YAAc,GACnJ5D,EAAM6D,MAAQX,EAASY,SAAY/X,GAAOA,EAAIgY,WAAcP,GAAQA,EAAKO,WAAc,IAAQhY,GAAOA,EAAIiY,WAAcR,GAAQA,EAAKQ,WAAc,IAK9IhE,EAAMmD,OAAoBhiB,SAAX2Q,IACpBkO,EAAMmD,MAAmB,EAATrR,EAAa,EAAe,EAATA,EAAa,EAAe,EAATA,EAAa,EAAI,GAGjEkO,IAITsC,IAAK,SAAUtC,GACd,GAAKA,EAAOliB,EAAOsD,SAClB,MAAO4e,EAIR,IAAIpgB,GAAGqd,EAAMtc,EACZkB,EAAOme,EAAMne,KACboiB,EAAgBjE,EAChBkE,EAAUjnB,KAAK+lB,SAAUnhB,EAEpBqiB,KACLjnB,KAAK+lB,SAAUnhB,GAASqiB,EACvBzE,EAAY7V,KAAM/H,GAAS5E,KAAKqmB,WAChC9D,EAAU5V,KAAM/H,GAAS5E,KAAKgmB,aAGhCtiB,EAAOujB,EAAQnB,MAAQ9lB,KAAK8lB,MAAM1lB,OAAQ6mB,EAAQnB,OAAU9lB,KAAK8lB,MAEjE/C,EAAQ,GAAIliB,GAAO+jB,MAAOoC,GAE1BrkB,EAAIe,EAAK9B,MACT,OAAQe,IACPqd,EAAOtc,EAAMf,GACbogB,EAAO/C,GAASgH,EAAehH,EAehC,OAVM+C,GAAMlf,SACXkf,EAAMlf,OAASjE,GAKe,IAA1BmjB,EAAMlf,OAAOoB,WACjB8d,EAAMlf,OAASkf,EAAMlf,OAAOgC,YAGtBohB,EAAQzX,OAASyX,EAAQzX,OAAQuT,EAAOiE,GAAkBjE,GAGlEO,SACC4D,MAECnC,UAAU,GAEX9Q,OAECsQ,QAAS,WACR,MAAKvkB,QAAS6iB,KAAuB7iB,KAAKiU,OACzCjU,KAAKiU,SACE,GAFR,QAKD6P,aAAc,WAEfqD,MACC5C,QAAS,WACR,MAAKvkB,QAAS6iB,KAAuB7iB,KAAKmnB,MACzCnnB,KAAKmnB,QACE,GAFR,QAKDrD,aAAc,YAEfsD,OAEC7C,QAAS,WACR,MAAmB,aAAdvkB,KAAK4E,MAAuB5E,KAAKonB,OAASvmB,EAAOoF,SAAUjG,KAAM,UACrEA,KAAKonB,SACE,GAFR,QAODhC,SAAU,SAAUrC,GACnB,MAAOliB,GAAOoF,SAAU8c,EAAMlf,OAAQ,OAIxCwjB,cACCzB,aAAc,SAAU7C,GAID7e,SAAjB6e,EAAMvQ,QAAwBuQ,EAAMiE,gBACxCjE,EAAMiE,cAAcM,YAAcvE,EAAMvQ,WAM5C+U,SAAU,SAAU3iB,EAAMlC,EAAMqgB,EAAOyE,GAItC,GAAI9b,GAAI7K,EAAOyC,OACd,GAAIzC,GAAO+jB,MACX7B,GAECne,KAAMA,EACN6iB,aAAa,EACbT,kBAGGQ,GACJ3mB,EAAOkiB,MAAMwB,QAAS7Y,EAAG,KAAMhJ,GAE/B7B,EAAOkiB,MAAMc,SAAS/hB,KAAMY,EAAMgJ,GAE9BA,EAAEyZ,sBACNpC,EAAMmC,mBAKTrkB,EAAOyjB,YAAc,SAAU5hB,EAAMkC,EAAM+e,GACrCjhB,EAAKoc,qBACTpc,EAAKoc,oBAAqBla,EAAM+e,GAAQ,IAI1C9iB,EAAO+jB,MAAQ,SAAUnhB,EAAKqiB,GAE7B,MAAO9lB,gBAAgBa,GAAO+jB,OAKzBnhB,GAAOA,EAAImB,MACf5E,KAAKgnB,cAAgBvjB,EACrBzD,KAAK4E,KAAOnB,EAAImB,KAIhB5E,KAAKmlB,mBAAqB1hB,EAAIikB,kBACHxjB,SAAzBT,EAAIikB,kBAEJjkB,EAAI6jB,eAAgB,EACrB3E,EACAC,GAID5iB,KAAK4E,KAAOnB,EAIRqiB,GACJjlB,EAAOyC,OAAQtD,KAAM8lB,GAItB9lB,KAAK2nB,UAAYlkB,GAAOA,EAAIkkB,WAAa9mB,EAAOsG,WAGhDnH,KAAMa,EAAOsD,UAAY,IA/BjB,GAAItD,GAAO+jB,MAAOnhB,EAAKqiB,IAoChCjlB,EAAO+jB,MAAMnjB,WACZ0jB,mBAAoBvC,EACpBqC,qBAAsBrC,EACtB8C,8BAA+B9C,EAE/BsC,eAAgB,WACf,GAAIxZ,GAAI1L,KAAKgnB,aAEbhnB,MAAKmlB,mBAAqBxC,EAErBjX,GAAKA,EAAEwZ,gBACXxZ,EAAEwZ,kBAGJS,gBAAiB,WAChB,GAAIja,GAAI1L,KAAKgnB,aAEbhnB,MAAKilB,qBAAuBtC,EAEvBjX,GAAKA,EAAEia,iBACXja,EAAEia,mBAGJiC,yBAA0B,WACzB,GAAIlc,GAAI1L,KAAKgnB,aAEbhnB,MAAK0lB,8BAAgC/C,EAEhCjX,GAAKA,EAAEkc,0BACXlc,EAAEkc,2BAGH5nB,KAAK2lB,oBAMP9kB,EAAOyB,MACNulB,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,cACZ,SAAUC,EAAM5C,GAClBxkB,EAAOkiB,MAAMO,QAAS2E,IACrBnE,aAAcuB,EACdtB,SAAUsB,EAEV1B,OAAQ,SAAUZ,GACjB,GAAI5gB,GACH0B,EAAS7D,KACTkoB,EAAUnF,EAAMoF,cAChB9E,EAAYN,EAAMM,SASnB,SALM6E,GAAYA,IAAYrkB,IAAWhD,EAAOwH,SAAUxE,EAAQqkB,MACjEnF,EAAMne,KAAOye,EAAUI,SACvBthB,EAAMkhB,EAAUvV,QAAQlL,MAAO5C,KAAM6C,WACrCkgB,EAAMne,KAAOygB,GAEPljB,MAOJxB,EAAQ2hB,gBACbzhB,EAAOyB,MAAO2R,MAAO,UAAWkT,KAAM,YAAc,SAAUc,EAAM5C,GAGnE,GAAIvX,GAAU,SAAUiV,GACtBliB,EAAOkiB,MAAMwE,SAAUlC,EAAKtC,EAAMlf,OAAQhD,EAAOkiB,MAAMsC,IAAKtC,IAAS,GAGvEliB,GAAOkiB,MAAMO,QAAS+B,IACrBnB,MAAO,WACN,GAAIpV,GAAM9O,KAAKoM,eAAiBpM,KAC/BooB,EAAW/H,EAAUpB,OAAQnQ,EAAKuW,EAE7B+C,IACLtZ,EAAIG,iBAAkBgZ,EAAMna,GAAS,GAEtCuS,EAAUpB,OAAQnQ,EAAKuW,GAAO+C,GAAY,GAAM,IAEjD/D,SAAU,WACT,GAAIvV,GAAM9O,KAAKoM,eAAiBpM,KAC/BooB,EAAW/H,EAAUpB,OAAQnQ,EAAKuW,GAAQ,CAErC+C,GAKL/H,EAAUpB,OAAQnQ,EAAKuW,EAAK+C,IAJ5BtZ,EAAIgQ,oBAAqBmJ,EAAMna,GAAS,GACxCuS,EAAUjE,OAAQtN,EAAKuW,QAU5BxkB,EAAOG,GAAGsC,QAET+kB,GAAI,SAAUrF,EAAOliB,EAAUmb,EAAMjb,EAAiBsnB,GACrD,GAAIC,GAAQ3jB,CAGZ,IAAsB,gBAAVoe,GAAqB,CAEP,gBAAbliB,KAEXmb,EAAOA,GAAQnb,EACfA,EAAWoD,OAEZ,KAAMU,IAAQoe,GACbhjB,KAAKqoB,GAAIzjB,EAAM9D,EAAUmb,EAAM+G,EAAOpe,GAAQ0jB,EAE/C,OAAOtoB,MAmBR,GAhBa,MAARic,GAAsB,MAANjb,GAEpBA,EAAKF,EACLmb,EAAOnb,EAAWoD,QACD,MAANlD,IACc,gBAAbF,IAEXE,EAAKib,EACLA,EAAO/X,SAGPlD,EAAKib,EACLA,EAAOnb,EACPA,EAAWoD,SAGRlD,KAAO,EACXA,EAAK4hB,MACC,KAAM5hB,EACZ,MAAOhB,KAaR,OAVa,KAARsoB,IACJC,EAASvnB,EACTA,EAAK,SAAU+hB,GAGd,MADAliB,KAAS+d,IAAKmE,GACPwF,EAAO3lB,MAAO5C,KAAM6C,YAG5B7B,EAAGgG,KAAOuhB,EAAOvhB,OAAUuhB,EAAOvhB,KAAOnG,EAAOmG,SAE1ChH,KAAKsC,KAAM,WACjBzB,EAAOkiB,MAAMvI,IAAKxa,KAAMgjB,EAAOhiB,EAAIib,EAAMnb,MAG3CwnB,IAAK,SAAUtF,EAAOliB,EAAUmb,EAAMjb,GACrC,MAAOhB,MAAKqoB,GAAIrF,EAAOliB,EAAUmb,EAAMjb,EAAI,IAE5C4d,IAAK,SAAUoE,EAAOliB,EAAUE,GAC/B,GAAIqiB,GAAWze,CACf,IAAKoe,GAASA,EAAMkC,gBAAkBlC,EAAMK,UAQ3C,MANAA,GAAYL,EAAMK,UAClBxiB,EAAQmiB,EAAMuC,gBAAiB3G,IAC9ByE,EAAUW,UAAYX,EAAUI,SAAW,IAAMJ,EAAUW,UAAYX,EAAUI,SACjFJ,EAAUviB,SACVuiB,EAAUvV,SAEJ9N,IAER,IAAsB,gBAAVgjB,GAAqB,CAEhC,IAAMpe,IAAQoe,GACbhjB,KAAK4e,IAAKha,EAAM9D,EAAUkiB,EAAOpe,GAElC,OAAO5E,MAUR,OARKc,KAAa,GAA6B,kBAAbA,MAEjCE,EAAKF,EACLA,EAAWoD,QAEPlD,KAAO,IACXA,EAAK4hB,GAEC5iB,KAAKsC,KAAK,WAChBzB,EAAOkiB,MAAM3G,OAAQpc,KAAMgjB,EAAOhiB,EAAIF,MAIxCyjB,QAAS,SAAU3f,EAAMqX,GACxB,MAAOjc,MAAKsC,KAAK,WAChBzB,EAAOkiB,MAAMwB,QAAS3f,EAAMqX,EAAMjc,SAGpC2e,eAAgB,SAAU/Z,EAAMqX,GAC/B,GAAIvZ,GAAO1C,KAAK,EAChB,OAAK0C,GACG7B,EAAOkiB,MAAMwB,QAAS3f,EAAMqX,EAAMvZ,GAAM,GADhD,SAOF,IACC8lB,IAAY,0EACZC,GAAW,YACXC,GAAQ,YACRC,GAAe,0BAEfC,GAAW,oCACXC,GAAc,4BACdC,GAAoB,cACpBC,GAAe,2CAGfC,IAGCC,QAAU,EAAG,+BAAgC,aAE7CC,OAAS,EAAG,UAAW,YACvBC,KAAO,EAAG,oBAAqB,uBAC/BC,IAAM,EAAG,iBAAkB,oBAC3BC,IAAM,EAAG,qBAAsB,yBAE/BjE,UAAY,EAAG,GAAI,IAIrB4D,IAAQM,SAAWN,GAAQC,OAE3BD,GAAQO,MAAQP,GAAQQ,MAAQR,GAAQS,SAAWT,GAAQU,QAAUV,GAAQE,MAC7EF,GAAQW,GAAKX,GAAQK,EAIrB,SAASO,IAAoBlnB,EAAMmnB,GAClC,MAAOhpB,GAAOoF,SAAUvD,EAAM,UAC7B7B,EAAOoF,SAA+B,KAArB4jB,EAAQ5kB,SAAkB4kB,EAAUA,EAAQtY,WAAY,MAEzE7O,EAAK8J,qBAAqB,SAAS,IAClC9J,EAAKkD,YAAalD,EAAK0J,cAAc3G,cAAc,UACpD/C,EAIF,QAASonB,IAAepnB,GAEvB,MADAA,GAAKkC,MAAsC,OAA9BlC,EAAKkK,aAAa,SAAoB,IAAMlK,EAAKkC,KACvDlC,EAER,QAASqnB,IAAernB,GACvB,GAAImJ,GAAQid,GAAkBzc,KAAM3J,EAAKkC,KAQzC,OANKiH,GACJnJ,EAAKkC,KAAOiH,EAAO,GAEnBnJ,EAAKyK,gBAAgB,QAGfzK,EAIR,QAASsnB,IAAe9nB,EAAO+nB,GAI9B,IAHA,GAAItnB,GAAI,EACPwX,EAAIjY,EAAMN,OAECuY,EAAJxX,EAAOA,IACd0d,EAAUN,IACT7d,EAAOS,GAAK,cAAesnB,GAAe5J,EAAUte,IAAKkoB,EAAatnB,GAAK,eAK9E,QAASunB,IAAgBzmB,EAAK0mB,GAC7B,GAAIxnB,GAAGwX,EAAGvV,EAAMwlB,EAAUC,EAAUC,EAAUC,EAAUpH,CAExD,IAAuB,IAAlBgH,EAAKllB,SAAV,CAKA,GAAKob,EAAUF,QAAS1c,KACvB2mB,EAAW/J,EAAUpB,OAAQxb,GAC7B4mB,EAAWhK,EAAUN,IAAKoK,EAAMC,GAChCjH,EAASiH,EAASjH,QAEJ,OACNkH,GAAS1G,OAChB0G,EAASlH,SAET,KAAMve,IAAQue,GACb,IAAMxgB,EAAI,EAAGwX,EAAIgJ,EAAQve,GAAOhD,OAAYuY,EAAJxX,EAAOA,IAC9C9B,EAAOkiB,MAAMvI,IAAK2P,EAAMvlB,EAAMue,EAAQve,GAAQjC,IAO7C2d,EAAUH,QAAS1c,KACvB6mB,EAAWhK,EAAUrB,OAAQxb,GAC7B8mB,EAAW1pB,EAAOyC,UAAYgnB,GAE9BhK,EAAUP,IAAKoK,EAAMI,KAIvB,QAASC,IAAQzpB,EAAS4O,GACzB,GAAIxN,GAAMpB,EAAQyL,qBAAuBzL,EAAQyL,qBAAsBmD,GAAO,KAC5E5O,EAAQkM,iBAAmBlM,EAAQkM,iBAAkB0C,GAAO,OAG9D,OAAezL,UAARyL,GAAqBA,GAAO9O,EAAOoF,SAAUlF,EAAS4O,GAC5D9O,EAAOuB,OAASrB,GAAWoB,GAC3BA,EAIF,QAASsoB,IAAUhnB,EAAK0mB,GACvB,GAAIlkB,GAAWkkB,EAAKlkB,SAASC,aAGX,WAAbD,GAAwB8b,EAAepV,KAAMlJ,EAAImB,MACrDulB,EAAK3V,QAAU/Q,EAAI+Q,SAGK,UAAbvO,GAAqC,aAAbA,KACnCkkB,EAAKxR,aAAelV,EAAIkV,cAI1B9X,EAAOyC,QACNM,MAAO,SAAUlB,EAAMgoB,EAAeC,GACrC,GAAIhoB,GAAGwX,EAAGyQ,EAAaC,EACtBjnB,EAAQlB,EAAKyf,WAAW,GACxB2I,EAASjqB,EAAOwH,SAAU3F,EAAK0J,cAAe1J,EAG/C,MAAM/B,EAAQyhB,gBAAsC,IAAlB1f,EAAKuC,UAAoC,KAAlBvC,EAAKuC,UAC3DpE,EAAOgY,SAAUnW,IAMnB,IAHAmoB,EAAeL,GAAQ5mB,GACvBgnB,EAAcJ,GAAQ9nB,GAEhBC,EAAI,EAAGwX,EAAIyQ,EAAYhpB,OAAYuY,EAAJxX,EAAOA,IAC3C8nB,GAAUG,EAAajoB,GAAKkoB,EAAcloB,GAK5C,IAAK+nB,EACJ,GAAKC,EAIJ,IAHAC,EAAcA,GAAeJ,GAAQ9nB,GACrCmoB,EAAeA,GAAgBL,GAAQ5mB,GAEjCjB,EAAI,EAAGwX,EAAIyQ,EAAYhpB,OAAYuY,EAAJxX,EAAOA,IAC3CunB,GAAgBU,EAAajoB,GAAKkoB,EAAcloB,QAGjDunB,IAAgBxnB,EAAMkB,EAWxB,OANAinB,GAAeL,GAAQ5mB,EAAO,UACzBinB,EAAajpB,OAAS,GAC1BooB,GAAea,GAAeC,GAAUN,GAAQ9nB,EAAM,WAIhDkB,GAGRmnB,cAAe,SAAU7oB,EAAOnB,EAASiqB,EAASC,GAOjD,IANA,GAAIvoB,GAAMwE,EAAKyI,EAAKub,EAAM7iB,EAAUnF,EACnC8e,EAAWjhB,EAAQkhB,yBACnBkJ,KACAxoB,EAAI,EACJwX,EAAIjY,EAAMN,OAECuY,EAAJxX,EAAOA,IAGd,GAFAD,EAAOR,EAAOS,GAETD,GAAiB,IAATA,EAGZ,GAA6B,WAAxB7B,EAAO+D,KAAMlC,GAGjB7B,EAAOuB,MAAO+oB,EAAOzoB,EAAKuC,UAAavC,GAASA,OAG1C,IAAMgmB,GAAM/b,KAAMjK,GAIlB,CACNwE,EAAMA,GAAO8a,EAASpc,YAAa7E,EAAQ0E,cAAc,QAGzDkK,GAAQ8Y,GAASpc,KAAM3J,KAAY,GAAI,KAAQ,GAAIwD,cACnDglB,EAAOlC,GAASrZ,IAASqZ,GAAQ5D,SACjCle,EAAI0I,UAAYsb,EAAM,GAAMxoB,EAAK4B,QAASkkB,GAAW,aAAgB0C,EAAM,GAG3EhoB,EAAIgoB,EAAM,EACV,OAAQhoB,IACPgE,EAAMA,EAAIgM,SAKXrS,GAAOuB,MAAO+oB,EAAOjkB,EAAIuE,YAGzBvE,EAAM8a,EAASzQ,WAGfrK,EAAIoK,YAAc,OAzBlB6Z,GAAM9qB,KAAMU,EAAQqqB,eAAgB1oB,GA+BvCsf,GAAS1Q,YAAc,GAEvB3O,EAAI,CACJ,OAASD,EAAOyoB,EAAOxoB,KAItB,KAAKsoB,GAAmD,KAAtCpqB,EAAO2F,QAAS9D,EAAMuoB,MAIxC5iB,EAAWxH,EAAOwH,SAAU3F,EAAK0J,cAAe1J,GAGhDwE,EAAMsjB,GAAQxI,EAASpc,YAAalD,GAAQ,UAGvC2F,GACJ2hB,GAAe9iB,GAIX8jB,GAAU,CACd9nB,EAAI,CACJ,OAASR,EAAOwE,EAAKhE,KACf2lB,GAAYlc,KAAMjK,EAAKkC,MAAQ,KACnComB,EAAQ3qB,KAAMqC,GAMlB,MAAOsf,IAGRqJ,UAAW,SAAUnpB,GAKpB,IAJA,GAAI+Z,GAAMvZ,EAAMkC,EAAM0I,EACrBgW,EAAUziB,EAAOkiB,MAAMO,QACvB3gB,EAAI,EAE2BuB,UAAvBxB,EAAOR,EAAOS,IAAoBA,IAAM,CAChD,GAAK9B,EAAOye,WAAY5c,KACvB4K,EAAM5K,EAAM2d,EAAUlc,SAEjBmJ,IAAQ2O,EAAOoE,EAAUhT,MAAOC,KAAS,CAC7C,GAAK2O,EAAKkH,OACT,IAAMve,IAAQqX,GAAKkH,OACbG,EAAS1e,GACb/D,EAAOkiB,MAAM3G,OAAQ1Z,EAAMkC,GAI3B/D,EAAOyjB,YAAa5hB,EAAMkC,EAAMqX,EAAK0H,OAInCtD,GAAUhT,MAAOC,UAEd+S,GAAUhT,MAAOC,SAKpBgT,GAAUjT,MAAO3K,EAAM4d,EAAUnc,cAK3CtD,EAAOG,GAAGsC,QACToC,KAAM,SAAUS,GACf,MAAO8Y,GAAQjf,KAAM,SAAUmG,GAC9B,MAAiBjC,UAAViC,EACNtF,EAAO6E,KAAM1F,MACbA,KAAK2U,QAAQrS,KAAK,YACM,IAAlBtC,KAAKiF,UAAoC,KAAlBjF,KAAKiF,UAAqC,IAAlBjF,KAAKiF,YACxDjF,KAAKsR,YAAcnL,MAGpB,KAAMA,EAAOtD,UAAUjB,SAG3B0pB,OAAQ,WACP,MAAOtrB,MAAKurB,SAAU1oB,UAAW,SAAUH,GAC1C,GAAuB,IAAlB1C,KAAKiF,UAAoC,KAAlBjF,KAAKiF,UAAqC,IAAlBjF,KAAKiF,SAAiB,CACzE,GAAIpB,GAAS+lB,GAAoB5pB,KAAM0C,EACvCmB,GAAO+B,YAAalD,OAKvB8oB,QAAS,WACR,MAAOxrB,MAAKurB,SAAU1oB,UAAW,SAAUH,GAC1C,GAAuB,IAAlB1C,KAAKiF,UAAoC,KAAlBjF,KAAKiF,UAAqC,IAAlBjF,KAAKiF,SAAiB,CACzE,GAAIpB,GAAS+lB,GAAoB5pB,KAAM0C,EACvCmB,GAAO4nB,aAAc/oB,EAAMmB,EAAO0N,gBAKrCma,OAAQ,WACP,MAAO1rB,MAAKurB,SAAU1oB,UAAW,SAAUH,GACrC1C,KAAK6F,YACT7F,KAAK6F,WAAW4lB,aAAc/oB,EAAM1C,SAKvC2rB,MAAO,WACN,MAAO3rB,MAAKurB,SAAU1oB,UAAW,SAAUH,GACrC1C,KAAK6F,YACT7F,KAAK6F,WAAW4lB,aAAc/oB,EAAM1C,KAAKoO,gBAK5CgO,OAAQ,SAAUtb,EAAU8qB,GAK3B,IAJA,GAAIlpB,GACHR,EAAQpB,EAAWD,EAAO2O,OAAQ1O,EAAUd,MAASA,KACrD2C,EAAI,EAEwB,OAApBD,EAAOR,EAAMS,IAAaA,IAC5BipB,GAA8B,IAAlBlpB,EAAKuC,UACtBpE,EAAOwqB,UAAWb,GAAQ9nB,IAGtBA,EAAKmD,aACJ+lB,GAAY/qB,EAAOwH,SAAU3F,EAAK0J,cAAe1J,IACrDsnB,GAAeQ,GAAQ9nB,EAAM,WAE9BA,EAAKmD,WAAWC,YAAapD,GAI/B,OAAO1C,OAGR2U,MAAO,WAIN,IAHA,GAAIjS,GACHC,EAAI,EAEuB,OAAnBD,EAAO1C,KAAK2C,IAAaA,IACV,IAAlBD,EAAKuC,WAGTpE,EAAOwqB,UAAWb,GAAQ9nB,GAAM,IAGhCA,EAAK4O,YAAc,GAIrB,OAAOtR,OAGR4D,MAAO,SAAU8mB,EAAeC,GAI/B,MAHAD,GAAiC,MAAjBA,GAAwB,EAAQA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzD3qB,KAAKyC,IAAI,WACf,MAAO5B,GAAO+C,MAAO5D,KAAM0qB,EAAeC,MAI5CkB,KAAM,SAAU1lB,GACf,MAAO8Y,GAAQjf,KAAM,SAAUmG,GAC9B,GAAIzD,GAAO1C,KAAM,OAChB2C,EAAI,EACJwX,EAAIna,KAAK4B,MAEV,IAAesC,SAAViC,GAAyC,IAAlBzD,EAAKuC,SAChC,MAAOvC,GAAKkN,SAIb,IAAsB,gBAAVzJ,KAAuBwiB,GAAahc,KAAMxG,KACpD6iB,IAAWP,GAASpc,KAAMlG,KAAa,GAAI,KAAQ,GAAID,eAAkB,CAE1EC,EAAQA,EAAM7B,QAASkkB,GAAW,YAElC,KACC,KAAYrO,EAAJxX,EAAOA,IACdD,EAAO1C,KAAM2C,OAGU,IAAlBD,EAAKuC,WACTpE,EAAOwqB,UAAWb,GAAQ9nB,GAAM,IAChCA,EAAKkN,UAAYzJ,EAInBzD,GAAO,EAGN,MAAOgJ,KAGLhJ,GACJ1C,KAAK2U,QAAQ2W,OAAQnlB,IAEpB,KAAMA,EAAOtD,UAAUjB,SAG3BkqB,YAAa,WACZ,GAAI/kB,GAAMlE,UAAW,EAcrB,OAXA7C,MAAKurB,SAAU1oB,UAAW,SAAUH,GACnCqE,EAAM/G,KAAK6F,WAEXhF,EAAOwqB,UAAWb,GAAQxqB,OAErB+G,GACJA,EAAIglB,aAAcrpB,EAAM1C,QAKnB+G,IAAQA,EAAInF,QAAUmF,EAAI9B,UAAYjF,KAAOA,KAAKoc,UAG1D4P,OAAQ,SAAUlrB,GACjB,MAAOd,MAAKoc,OAAQtb,GAAU,IAG/ByqB,SAAU,SAAU/oB,EAAMD,GAGzBC,EAAOpC,EAAOwC,SAAWJ,EAEzB,IAAIwf,GAAUlf,EAAOkoB,EAASiB,EAAYtd,EAAMG,EAC/CnM,EAAI,EACJwX,EAAIna,KAAK4B,OACTme,EAAM/f,KACNksB,EAAW/R,EAAI,EACfhU,EAAQ3D,EAAM,GACduB,EAAalD,EAAOkD,WAAYoC,EAGjC,IAAKpC,GACDoW,EAAI,GAAsB,gBAAVhU,KAChBxF,EAAQuhB,YAAc0G,GAASjc,KAAMxG,GACxC,MAAOnG,MAAKsC,KAAK,SAAUgY,GAC1B,GAAInB,GAAO4G,EAAIhd,GAAIuX,EACdvW,KACJvB,EAAM,GAAM2D,EAAMrE,KAAM9B,KAAMsa,EAAOnB,EAAK0S,SAE3C1S,EAAKoS,SAAU/oB,EAAMD,IAIvB,IAAK4X,IACJ6H,EAAWnhB,EAAOkqB,cAAevoB,EAAMxC,KAAM,GAAIoM,eAAe,EAAOpM,MACvE8C,EAAQkf,EAASzQ,WAEmB,IAA/ByQ,EAASvW,WAAW7J,SACxBogB,EAAWlf,GAGPA,GAAQ,CAMZ,IALAkoB,EAAUnqB,EAAO4B,IAAK+nB,GAAQxI,EAAU,UAAY8H,IACpDmC,EAAajB,EAAQppB,OAITuY,EAAJxX,EAAOA,IACdgM,EAAOqT,EAEFrf,IAAMupB,IACVvd,EAAO9N,EAAO+C,MAAO+K,GAAM,GAAM,GAG5Bsd,GAGJprB,EAAOuB,MAAO4oB,EAASR,GAAQ7b,EAAM,YAIvCpM,EAAST,KAAM9B,KAAM2C,GAAKgM,EAAMhM,EAGjC,IAAKspB,EAOJ,IANAnd,EAAMkc,EAASA,EAAQppB,OAAS,GAAIwK,cAGpCvL,EAAO4B,IAAKuoB,EAASjB,IAGfpnB,EAAI,EAAOspB,EAAJtpB,EAAgBA,IAC5BgM,EAAOqc,EAASroB,GACXkmB,GAAYlc,KAAMgC,EAAK/J,MAAQ,MAClCyb,EAAUpB,OAAQtQ,EAAM,eAAkB9N,EAAOwH,SAAUyG,EAAKH,KAE5DA,EAAKlL,IAEJ5C,EAAOsrB,UACXtrB,EAAOsrB,SAAUxd,EAAKlL,KAGvB5C,EAAOsE,WAAYwJ,EAAK2C,YAAYhN,QAASykB,GAAc,MAQjE,MAAO/oB,SAITa,EAAOyB,MACN8pB,SAAU,SACVC,UAAW,UACXZ,aAAc,SACda,YAAa,QACbC,WAAY,eACV,SAAU/oB,EAAMyiB,GAClBplB,EAAOG,GAAIwC,GAAS,SAAU1C,GAO7B,IANA,GAAIoB,GACHC,KACAqqB,EAAS3rB,EAAQC,GACjBkC,EAAOwpB,EAAO5qB,OAAS,EACvBe,EAAI,EAEQK,GAALL,EAAWA,IAClBT,EAAQS,IAAMK,EAAOhD,KAAOA,KAAK4D,OAAO,GACxC/C,EAAQ2rB,EAAQ7pB,IAAOsjB,GAAY/jB,GAInC7B,EAAKuC,MAAOT,EAAKD,EAAMH,MAGxB,OAAO/B,MAAKiC,UAAWE,KAKzB,IAAIsqB,IACHC,KAQD,SAASC,IAAenpB,EAAMsL,GAC7B,GAAI8d,GACHlqB,EAAO7B,EAAQiO,EAAIrJ,cAAejC,IAAS4oB,SAAUtd,EAAIyX,MAGzDsG,EAAU9sB,EAAO+sB,0BAA6BF,EAAQ7sB,EAAO+sB,wBAAyBpqB,EAAM,KAI3FkqB,EAAMC,QAAUhsB,EAAOihB,IAAKpf,EAAM,GAAK,UAMzC,OAFAA,GAAKspB,SAEEa,EAOR,QAASE,IAAgB9mB,GACxB,GAAI6I,GAAMlP,EACTitB,EAAUH,GAAazmB,EA0BxB,OAxBM4mB,KACLA,EAAUF,GAAe1mB,EAAU6I,GAGlB,SAAZ+d,GAAuBA,IAG3BJ,IAAUA,IAAU5rB,EAAQ,mDAAoDurB,SAAUtd,EAAIJ,iBAG9FI,EAAM2d,GAAQ,GAAIzR,gBAGlBlM,EAAIke,QACJle,EAAIme,QAEJJ,EAAUF,GAAe1mB,EAAU6I,GACnC2d,GAAOT,UAIRU,GAAazmB,GAAa4mB,GAGpBA,EAER,GAAIK,IAAU,UAEVC,GAAY,GAAIxjB,QAAQ,KAAO8X,EAAO,kBAAmB,KAEzD2L,GAAY,SAAU1qB,GAIxB,MAAKA,GAAK0J,cAAc2C,YAAYse,OAC5B3qB,EAAK0J,cAAc2C,YAAYue,iBAAkB5qB,EAAM,MAGxD3C,EAAOutB,iBAAkB5qB,EAAM,MAKxC,SAAS6qB,IAAQ7qB,EAAMc,EAAMgqB,GAC5B,GAAIC,GAAOC,EAAUC,EAAUxrB,EAC9ByqB,EAAQlqB,EAAKkqB,KAsCd,OApCAY,GAAWA,GAAYJ,GAAW1qB,GAI7B8qB,IACJrrB,EAAMqrB,EAASI,iBAAkBpqB,IAAUgqB,EAAUhqB,IAGjDgqB,IAES,KAARrrB,GAAetB,EAAOwH,SAAU3F,EAAK0J,cAAe1J,KACxDP,EAAMtB,EAAO+rB,MAAOlqB,EAAMc,IAOtB2pB,GAAUxgB,KAAMxK,IAAS+qB,GAAQvgB,KAAMnJ,KAG3CiqB,EAAQb,EAAMa,MACdC,EAAWd,EAAMc,SACjBC,EAAWf,EAAMe,SAGjBf,EAAMc,SAAWd,EAAMe,SAAWf,EAAMa,MAAQtrB,EAChDA,EAAMqrB,EAASC,MAGfb,EAAMa,MAAQA,EACdb,EAAMc,SAAWA,EACjBd,EAAMe,SAAWA,IAIJzpB,SAAR/B,EAGNA,EAAM,GACNA,EAIF,QAAS0rB,IAAcC,EAAaC,GAEnC,OACChsB,IAAK,WACJ,MAAK+rB,gBAGG9tB,MAAK+B,KAKL/B,KAAK+B,IAAMgsB,GAAQnrB,MAAO5C,KAAM6C,cAM3C,WACC,GAAImrB,GAAkBC,EACrBhmB,EAAUrI,EAAS8O,gBACnBwf,EAAYtuB,EAAS6F,cAAe,OACpCkI,EAAM/N,EAAS6F,cAAe,MAE/B,IAAMkI,EAAIif,MAAV,CAMAjf,EAAIif,MAAMuB,eAAiB,cAC3BxgB,EAAIwU,WAAW,GAAOyK,MAAMuB,eAAiB,GAC7CxtB,EAAQytB,gBAA+C,gBAA7BzgB,EAAIif,MAAMuB,eAEpCD,EAAUtB,MAAMyB,QAAU,gFAE1BH,EAAUtoB,YAAa+H,EAIvB,SAAS2gB,KACR3gB,EAAIif,MAAMyB,QAGT,uKAGD1gB,EAAIiC,UAAY,GAChB3H,EAAQrC,YAAasoB,EAErB,IAAIK,GAAWxuB,EAAOutB,iBAAkB3f,EAAK,KAC7CqgB,GAAoC,OAAjBO,EAASvf,IAC5Bif,EAA0C,QAAnBM,EAASd,MAEhCxlB,EAAQnC,YAAaooB,GAKjBnuB,EAAOutB,kBACXzsB,EAAOyC,OAAQ3C,GACd6tB,cAAe,WAMd,MADAF,KACON,GAERS,kBAAmB,WAIlB,MAH6B,OAAxBR,GACJK,IAEML,GAERS,oBAAqB,WAOpB,GAAIvsB,GACHwsB,EAAYhhB,EAAI/H,YAAahG,EAAS6F,cAAe,OAiBtD,OAdAkpB,GAAU/B,MAAMyB,QAAU1gB,EAAIif,MAAMyB,QAGnC,8HAEDM,EAAU/B,MAAMgC,YAAcD,EAAU/B,MAAMa,MAAQ,IACtD9f,EAAIif,MAAMa,MAAQ,MAClBxlB,EAAQrC,YAAasoB,GAErB/rB,GAAO6C,WAAYjF,EAAOutB,iBAAkBqB,EAAW,MAAOC,aAE9D3mB,EAAQnC,YAAaooB,GACrBvgB,EAAI7H,YAAa6oB,GAEVxsB,SAQXtB,EAAOguB,KAAO,SAAUnsB,EAAMa,EAAShB,EAAUC,GAChD,GAAIL,GAAKqB,EACRwI,IAGD,KAAMxI,IAAQD,GACbyI,EAAKxI,GAASd,EAAKkqB,MAAOppB,GAC1Bd,EAAKkqB,MAAOppB,GAASD,EAASC,EAG/BrB,GAAMI,EAASK,MAAOF,EAAMF,MAG5B,KAAMgB,IAAQD,GACbb,EAAKkqB,MAAOppB,GAASwI,EAAKxI,EAG3B,OAAOrB,GAIR,IAGC2sB,IAAe,4BACfC,GAAY,GAAIplB,QAAQ,KAAO8X,EAAO,SAAU,KAChDuN,GAAU,GAAIrlB,QAAQ,YAAc8X,EAAO,IAAK,KAEhDwN,IAAYC,SAAU,WAAYC,WAAY,SAAUtC,QAAS,SACjEuC,IACCC,cAAe,IACfC,WAAY,OAGbC,IAAgB,SAAU,IAAK,MAAO,KAGvC,SAASC,IAAgB5C,EAAOppB,GAG/B,GAAKA,IAAQopB,GACZ,MAAOppB,EAIR,IAAIisB,GAAUjsB,EAAK,GAAGhC,cAAgBgC,EAAKrD,MAAM,GAChDuvB,EAAWlsB,EACXb,EAAI4sB,GAAY3tB,MAEjB,OAAQe,IAEP,GADAa,EAAO+rB,GAAa5sB,GAAM8sB,EACrBjsB,IAAQopB,GACZ,MAAOppB,EAIT,OAAOksB,GAGR,QAASC,IAAmBjtB,EAAMyD,EAAOypB,GACxC,GAAI/oB,GAAUkoB,GAAU1iB,KAAMlG,EAC9B,OAAOU,GAENzC,KAAKyrB,IAAK,EAAGhpB,EAAS,IAAQ+oB,GAAY,KAAU/oB,EAAS,IAAO,MACpEV,EAGF,QAAS2pB,IAAsBptB,EAAMc,EAAMusB,EAAOC,EAAaC,GAS9D,IARA,GAAIttB,GAAIotB,KAAYC,EAAc,SAAW,WAE5C,EAES,UAATxsB,EAAmB,EAAI,EAEvBwN,EAAM,EAEK,EAAJrO,EAAOA,GAAK,EAEJ,WAAVotB,IACJ/e,GAAOnQ,EAAOihB,IAAKpf,EAAMqtB,EAAQpO,EAAWhf,IAAK,EAAMstB,IAGnDD,GAEW,YAAVD,IACJ/e,GAAOnQ,EAAOihB,IAAKpf,EAAM,UAAYif,EAAWhf,IAAK,EAAMstB,IAI7C,WAAVF,IACJ/e,GAAOnQ,EAAOihB,IAAKpf,EAAM,SAAWif,EAAWhf,GAAM,SAAS,EAAMstB,MAIrEjf,GAAOnQ,EAAOihB,IAAKpf,EAAM,UAAYif,EAAWhf,IAAK,EAAMstB,GAG5C,YAAVF,IACJ/e,GAAOnQ,EAAOihB,IAAKpf,EAAM,SAAWif,EAAWhf,GAAM,SAAS,EAAMstB,IAKvE,OAAOjf,GAGR,QAASkf,IAAkBxtB,EAAMc,EAAMusB,GAGtC,GAAII,IAAmB,EACtBnf,EAAe,UAATxN,EAAmBd,EAAK0tB,YAAc1tB,EAAK2tB,aACjDJ,EAAS7C,GAAW1qB,GACpBstB,EAAiE,eAAnDnvB,EAAOihB,IAAKpf,EAAM,aAAa,EAAOutB,EAKrD,IAAY,GAAPjf,GAAmB,MAAPA,EAAc,CAQ9B,GANAA,EAAMuc,GAAQ7qB,EAAMc,EAAMysB,IACf,EAANjf,GAAkB,MAAPA,KACfA,EAAMtO,EAAKkqB,MAAOppB,IAId2pB,GAAUxgB,KAAKqE,GACnB,MAAOA,EAKRmf,GAAmBH,IAChBrvB,EAAQ8tB,qBAAuBzd,IAAQtO,EAAKkqB,MAAOppB,IAGtDwN,EAAMhM,WAAYgM,IAAS,EAI5B,MAASA,GACR8e,GACCptB,EACAc,EACAusB,IAAWC,EAAc,SAAW,WACpCG,EACAF,GAEE,KAGL,QAASK,IAAUxf,EAAUyf,GAM5B,IALA,GAAI1D,GAASnqB,EAAM8tB,EAClBxS,KACA1D,EAAQ,EACR1Y,EAASkP,EAASlP,OAEHA,EAAR0Y,EAAgBA,IACvB5X,EAAOoO,EAAUwJ,GACX5X,EAAKkqB,QAIX5O,EAAQ1D,GAAU+F,EAAUte,IAAKW,EAAM,cACvCmqB,EAAUnqB,EAAKkqB,MAAMC,QAChB0D,GAGEvS,EAAQ1D,IAAuB,SAAZuS,IACxBnqB,EAAKkqB,MAAMC,QAAU,IAMM,KAAvBnqB,EAAKkqB,MAAMC,SAAkBjL,EAAUlf,KAC3Csb,EAAQ1D,GAAU+F,EAAUpB,OAAQvc,EAAM,aAAcqqB,GAAerqB,EAAKuD,cAG7EuqB,EAAS5O,EAAUlf,GAEF,SAAZmqB,GAAuB2D,GAC3BnQ,EAAUN,IAAKrd,EAAM,aAAc8tB,EAAS3D,EAAUhsB,EAAOihB,IAAKpf,EAAM,aAO3E,KAAM4X,EAAQ,EAAW1Y,EAAR0Y,EAAgBA,IAChC5X,EAAOoO,EAAUwJ,GACX5X,EAAKkqB,QAGL2D,GAA+B,SAAvB7tB,EAAKkqB,MAAMC,SAA6C,KAAvBnqB,EAAKkqB,MAAMC,UACzDnqB,EAAKkqB,MAAMC,QAAU0D,EAAOvS,EAAQ1D,IAAW,GAAK,QAItD,OAAOxJ,GAGRjQ,EAAOyC,QAINmtB,UACCC,SACC3uB,IAAK,SAAUW,EAAM8qB,GACpB,GAAKA,EAAW,CAGf,GAAIrrB,GAAMorB,GAAQ7qB,EAAM,UACxB,OAAe,KAARP,EAAa,IAAMA,MAO9BwuB,WACCC,aAAe,EACfC,aAAe,EACfC,UAAY,EACZC,YAAc,EACdzB,YAAc,EACd0B,YAAc,EACdN,SAAW,EACXO,OAAS,EACTC,SAAW,EACXC,QAAU,EACVC,QAAU,EACVC,MAAQ,GAKTC,UACCC,QAAS,YAIV3E,MAAO,SAAUlqB,EAAMc,EAAM2C,EAAO4pB,GAGnC,GAAMrtB,GAA0B,IAAlBA,EAAKuC,UAAoC,IAAlBvC,EAAKuC,UAAmBvC,EAAKkqB,MAAlE,CAKA,GAAIzqB,GAAKyC,EAAMsc,EACdwO,EAAW7uB,EAAOkF,UAAWvC,GAC7BopB,EAAQlqB,EAAKkqB,KAQd,OANAppB,GAAO3C,EAAOywB,SAAU5B,KAAgB7uB,EAAOywB,SAAU5B,GAAaF,GAAgB5C,EAAO8C,IAG7FxO,EAAQrgB,EAAO4vB,SAAUjtB,IAAU3C,EAAO4vB,SAAUf,GAGrCxrB,SAAViC,EAiCC+a,GAAS,OAASA,IAAqDhd,UAA3C/B,EAAM+e,EAAMnf,IAAKW,GAAM,EAAOqtB,IACvD5tB,EAIDyqB,EAAOppB,IArCdoB,QAAcuB,GAGA,WAATvB,IAAsBzC,EAAM6sB,GAAQ3iB,KAAMlG,MAC9CA,GAAUhE,EAAI,GAAK,GAAMA,EAAI,GAAK6C,WAAYnE,EAAOihB,IAAKpf,EAAMc,IAEhEoB,EAAO,UAIM,MAATuB,GAAiBA,IAAUA,IAKlB,WAATvB,GAAsB/D,EAAO8vB,UAAWjB,KAC5CvpB,GAAS,MAKJxF,EAAQytB,iBAA6B,KAAVjoB,GAAiD,IAAjC3C,EAAKlD,QAAS,gBAC9DssB,EAAOppB,GAAS,WAIX0d,GAAW,OAASA,IAAwDhd,UAA7CiC,EAAQ+a,EAAMnB,IAAKrd,EAAMyD,EAAO4pB,MACpEnD,EAAOppB,GAAS2C,IAjBjB,UA+BF2b,IAAK,SAAUpf,EAAMc,EAAMusB,EAAOE,GACjC,GAAIjf,GAAKhP,EAAKkf,EACbwO,EAAW7uB,EAAOkF,UAAWvC,EAwB9B,OArBAA,GAAO3C,EAAOywB,SAAU5B,KAAgB7uB,EAAOywB,SAAU5B,GAAaF,GAAgB9sB,EAAKkqB,MAAO8C,IAGlGxO,EAAQrgB,EAAO4vB,SAAUjtB,IAAU3C,EAAO4vB,SAAUf,GAG/CxO,GAAS,OAASA,KACtBlQ,EAAMkQ,EAAMnf,IAAKW,GAAM,EAAMqtB,IAIjB7rB,SAAR8M,IACJA,EAAMuc,GAAQ7qB,EAAMc,EAAMysB,IAId,WAARjf,GAAoBxN,IAAQ4rB,MAChCpe,EAAMoe,GAAoB5rB,IAIZ,KAAVusB,GAAgBA,GACpB/tB,EAAMgD,WAAYgM,GACX+e,KAAU,GAAQlvB,EAAOkE,UAAW/C,GAAQA,GAAO,EAAIgP,GAExDA,KAITnQ,EAAOyB,MAAO,SAAU,SAAW,SAAUK,EAAGa,GAC/C3C,EAAO4vB,SAAUjtB,IAChBzB,IAAK,SAAUW,EAAM8qB,EAAUuC,GAC9B,MAAKvC,GAIGsB,GAAaniB,KAAM9L,EAAOihB,IAAKpf,EAAM,aAAsC,IAArBA,EAAK0tB,YACjEvvB,EAAOguB,KAAMnsB,EAAMusB,GAAS,WAC3B,MAAOiB,IAAkBxtB,EAAMc,EAAMusB,KAEtCG,GAAkBxtB,EAAMc,EAAMusB,GARhC,QAYDhQ,IAAK,SAAUrd,EAAMyD,EAAO4pB,GAC3B,GAAIE,GAASF,GAAS3C,GAAW1qB,EACjC,OAAOitB,IAAmBjtB,EAAMyD,EAAO4pB,EACtCD,GACCptB,EACAc,EACAusB,EACmD,eAAnDlvB,EAAOihB,IAAKpf,EAAM,aAAa,EAAOutB,GACtCA,GACG,OAORpvB,EAAO4vB,SAAS7B,YAAcf,GAAcltB,EAAQ+tB,oBACnD,SAAUhsB,EAAM8qB,GACf,MAAKA,GACG3sB,EAAOguB,KAAMnsB,GAAQmqB,QAAW,gBACtCU,IAAU7qB,EAAM,gBAFlB,SAQF7B,EAAOyB,MACNkvB,OAAQ,GACRC,QAAS,GACTC,OAAQ,SACN,SAAUC,EAAQC,GACpB/wB,EAAO4vB,SAAUkB,EAASC,IACzBC,OAAQ,SAAU1rB,GAOjB,IANA,GAAIxD,GAAI,EACPmvB,KAGAC,EAAyB,gBAAV5rB,GAAqBA,EAAMkB,MAAM,MAASlB,GAE9C,EAAJxD,EAAOA,IACdmvB,EAAUH,EAAShQ,EAAWhf,GAAMivB,GACnCG,EAAOpvB,IAAOovB,EAAOpvB,EAAI,IAAOovB,EAAO,EAGzC,OAAOD,KAIH5E,GAAQvgB,KAAMglB,KACnB9wB,EAAO4vB,SAAUkB,EAASC,GAAS7R,IAAM4P,MAI3C9uB,EAAOG,GAAGsC,QACTwe,IAAK,SAAUte,EAAM2C,GACpB,MAAO8Y,GAAQjf,KAAM,SAAU0C,EAAMc,EAAM2C,GAC1C,GAAI8pB,GAAQhtB,EACXR,KACAE,EAAI,CAEL,IAAK9B,EAAOoD,QAAST,GAAS,CAI7B,IAHAysB,EAAS7C,GAAW1qB,GACpBO,EAAMO,EAAK5B,OAECqB,EAAJN,EAASA,IAChBF,EAAKe,EAAMb,IAAQ9B,EAAOihB,IAAKpf,EAAMc,EAAMb,IAAK,EAAOstB,EAGxD,OAAOxtB,GAGR,MAAiByB,UAAViC,EACNtF,EAAO+rB,MAAOlqB,EAAMc,EAAM2C,GAC1BtF,EAAOihB,IAAKpf,EAAMc,IACjBA,EAAM2C,EAAOtD,UAAUjB,OAAS,IAEpC2uB,KAAM,WACL,MAAOD,IAAUtwB,MAAM,IAExBgyB,KAAM,WACL,MAAO1B,IAAUtwB,OAElBiyB,OAAQ,SAAUtV,GACjB,MAAsB,iBAAVA,GACJA,EAAQ3c,KAAKuwB,OAASvwB,KAAKgyB,OAG5BhyB,KAAKsC,KAAK,WACXsf,EAAU5hB,MACda,EAAQb,MAAOuwB,OAEf1vB,EAAQb,MAAOgyB,WAOnB,SAASE,IAAOxvB,EAAMa,EAASyc,EAAM7c,EAAKgvB,GACzC,MAAO,IAAID,IAAMzwB,UAAUR,KAAMyB,EAAMa,EAASyc,EAAM7c,EAAKgvB,GAE5DtxB,EAAOqxB,MAAQA,GAEfA,GAAMzwB,WACLE,YAAauwB,GACbjxB,KAAM,SAAUyB,EAAMa,EAASyc,EAAM7c,EAAKgvB,EAAQC,GACjDpyB,KAAK0C,KAAOA,EACZ1C,KAAKggB,KAAOA,EACZhgB,KAAKmyB,OAASA,GAAU,QACxBnyB,KAAKuD,QAAUA,EACfvD,KAAKgT,MAAQhT,KAAKmH,IAAMnH,KAAKiO,MAC7BjO,KAAKmD,IAAMA,EACXnD,KAAKoyB,KAAOA,IAAUvxB,EAAO8vB,UAAW3Q,GAAS,GAAK,OAEvD/R,IAAK,WACJ,GAAIiT,GAAQgR,GAAMG,UAAWryB,KAAKggB,KAElC,OAAOkB,IAASA,EAAMnf,IACrBmf,EAAMnf,IAAK/B,MACXkyB,GAAMG,UAAUjN,SAASrjB,IAAK/B,OAEhCsyB,IAAK,SAAUC,GACd,GAAIC,GACHtR,EAAQgR,GAAMG,UAAWryB,KAAKggB,KAoB/B,OAlBKhgB,MAAKuD,QAAQkvB,SACjBzyB,KAAKqa,IAAMmY,EAAQ3xB,EAAOsxB,OAAQnyB,KAAKmyB,QACtCI,EAASvyB,KAAKuD,QAAQkvB,SAAWF,EAAS,EAAG,EAAGvyB,KAAKuD,QAAQkvB,UAG9DzyB,KAAKqa,IAAMmY,EAAQD,EAEpBvyB,KAAKmH,KAAQnH,KAAKmD,IAAMnD,KAAKgT,OAAUwf,EAAQxyB,KAAKgT,MAE/ChT,KAAKuD,QAAQmvB,MACjB1yB,KAAKuD,QAAQmvB,KAAK5wB,KAAM9B,KAAK0C,KAAM1C,KAAKmH,IAAKnH,MAGzCkhB,GAASA,EAAMnB,IACnBmB,EAAMnB,IAAK/f,MAEXkyB,GAAMG,UAAUjN,SAASrF,IAAK/f,MAExBA,OAITkyB,GAAMzwB,UAAUR,KAAKQ,UAAYywB,GAAMzwB,UAEvCywB,GAAMG,WACLjN,UACCrjB,IAAK,SAAU4wB,GACd,GAAIngB,EAEJ,OAAiC,OAA5BmgB,EAAMjwB,KAAMiwB,EAAM3S,OACpB2S,EAAMjwB,KAAKkqB,OAA2C,MAAlC+F,EAAMjwB,KAAKkqB,MAAO+F,EAAM3S,OAQ/CxN,EAAS3R,EAAOihB,IAAK6Q,EAAMjwB,KAAMiwB,EAAM3S,KAAM,IAErCxN,GAAqB,SAAXA,EAAwBA,EAAJ,GAT9BmgB,EAAMjwB,KAAMiwB,EAAM3S,OAW3BD,IAAK,SAAU4S,GAIT9xB,EAAO+xB,GAAGF,KAAMC,EAAM3S,MAC1Bnf,EAAO+xB,GAAGF,KAAMC,EAAM3S,MAAQ2S,GACnBA,EAAMjwB,KAAKkqB,QAAgE,MAArD+F,EAAMjwB,KAAKkqB,MAAO/rB,EAAOywB,SAAUqB,EAAM3S,QAAoBnf,EAAO4vB,SAAUkC,EAAM3S,OACrHnf,EAAO+rB,MAAO+F,EAAMjwB,KAAMiwB,EAAM3S,KAAM2S,EAAMxrB,IAAMwrB,EAAMP,MAExDO,EAAMjwB,KAAMiwB,EAAM3S,MAAS2S,EAAMxrB,OAQrC+qB,GAAMG,UAAUvL,UAAYoL,GAAMG,UAAU3L,YAC3C3G,IAAK,SAAU4S,GACTA,EAAMjwB,KAAKuC,UAAY0tB,EAAMjwB,KAAKmD,aACtC8sB,EAAMjwB,KAAMiwB,EAAM3S,MAAS2S,EAAMxrB,OAKpCtG,EAAOsxB,QACNU,OAAQ,SAAUC,GACjB,MAAOA,IAERC,MAAO,SAAUD,GAChB,MAAO,GAAM1uB,KAAK4uB,IAAKF,EAAI1uB,KAAK6uB,IAAO,IAIzCpyB,EAAO+xB,GAAKV,GAAMzwB,UAAUR,KAG5BJ,EAAO+xB,GAAGF,OAKV,IACCQ,IAAOC,GACPC,GAAW,yBACXC,GAAS,GAAI1pB,QAAQ,iBAAmB8X,EAAO,cAAe,KAC9D6R,GAAO,cACPC,IAAwBC,IACxBC,IACCC,KAAO,SAAU1T,EAAM7Z,GACtB,GAAIwsB,GAAQ3yB,KAAK2zB,YAAa3T,EAAM7Z,GACnCtC,EAAS8uB,EAAM1kB,MACf8jB,EAAQsB,GAAOhnB,KAAMlG,GACrBisB,EAAOL,GAASA,EAAO,KAASlxB,EAAO8vB,UAAW3Q,GAAS,GAAK,MAGhEhN,GAAUnS,EAAO8vB,UAAW3Q,IAAmB,OAAToS,IAAkBvuB,IACvDwvB,GAAOhnB,KAAMxL,EAAOihB,IAAK6Q,EAAMjwB,KAAMsd,IACtC4T,EAAQ,EACRC,EAAgB,EAEjB,IAAK7gB,GAASA,EAAO,KAAQof,EAAO,CAEnCA,EAAOA,GAAQpf,EAAO,GAGtB+e,EAAQA,MAGR/e,GAASnP,GAAU,CAEnB,GAGC+vB,GAAQA,GAAS,KAGjB5gB,GAAgB4gB,EAChB/yB,EAAO+rB,MAAO+F,EAAMjwB,KAAMsd,EAAMhN,EAAQof,SAI/BwB,KAAWA,EAAQjB,EAAM1kB,MAAQpK,IAAqB,IAAV+vB,KAAiBC,GAaxE,MATK9B,KACJ/e,EAAQ2f,EAAM3f,OAASA,IAAUnP,GAAU,EAC3C8uB,EAAMP,KAAOA,EAEbO,EAAMxvB,IAAM4uB,EAAO,GAClB/e,GAAU+e,EAAO,GAAM,GAAMA,EAAO,IACnCA,EAAO,IAGHY,IAKV,SAASmB,MAIR,MAHA9U,YAAW,WACVkU,GAAQhvB,SAEAgvB,GAAQryB,EAAOsG,MAIzB,QAAS4sB,IAAOnvB,EAAMovB,GACrB,GAAI9N,GACHvjB,EAAI,EACJkL,GAAUomB,OAAQrvB,EAKnB,KADAovB,EAAeA,EAAe,EAAI,EACtB,EAAJrxB,EAAQA,GAAK,EAAIqxB,EACxB9N,EAAQvE,EAAWhf,GACnBkL,EAAO,SAAWqY,GAAUrY,EAAO,UAAYqY,GAAUthB,CAO1D,OAJKovB,KACJnmB,EAAM6iB,QAAU7iB,EAAM4f,MAAQ7oB,GAGxBiJ,EAGR,QAAS8lB,IAAaxtB,EAAO6Z,EAAMkU,GAKlC,IAJA,GAAIvB,GACHwB,GAAeV,GAAUzT,QAAe5f,OAAQqzB,GAAU,MAC1DnZ,EAAQ,EACR1Y,EAASuyB,EAAWvyB,OACLA,EAAR0Y,EAAgBA,IACvB,GAAMqY,EAAQwB,EAAY7Z,GAAQxY,KAAMoyB,EAAWlU,EAAM7Z,GAGxD,MAAOwsB,GAKV,QAASa,IAAkB9wB,EAAMojB,EAAOsO,GAEvC,GAAIpU,GAAM7Z,EAAO8rB,EAAQU,EAAOzR,EAAOmT,EAASxH,EAASyH,EACxDC,EAAOv0B,KACPioB,KACA2E,EAAQlqB,EAAKkqB,MACb4D,EAAS9tB,EAAKuC,UAAY2c,EAAUlf,GACpC8xB,EAAWnU,EAAUte,IAAKW,EAAM,SAG3B0xB,GAAKrT,QACVG,EAAQrgB,EAAOsgB,YAAaze,EAAM,MACX,MAAlBwe,EAAMuT,WACVvT,EAAMuT,SAAW,EACjBJ,EAAUnT,EAAMvM,MAAMqH,KACtBkF,EAAMvM,MAAMqH,KAAO,WACZkF,EAAMuT,UACXJ,MAIHnT,EAAMuT,WAENF,EAAK1X,OAAO,WAEX0X,EAAK1X,OAAO,WACXqE,EAAMuT,WACA5zB,EAAOkgB,MAAOre,EAAM,MAAOd,QAChCsf,EAAMvM,MAAMqH,YAOO,IAAlBtZ,EAAKuC,WAAoB,UAAY6gB,IAAS,SAAWA,MAK7DsO,EAAKM,UAAa9H,EAAM8H,SAAU9H,EAAM+H,UAAW/H,EAAMgI,WAIzD/H,EAAUhsB,EAAOihB,IAAKpf,EAAM,WAG5B4xB,EAA2B,SAAZzH,EACdxM,EAAUte,IAAKW,EAAM,eAAkBqqB,GAAgBrqB,EAAKuD,UAAa4mB,EAEpD,WAAjByH,GAA6D,SAAhCzzB,EAAOihB,IAAKpf,EAAM,WACnDkqB,EAAMC,QAAU,iBAIbuH,EAAKM,WACT9H,EAAM8H,SAAW,SACjBH,EAAK1X,OAAO,WACX+P,EAAM8H,SAAWN,EAAKM,SAAU,GAChC9H,EAAM+H,UAAYP,EAAKM,SAAU,GACjC9H,EAAMgI,UAAYR,EAAKM,SAAU,KAKnC,KAAM1U,IAAQ8F,GAEb,GADA3f,EAAQ2f,EAAO9F,GACVoT,GAAS/mB,KAAMlG,GAAU,CAG7B,SAFO2f,GAAO9F,GACdiS,EAASA,GAAoB,WAAV9rB,EACdA,KAAYqqB,EAAS,OAAS,QAAW,CAG7C,GAAe,SAAVrqB,IAAoBquB,GAAiCtwB,SAArBswB,EAAUxU,GAG9C,QAFAwQ,IAAS,EAKXvI,EAAMjI,GAASwU,GAAYA,EAAUxU,IAAUnf,EAAO+rB,MAAOlqB,EAAMsd,OAInE6M,GAAU3oB,MAIZ,IAAMrD,EAAOqE,cAAe+iB,GAyCqD,YAAxD,SAAZ4E,EAAqBE,GAAgBrqB,EAAKuD,UAAa4mB,KACnED,EAAMC,QAAUA,OA1CoB,CAC/B2H,EACC,UAAYA,KAChBhE,EAASgE,EAAShE,QAGnBgE,EAAWnU,EAAUpB,OAAQvc,EAAM,aAI/BuvB,IACJuC,EAAShE,QAAUA,GAEfA,EACJ3vB,EAAQ6B,GAAO6tB,OAEfgE,EAAK/rB,KAAK,WACT3H,EAAQ6B,GAAOsvB,SAGjBuC,EAAK/rB,KAAK,WACT,GAAIwX,EAEJK,GAAUjE,OAAQ1Z,EAAM,SACxB,KAAMsd,IAAQiI,GACbpnB,EAAO+rB,MAAOlqB,EAAMsd,EAAMiI,EAAMjI,KAGlC,KAAMA,IAAQiI,GACb0K,EAAQgB,GAAanD,EAASgE,EAAUxU,GAAS,EAAGA,EAAMuU,GAElDvU,IAAQwU,KACfA,EAAUxU,GAAS2S,EAAM3f,MACpBwd,IACJmC,EAAMxvB,IAAMwvB,EAAM3f,MAClB2f,EAAM3f,MAAiB,UAATgN,GAA6B,WAATA,EAAoB,EAAI,KAW/D,QAAS6U,IAAY/O,EAAOgP,GAC3B,GAAIxa,GAAO9W,EAAM2uB,EAAQhsB,EAAO+a,CAGhC,KAAM5G,IAASwL,GAed,GAdAtiB,EAAO3C,EAAOkF,UAAWuU,GACzB6X,EAAS2C,EAAetxB,GACxB2C,EAAQ2f,EAAOxL,GACVzZ,EAAOoD,QAASkC,KACpBgsB,EAAShsB,EAAO,GAChBA,EAAQ2f,EAAOxL,GAAUnU,EAAO,IAG5BmU,IAAU9W,IACdsiB,EAAOtiB,GAAS2C,QACT2f,GAAOxL,IAGf4G,EAAQrgB,EAAO4vB,SAAUjtB,GACpB0d,GAAS,UAAYA,GAAQ,CACjC/a,EAAQ+a,EAAM2Q,OAAQ1rB,SACf2f,GAAOtiB,EAId,KAAM8W,IAASnU,GACNmU,IAASwL,KAChBA,EAAOxL,GAAUnU,EAAOmU,GACxBwa,EAAexa,GAAU6X,OAI3B2C,GAAetxB,GAAS2uB,EAK3B,QAAS4C,IAAWryB,EAAMsyB,EAAYzxB,GACrC,GAAIiP,GACHyiB,EACA3a,EAAQ,EACR1Y,EAAS2xB,GAAoB3xB,OAC7Bkb,EAAWjc,EAAO2b,WAAWK,OAAQ,iBAE7BqY,GAAKxyB,OAEbwyB,EAAO,WACN,GAAKD,EACJ,OAAO,CAWR,KATA,GAAIE,GAAcjC,IAASY,KAC1BhW,EAAY1Z,KAAKyrB,IAAK,EAAGqE,EAAUkB,UAAYlB,EAAUzB,SAAW0C,GAGpEle,EAAO6G,EAAYoW,EAAUzB,UAAY,EACzCF,EAAU,EAAItb,EACdqD,EAAQ,EACR1Y,EAASsyB,EAAUmB,OAAOzzB,OAEXA,EAAR0Y,EAAiBA,IACxB4Z,EAAUmB,OAAQ/a,GAAQgY,IAAKC,EAKhC,OAFAzV,GAASoB,WAAYxb,GAAQwxB,EAAW3B,EAASzU,IAElC,EAAVyU,GAAe3wB,EACZkc,GAEPhB,EAASqB,YAAazb,GAAQwxB,KACvB,IAGTA,EAAYpX,EAASF,SACpBla,KAAMA,EACNojB,MAAOjlB,EAAOyC,UAAY0xB,GAC1BZ,KAAMvzB,EAAOyC,QAAQ,GAAQwxB,kBAAqBvxB,GAClD+xB,mBAAoBN,EACpBO,gBAAiBhyB,EACjB6xB,UAAWlC,IAASY,KACpBrB,SAAUlvB,EAAQkvB,SAClB4C,UACA1B,YAAa,SAAU3T,EAAM7c,GAC5B,GAAIwvB,GAAQ9xB,EAAOqxB,MAAOxvB,EAAMwxB,EAAUE,KAAMpU,EAAM7c,EACpD+wB,EAAUE,KAAKU,cAAe9U,IAAUkU,EAAUE,KAAKjC,OAEzD,OADA+B,GAAUmB,OAAOh1B,KAAMsyB,GAChBA,GAERvR,KAAM,SAAUoU,GACf,GAAIlb,GAAQ,EAGX1Y,EAAS4zB,EAAUtB,EAAUmB,OAAOzzB,OAAS,CAC9C,IAAKqzB,EACJ,MAAOj1B,KAGR,KADAi1B,GAAU,EACMrzB,EAAR0Y,EAAiBA,IACxB4Z,EAAUmB,OAAQ/a,GAAQgY,IAAK,EAShC,OALKkD,GACJ1Y,EAASqB,YAAazb,GAAQwxB,EAAWsB,IAEzC1Y,EAAS2Y,WAAY/yB,GAAQwxB,EAAWsB,IAElCx1B,QAGT8lB,EAAQoO,EAAUpO,KAInB,KAFA+O,GAAY/O,EAAOoO,EAAUE,KAAKU,eAElBlzB,EAAR0Y,EAAiBA,IAExB,GADA9H,EAAS+gB,GAAqBjZ,GAAQxY,KAAMoyB,EAAWxxB,EAAMojB,EAAOoO,EAAUE,MAE7E,MAAO5hB,EAmBT,OAfA3R,GAAO4B,IAAKqjB,EAAO6N,GAAaO,GAE3BrzB,EAAOkD,WAAYmwB,EAAUE,KAAKphB,QACtCkhB,EAAUE,KAAKphB,MAAMlR,KAAMY,EAAMwxB,GAGlCrzB,EAAO+xB,GAAG8C,MACT70B,EAAOyC,OAAQ4xB,GACdxyB,KAAMA,EACN6xB,KAAML,EACNnT,MAAOmT,EAAUE,KAAKrT,SAKjBmT,EAAU3W,SAAU2W,EAAUE,KAAK7W,UACxC/U,KAAM0rB,EAAUE,KAAK5rB,KAAM0rB,EAAUE,KAAKuB,UAC1C5Y,KAAMmX,EAAUE,KAAKrX,MACrBF,OAAQqX,EAAUE,KAAKvX,QAG1Bhc,EAAOk0B,UAAYl0B,EAAOyC,OAAQyxB,IAEjCa,QAAS,SAAU9P,EAAOvjB,GACpB1B,EAAOkD,WAAY+hB,IACvBvjB,EAAWujB,EACXA,GAAU,MAEVA,EAAQA,EAAMze,MAAM,IAOrB,KAJA,GAAI2Y,GACH1F,EAAQ,EACR1Y,EAASkkB,EAAMlkB,OAEAA,EAAR0Y,EAAiBA,IACxB0F,EAAO8F,EAAOxL,GACdmZ,GAAUzT,GAASyT,GAAUzT,OAC7ByT,GAAUzT,GAAOpP,QAASrO,IAI5BszB,UAAW,SAAUtzB,EAAUipB,GACzBA,EACJ+H,GAAoB3iB,QAASrO,GAE7BgxB,GAAoBlzB,KAAMkC,MAK7B1B,EAAOi1B,MAAQ,SAAUA,EAAO3D,EAAQnxB,GACvC,GAAI+0B,GAAMD,GAA0B,gBAAVA,GAAqBj1B,EAAOyC,UAAYwyB,IACjEH,SAAU30B,IAAOA,GAAMmxB,GACtBtxB,EAAOkD,WAAY+xB,IAAWA,EAC/BrD,SAAUqD,EACV3D,OAAQnxB,GAAMmxB,GAAUA,IAAWtxB,EAAOkD,WAAYouB,IAAYA,EAwBnE,OArBA4D,GAAItD,SAAW5xB,EAAO+xB,GAAGhU,IAAM,EAA4B,gBAAjBmX,GAAItD,SAAwBsD,EAAItD,SACzEsD,EAAItD,WAAY5xB,GAAO+xB,GAAGoD,OAASn1B,EAAO+xB,GAAGoD,OAAQD,EAAItD,UAAa5xB,EAAO+xB,GAAGoD,OAAO5Q,UAGtE,MAAb2Q,EAAIhV,OAAiBgV,EAAIhV,SAAU,KACvCgV,EAAIhV,MAAQ,MAIbgV,EAAI/pB,IAAM+pB,EAAIJ,SAEdI,EAAIJ,SAAW,WACT90B,EAAOkD,WAAYgyB,EAAI/pB,MAC3B+pB,EAAI/pB,IAAIlK,KAAM9B,MAGV+1B,EAAIhV,OACRlgB,EAAOmgB,QAAShhB,KAAM+1B,EAAIhV,QAIrBgV,GAGRl1B,EAAOG,GAAGsC,QACT2yB,OAAQ,SAAUH,EAAOI,EAAI/D,EAAQ5vB,GAGpC,MAAOvC,MAAKwP,OAAQoS,GAAWE,IAAK,UAAW,GAAIyO,OAGjDptB,MAAMgzB,SAAUzF,QAASwF,GAAMJ,EAAO3D,EAAQ5vB,IAEjD4zB,QAAS,SAAUnW,EAAM8V,EAAO3D,EAAQ5vB,GACvC,GAAIoS,GAAQ9T,EAAOqE,cAAe8a,GACjCoW,EAASv1B,EAAOi1B,MAAOA,EAAO3D,EAAQ5vB,GACtC8zB,EAAc,WAEb,GAAI9B,GAAOQ,GAAW/0B,KAAMa,EAAOyC,UAAY0c,GAAQoW,IAGlDzhB,GAAS0L,EAAUte,IAAK/B,KAAM,YAClCu0B,EAAKnT,MAAM,GAKd,OAFCiV,GAAYC,OAASD,EAEf1hB,GAASyhB,EAAOrV,SAAU,EAChC/gB,KAAKsC,KAAM+zB,GACXr2B,KAAK+gB,MAAOqV,EAAOrV,MAAOsV,IAE5BjV,KAAM,SAAUxc,EAAM0c,EAAYkU,GACjC,GAAIe,GAAY,SAAUrV,GACzB,GAAIE,GAAOF,EAAME,WACVF,GAAME,KACbA,EAAMoU,GAYP,OATqB,gBAAT5wB,KACX4wB,EAAUlU,EACVA,EAAa1c,EACbA,EAAOV,QAEHod,GAAc1c,KAAS,GAC3B5E,KAAK+gB,MAAOnc,GAAQ,SAGd5E,KAAKsC,KAAK,WAChB,GAAI0e,IAAU,EACb1G,EAAgB,MAAR1V,GAAgBA,EAAO,aAC/B4xB,EAAS31B,EAAO21B,OAChBva,EAAOoE,EAAUte,IAAK/B,KAEvB,IAAKsa,EACC2B,EAAM3B,IAAW2B,EAAM3B,GAAQ8G,MACnCmV,EAAWta,EAAM3B,QAGlB,KAAMA,IAAS2B,GACTA,EAAM3B,IAAW2B,EAAM3B,GAAQ8G,MAAQkS,GAAK3mB,KAAM2N,IACtDic,EAAWta,EAAM3B,GAKpB,KAAMA,EAAQkc,EAAO50B,OAAQ0Y,KACvBkc,EAAQlc,GAAQ5X,OAAS1C,MAAiB,MAAR4E,GAAgB4xB,EAAQlc,GAAQyG,QAAUnc,IAChF4xB,EAAQlc,GAAQia,KAAKnT,KAAMoU,GAC3BxU,GAAU,EACVwV,EAAOnzB,OAAQiX,EAAO,KAOnB0G,IAAYwU,IAChB30B,EAAOmgB,QAAShhB,KAAM4E,MAIzB0xB,OAAQ,SAAU1xB,GAIjB,MAHKA,MAAS,IACbA,EAAOA,GAAQ,MAET5E,KAAKsC,KAAK,WAChB,GAAIgY,GACH2B,EAAOoE,EAAUte,IAAK/B,MACtB+gB,EAAQ9E,EAAMrX,EAAO,SACrBsc,EAAQjF,EAAMrX,EAAO,cACrB4xB,EAAS31B,EAAO21B,OAChB50B,EAASmf,EAAQA,EAAMnf,OAAS,CAajC,KAVAqa,EAAKqa,QAAS,EAGdz1B,EAAOkgB,MAAO/gB,KAAM4E,MAEfsc,GAASA,EAAME,MACnBF,EAAME,KAAKtf,KAAM9B,MAAM,GAIlBsa,EAAQkc,EAAO50B,OAAQ0Y,KACvBkc,EAAQlc,GAAQ5X,OAAS1C,MAAQw2B,EAAQlc,GAAQyG,QAAUnc,IAC/D4xB,EAAQlc,GAAQia,KAAKnT,MAAM,GAC3BoV,EAAOnzB,OAAQiX,EAAO,GAKxB,KAAMA,EAAQ,EAAW1Y,EAAR0Y,EAAgBA,IAC3ByG,EAAOzG,IAAWyG,EAAOzG,GAAQgc,QACrCvV,EAAOzG,GAAQgc,OAAOx0B,KAAM9B,YAKvBic,GAAKqa,YAKfz1B,EAAOyB,MAAO,SAAU,OAAQ,QAAU,SAAUK,EAAGa,GACtD,GAAIizB,GAAQ51B,EAAOG,GAAIwC,EACvB3C,GAAOG,GAAIwC,GAAS,SAAUsyB,EAAO3D,EAAQ5vB,GAC5C,MAAgB,OAATuzB,GAAkC,iBAAVA,GAC9BW,EAAM7zB,MAAO5C,KAAM6C,WACnB7C,KAAKm2B,QAASpC,GAAOvwB,GAAM,GAAQsyB,EAAO3D,EAAQ5vB,MAKrD1B,EAAOyB,MACNo0B,UAAW3C,GAAM,QACjB4C,QAAS5C,GAAM,QACf6C,YAAa7C,GAAM,UACnB8C,QAAUnG,QAAS,QACnBoG,SAAWpG,QAAS,QACpBqG,YAAcrG,QAAS,WACrB,SAAUltB,EAAMsiB,GAClBjlB,EAAOG,GAAIwC,GAAS,SAAUsyB,EAAO3D,EAAQ5vB,GAC5C,MAAOvC,MAAKm2B,QAASrQ,EAAOgQ,EAAO3D,EAAQ5vB,MAI7C1B,EAAO21B,UACP31B,EAAO+xB,GAAGsC,KAAO,WAChB,GAAIQ,GACH/yB,EAAI,EACJ6zB,EAAS31B,EAAO21B,MAIjB,KAFAtD,GAAQryB,EAAOsG,MAEPxE,EAAI6zB,EAAO50B,OAAQe,IAC1B+yB,EAAQc,EAAQ7zB,GAEV+yB,KAAWc,EAAQ7zB,KAAQ+yB,GAChCc,EAAOnzB,OAAQV,IAAK,EAIhB6zB,GAAO50B,QACZf,EAAO+xB,GAAGxR,OAEX8R,GAAQhvB,QAGTrD,EAAO+xB,GAAG8C,MAAQ,SAAUA,GAC3B70B,EAAO21B,OAAOn2B,KAAMq1B,GACfA,IACJ70B,EAAO+xB,GAAG5f,QAEVnS,EAAO21B,OAAOvtB,OAIhBpI,EAAO+xB,GAAGoE,SAAW,GAErBn2B,EAAO+xB,GAAG5f,MAAQ,WACXmgB,KACLA,GAAU8D,YAAap2B,EAAO+xB,GAAGsC,KAAMr0B,EAAO+xB,GAAGoE,YAInDn2B,EAAO+xB,GAAGxR,KAAO,WAChB8V,cAAe/D,IACfA,GAAU,MAGXtyB,EAAO+xB,GAAGoD,QACTmB,KAAM,IACNC,KAAM,IAENhS,SAAU,KAMXvkB,EAAOG,GAAGq2B,MAAQ,SAAUC,EAAM1yB,GAIjC,MAHA0yB,GAAOz2B,EAAO+xB,GAAK/xB,EAAO+xB,GAAGoD,OAAQsB,IAAUA,EAAOA,EACtD1yB,EAAOA,GAAQ,KAER5E,KAAK+gB,MAAOnc,EAAM,SAAUgV,EAAMsH,GACxC,GAAIqW,GAAUvY,WAAYpF,EAAM0d,EAChCpW,GAAME,KAAO,WACZoW,aAAcD,OAMjB,WACC,GAAI1nB,GAAQjQ,EAAS6F,cAAe,SACnCmC,EAAShI,EAAS6F,cAAe,UACjCswB,EAAMnuB,EAAOhC,YAAahG,EAAS6F,cAAe,UAEnDoK,GAAMjL,KAAO,WAIbjE,EAAQ82B,QAA0B,KAAhB5nB,EAAM1J,MAIxBxF,EAAQ+2B,YAAc3B,EAAIthB,SAI1B7M,EAAO2M,UAAW,EAClB5T,EAAQg3B,aAAe5B,EAAIxhB,SAI3B1E,EAAQjQ,EAAS6F,cAAe,SAChCoK,EAAM1J,MAAQ,IACd0J,EAAMjL,KAAO,QACbjE,EAAQi3B,WAA6B,MAAhB/nB,EAAM1J,QAI5B,IAAI0xB,IAAUC,GACb/pB,GAAalN,EAAOgQ,KAAK9C,UAE1BlN,GAAOG,GAAGsC,QACTyN,KAAM,SAAUvN,EAAM2C,GACrB,MAAO8Y,GAAQjf,KAAMa,EAAOkQ,KAAMvN,EAAM2C,EAAOtD,UAAUjB,OAAS,IAGnEm2B,WAAY,SAAUv0B,GACrB,MAAOxD,MAAKsC,KAAK,WAChBzB,EAAOk3B,WAAY/3B,KAAMwD,QAK5B3C,EAAOyC,QACNyN,KAAM,SAAUrO,EAAMc,EAAM2C,GAC3B,GAAI+a,GAAO/e,EACV61B,EAAQt1B,EAAKuC,QAGd,IAAMvC,GAAkB,IAAVs1B,GAAyB,IAAVA,GAAyB,IAAVA,EAK5C,aAAYt1B,GAAKkK,eAAiByV,EAC1BxhB,EAAOmf,KAAMtd,EAAMc,EAAM2C,IAKlB,IAAV6xB,GAAgBn3B,EAAOgY,SAAUnW,KACrCc,EAAOA,EAAK0C,cACZgb,EAAQrgB,EAAOo3B,UAAWz0B,KACvB3C,EAAOgQ,KAAKhF,MAAMrB,KAAKmC,KAAMnJ,GAASs0B,GAAWD;AAGtC3zB,SAAViC,EAaO+a,GAAS,OAASA,IAA6C,QAAnC/e,EAAM+e,EAAMnf,IAAKW,EAAMc,IACvDrB,GAGPA,EAAMtB,EAAO0O,KAAKwB,KAAMrO,EAAMc,GAGhB,MAAPrB,EACN+B,OACA/B,GApBc,OAAVgE,EAGO+a,GAAS,OAASA,IAAoDhd,UAA1C/B,EAAM+e,EAAMnB,IAAKrd,EAAMyD,EAAO3C,IAC9DrB,GAGPO,EAAKmK,aAAcrJ,EAAM2C,EAAQ,IAC1BA,OAPPtF,GAAOk3B,WAAYr1B,EAAMc,KAuB5Bu0B,WAAY,SAAUr1B,EAAMyD,GAC3B,GAAI3C,GAAM00B,EACTv1B,EAAI,EACJw1B,EAAYhyB,GAASA,EAAM0F,MAAOqP,EAEnC,IAAKid,GAA+B,IAAlBz1B,EAAKuC,SACtB,MAASzB,EAAO20B,EAAUx1B,KACzBu1B,EAAWr3B,EAAOu3B,QAAS50B,IAAUA,EAGhC3C,EAAOgQ,KAAKhF,MAAMrB,KAAKmC,KAAMnJ,KAEjCd,EAAMw1B,IAAa,GAGpBx1B,EAAKyK,gBAAiB3J,IAKzBy0B,WACCrzB,MACCmb,IAAK,SAAUrd,EAAMyD,GACpB,IAAMxF,EAAQi3B,YAAwB,UAAVzxB,GAC3BtF,EAAOoF,SAAUvD,EAAM,SAAY,CACnC,GAAIsO,GAAMtO,EAAKyD,KAKf,OAJAzD,GAAKmK,aAAc,OAAQ1G,GACtB6K,IACJtO,EAAKyD,MAAQ6K,GAEP7K,QAQZ2xB,IACC/X,IAAK,SAAUrd,EAAMyD,EAAO3C,GAO3B,MANK2C,MAAU,EAEdtF,EAAOk3B,WAAYr1B,EAAMc,GAEzBd,EAAKmK,aAAcrJ,EAAMA,GAEnBA,IAGT3C,EAAOyB,KAAMzB,EAAOgQ,KAAKhF,MAAMrB,KAAKkX,OAAO7V,MAAO,QAAU,SAAUlJ,EAAGa,GACxE,GAAI60B,GAAStqB,GAAYvK,IAAU3C,EAAO0O,KAAKwB,IAE/ChD,IAAYvK,GAAS,SAAUd,EAAMc,EAAMiE,GAC1C,GAAItF,GAAKwhB,CAUT,OATMlc,KAELkc,EAAS5V,GAAYvK,GACrBuK,GAAYvK,GAASrB,EACrBA,EAAqC,MAA/Bk2B,EAAQ31B,EAAMc,EAAMiE,GACzBjE,EAAK0C,cACL,KACD6H,GAAYvK,GAASmgB,GAEfxhB,IAOT,IAAIm2B,IAAa,qCAEjBz3B,GAAOG,GAAGsC,QACT0c,KAAM,SAAUxc,EAAM2C,GACrB,MAAO8Y,GAAQjf,KAAMa,EAAOmf,KAAMxc,EAAM2C,EAAOtD,UAAUjB,OAAS,IAGnE22B,WAAY,SAAU/0B,GACrB,MAAOxD,MAAKsC,KAAK,iBACTtC,MAAMa,EAAOu3B,QAAS50B,IAAUA,QAK1C3C,EAAOyC,QACN80B,SACCI,MAAO,UACPC,QAAS,aAGVzY,KAAM,SAAUtd,EAAMc,EAAM2C,GAC3B,GAAIhE,GAAK+e,EAAOwX,EACfV,EAAQt1B,EAAKuC,QAGd,IAAMvC,GAAkB,IAAVs1B,GAAyB,IAAVA,GAAyB,IAAVA,EAY5C,MARAU,GAAmB,IAAVV,IAAgBn3B,EAAOgY,SAAUnW,GAErCg2B,IAEJl1B,EAAO3C,EAAOu3B,QAAS50B,IAAUA,EACjC0d,EAAQrgB,EAAOwxB,UAAW7uB,IAGZU,SAAViC,EACG+a,GAAS,OAASA,IAAoDhd,UAA1C/B,EAAM+e,EAAMnB,IAAKrd,EAAMyD,EAAO3C,IAChErB,EACEO,EAAMc,GAAS2C,EAGX+a,GAAS,OAASA,IAA6C,QAAnC/e,EAAM+e,EAAMnf,IAAKW,EAAMc,IACzDrB,EACAO,EAAMc,IAIT6uB,WACChe,UACCtS,IAAK,SAAUW,GACd,MAAOA,GAAKi2B,aAAc,aAAgBL,GAAW3rB,KAAMjK,EAAKuD,WAAcvD,EAAK0R,KAClF1R,EAAK2R,SACL,QAMC1T,EAAQ+2B,cACb72B,EAAOwxB,UAAU5d,UAChB1S,IAAK,SAAUW,GACd,GAAImM,GAASnM,EAAKmD,UAIlB,OAHKgJ,IAAUA,EAAOhJ,YACrBgJ,EAAOhJ,WAAW6O,cAEZ,QAKV7T,EAAOyB,MACN,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,mBACE,WACFzB,EAAOu3B,QAASp4B,KAAKkG,eAAkBlG,MAMxC,IAAI44B,IAAS,aAEb/3B,GAAOG,GAAGsC,QACTu1B,SAAU,SAAU1yB,GACnB,GAAI2yB,GAASp2B,EAAMuL,EAAK8qB,EAAO71B,EAAG81B,EACjCC,EAA2B,gBAAV9yB,IAAsBA,EACvCxD,EAAI,EACJM,EAAMjD,KAAK4B,MAEZ,IAAKf,EAAOkD,WAAYoC,GACvB,MAAOnG,MAAKsC,KAAK,SAAUY,GAC1BrC,EAAQb,MAAO64B,SAAU1yB,EAAMrE,KAAM9B,KAAMkD,EAAGlD,KAAKmP,aAIrD,IAAK8pB,EAIJ,IAFAH,GAAY3yB,GAAS,IAAK0F,MAAOqP,OAErBjY,EAAJN,EAASA,IAOhB,GANAD,EAAO1C,KAAM2C,GACbsL,EAAwB,IAAlBvL,EAAKuC,WAAoBvC,EAAKyM,WACjC,IAAMzM,EAAKyM,UAAY,KAAM7K,QAASs0B,GAAQ,KAChD,KAGU,CACV11B,EAAI,CACJ,OAAS61B,EAAQD,EAAQ51B,KACnB+K,EAAI3N,QAAS,IAAMy4B,EAAQ,KAAQ,IACvC9qB,GAAO8qB,EAAQ,IAKjBC,GAAan4B,EAAO2E,KAAMyI,GACrBvL,EAAKyM,YAAc6pB,IACvBt2B,EAAKyM,UAAY6pB,GAMrB,MAAOh5B,OAGRk5B,YAAa,SAAU/yB,GACtB,GAAI2yB,GAASp2B,EAAMuL,EAAK8qB,EAAO71B,EAAG81B,EACjCC,EAA+B,IAArBp2B,UAAUjB,QAAiC,gBAAVuE,IAAsBA,EACjExD,EAAI,EACJM,EAAMjD,KAAK4B,MAEZ,IAAKf,EAAOkD,WAAYoC,GACvB,MAAOnG,MAAKsC,KAAK,SAAUY,GAC1BrC,EAAQb,MAAOk5B,YAAa/yB,EAAMrE,KAAM9B,KAAMkD,EAAGlD,KAAKmP,aAGxD,IAAK8pB,EAGJ,IAFAH,GAAY3yB,GAAS,IAAK0F,MAAOqP,OAErBjY,EAAJN,EAASA,IAQhB,GAPAD,EAAO1C,KAAM2C,GAEbsL,EAAwB,IAAlBvL,EAAKuC,WAAoBvC,EAAKyM,WACjC,IAAMzM,EAAKyM,UAAY,KAAM7K,QAASs0B,GAAQ,KAChD,IAGU,CACV11B,EAAI,CACJ,OAAS61B,EAAQD,EAAQ51B,KAExB,MAAQ+K,EAAI3N,QAAS,IAAMy4B,EAAQ,MAAS,EAC3C9qB,EAAMA,EAAI3J,QAAS,IAAMy0B,EAAQ,IAAK,IAKxCC,GAAa7yB,EAAQtF,EAAO2E,KAAMyI,GAAQ,GACrCvL,EAAKyM,YAAc6pB,IACvBt2B,EAAKyM,UAAY6pB,GAMrB,MAAOh5B,OAGRm5B,YAAa,SAAUhzB,EAAOizB,GAC7B,GAAIx0B,SAAcuB,EAElB,OAAyB,iBAAbizB,IAAmC,WAATx0B,EAC9Bw0B,EAAWp5B,KAAK64B,SAAU1yB,GAAUnG,KAAKk5B,YAAa/yB,GAItDnG,KAAKsC,KADRzB,EAAOkD,WAAYoC,GACN,SAAUxD,GAC1B9B,EAAQb,MAAOm5B,YAAahzB,EAAMrE,KAAK9B,KAAM2C,EAAG3C,KAAKmP,UAAWiqB,GAAWA,IAI5D,WAChB,GAAc,WAATx0B,EAAoB,CAExB,GAAIuK,GACHxM,EAAI,EACJwW,EAAOtY,EAAQb,MACfq5B,EAAalzB,EAAM0F,MAAOqP,MAE3B,OAAS/L,EAAYkqB,EAAY12B,KAE3BwW,EAAKmgB,SAAUnqB,GACnBgK,EAAK+f,YAAa/pB,GAElBgK,EAAK0f,SAAU1pB,QAKNvK,IAASyd,GAAyB,YAATzd,KAC/B5E,KAAKmP,WAETkR,EAAUN,IAAK/f,KAAM,gBAAiBA,KAAKmP,WAO5CnP,KAAKmP,UAAYnP,KAAKmP,WAAahJ,KAAU,EAAQ,GAAKka,EAAUte,IAAK/B,KAAM,kBAAqB,OAKvGs5B,SAAU,SAAUx4B,GAInB,IAHA,GAAIqO,GAAY,IAAMrO,EAAW,IAChC6B,EAAI,EACJwX,EAAIna,KAAK4B,OACEuY,EAAJxX,EAAOA,IACd,GAA0B,IAArB3C,KAAK2C,GAAGsC,WAAmB,IAAMjF,KAAK2C,GAAGwM,UAAY,KAAK7K,QAAQs0B,GAAQ,KAAKt4B,QAAS6O,IAAe,EAC3G,OAAO,CAIT,QAAO,IAOT,IAAIoqB,IAAU,KAEd14B,GAAOG,GAAGsC,QACT0N,IAAK,SAAU7K,GACd,GAAI+a,GAAO/e,EAAK4B,EACfrB,EAAO1C,KAAK,EAEb,EAAA,GAAM6C,UAAUjB,OAsBhB,MAFAmC,GAAalD,EAAOkD,WAAYoC,GAEzBnG,KAAKsC,KAAK,SAAUK,GAC1B,GAAIqO,EAEmB,KAAlBhR,KAAKiF,WAKT+L,EADIjN,EACEoC,EAAMrE,KAAM9B,KAAM2C,EAAG9B,EAAQb,MAAOgR,OAEpC7K,EAIK,MAAP6K,EACJA,EAAM,GAEoB,gBAARA,GAClBA,GAAO,GAEInQ,EAAOoD,QAAS+M,KAC3BA,EAAMnQ,EAAO4B,IAAKuO,EAAK,SAAU7K,GAChC,MAAgB,OAATA,EAAgB,GAAKA,EAAQ,MAItC+a,EAAQrgB,EAAO24B,SAAUx5B,KAAK4E,OAAU/D,EAAO24B,SAAUx5B,KAAKiG,SAASC,eAGjEgb,GAAW,OAASA,IAA8Chd,SAApCgd,EAAMnB,IAAK/f,KAAMgR,EAAK,WACzDhR,KAAKmG,MAAQ6K,KAnDd,IAAKtO,EAGJ,MAFAwe,GAAQrgB,EAAO24B,SAAU92B,EAAKkC,OAAU/D,EAAO24B,SAAU92B,EAAKuD,SAASC,eAElEgb,GAAS,OAASA,IAAgDhd,UAAtC/B,EAAM+e,EAAMnf,IAAKW,EAAM,UAChDP,GAGRA,EAAMO,EAAKyD,MAEW,gBAARhE,GAEbA,EAAImC,QAAQi1B,GAAS,IAEd,MAAPp3B,EAAc,GAAKA,OA4CxBtB,EAAOyC,QACNk2B,UACCvQ,QACClnB,IAAK,SAAUW,GACd,GAAIsO,GAAMnQ,EAAO0O,KAAKwB,KAAMrO,EAAM,QAClC,OAAc,OAAPsO,EACNA,EAGAnQ,EAAO2E,KAAM3E,EAAO6E,KAAMhD,MAG7BkF,QACC7F,IAAK,SAAUW,GAYd,IAXA,GAAIyD,GAAO8iB,EACV1lB,EAAUb,EAAKa,QACf+W,EAAQ5X,EAAKgS,cACb4T,EAAoB,eAAd5lB,EAAKkC,MAAiC,EAAR0V,EACpC0D,EAASsK,EAAM,QACfuH,EAAMvH,EAAMhO,EAAQ,EAAI/W,EAAQ3B,OAChCe,EAAY,EAAR2X,EACHuV,EACAvH,EAAMhO,EAAQ,EAGJuV,EAAJltB,EAASA,IAIhB,GAHAsmB,EAAS1lB,EAASZ,MAGXsmB,EAAOxU,UAAY9R,IAAM2X,IAE5B3Z,EAAQg3B,YAAe1O,EAAO1U,SAAiD,OAAtC0U,EAAOrc,aAAc,cAC7Dqc,EAAOpjB,WAAW0O,UAAa1T,EAAOoF,SAAUgjB,EAAOpjB,WAAY,aAAiB,CAMxF,GAHAM,EAAQtF,EAAQooB,GAASjY,MAGpBsX,EACJ,MAAOniB,EAIR6X,GAAO3d,KAAM8F,GAIf,MAAO6X,IAGR+B,IAAK,SAAUrd,EAAMyD,GACpB,GAAIszB,GAAWxQ,EACd1lB,EAAUb,EAAKa,QACfya,EAASnd,EAAOwF,UAAWF,GAC3BxD,EAAIY,EAAQ3B,MAEb,OAAQe,IACPsmB,EAAS1lB,EAASZ,IACZsmB,EAAOxU,SAAW5T,EAAO2F,QAASyiB,EAAO9iB,MAAO6X,IAAY,KACjEyb,GAAY,EAQd,OAHMA,KACL/2B,EAAKgS,cAAgB,IAEfsJ,OAOXnd,EAAOyB,MAAO,QAAS,YAAc,WACpCzB,EAAO24B,SAAUx5B,OAChB+f,IAAK,SAAUrd,EAAMyD,GACpB,MAAKtF,GAAOoD,QAASkC,GACXzD,EAAK8R,QAAU3T,EAAO2F,QAAS3F,EAAO6B,GAAMsO,MAAO7K,IAAW,EADxE,SAKIxF,EAAQ82B,UACb52B,EAAO24B,SAAUx5B,MAAO+B,IAAM,SAAUW,GACvC,MAAsC,QAA/BA,EAAKkK,aAAa,SAAoB,KAAOlK,EAAKyD,UAW5DtF,EAAOyB,KAAM,0MAEqD+E,MAAM,KAAM,SAAU1E,EAAGa,GAG1F3C,EAAOG,GAAIwC,GAAS,SAAUyY,EAAMjb,GACnC,MAAO6B,WAAUjB,OAAS,EACzB5B,KAAKqoB,GAAI7kB,EAAM,KAAMyY,EAAMjb,GAC3BhB,KAAKukB,QAAS/gB,MAIjB3C,EAAOG,GAAGsC,QACTo2B,MAAO,SAAUC,EAAQC,GACxB,MAAO55B,MAAK6nB,WAAY8R,GAAS7R,WAAY8R,GAASD,IAGvDE,KAAM,SAAU7W,EAAO/G,EAAMjb,GAC5B,MAAOhB,MAAKqoB,GAAIrF,EAAO,KAAM/G,EAAMjb,IAEpC84B,OAAQ,SAAU9W,EAAOhiB,GACxB,MAAOhB,MAAK4e,IAAKoE,EAAO,KAAMhiB,IAG/B+4B,SAAU,SAAUj5B,EAAUkiB,EAAO/G,EAAMjb,GAC1C,MAAOhB,MAAKqoB,GAAIrF,EAAOliB,EAAUmb,EAAMjb,IAExCg5B,WAAY,SAAUl5B,EAAUkiB,EAAOhiB,GAEtC,MAA4B,KAArB6B,UAAUjB,OAAe5B,KAAK4e,IAAK9d,EAAU,MAASd,KAAK4e,IAAKoE,EAAOliB,GAAY,KAAME,KAKlG,IAAIi5B,IAAQp5B,EAAOsG,MAEf+yB,GAAS,IAMbr5B,GAAO6f,UAAY,SAAUzE,GAC5B,MAAOke,MAAKC,MAAOne,EAAO,KAK3Bpb,EAAOw5B,SAAW,SAAUpe,GAC3B,GAAIpJ,GAAK3L,CACT,KAAM+U,GAAwB,gBAATA,GACpB,MAAO,KAIR,KACC/U,EAAM,GAAIozB,WACVznB,EAAM3L,EAAIqzB,gBAAiBte,EAAM,YAChC,MAAQvQ,GACTmH,EAAM3O,OAMP,QAHM2O,GAAOA,EAAIrG,qBAAsB,eAAgB5K,SACtDf,EAAO2D,MAAO,gBAAkByX,GAE1BpJ,EAIR,IACC2nB,IAAQ,OACRC,GAAM,gBACNC,GAAW,6BAEXC,GAAiB,4DACjBC,GAAa,iBACbC,GAAY,QACZC,GAAO,4DAWPC,MAOAC,MAGAC,GAAW,KAAK76B,OAAQ,KAGxB86B,GAAen7B,EAAOgU,SAASK,KAG/B+mB,GAAeL,GAAKzuB,KAAM6uB,GAAah1B,kBAGxC,SAASk1B,IAA6BC,GAGrC,MAAO,UAAUC,EAAoB7e,GAED,gBAAvB6e,KACX7e,EAAO6e,EACPA,EAAqB,IAGtB,IAAIC,GACH54B,EAAI,EACJ64B,EAAYF,EAAmBp1B,cAAc2F,MAAOqP,MAErD,IAAKra,EAAOkD,WAAY0Y,GAEvB,MAAS8e,EAAWC,EAAU74B,KAER,MAAhB44B,EAAS,IACbA,EAAWA,EAASp7B,MAAO,IAAO,KACjCk7B,EAAWE,GAAaF,EAAWE,QAAkB3qB,QAAS6L,KAI9D4e,EAAWE,GAAaF,EAAWE,QAAkBl7B,KAAMoc,IAQjE,QAASgf,IAA+BJ,EAAW93B,EAASgyB,EAAiBmG,GAE5E,GAAIC,MACHC,EAAqBP,IAAcL,EAEpC,SAASa,GAASN,GACjB,GAAI9mB,EAYJ,OAXAknB,GAAWJ,IAAa,EACxB16B,EAAOyB,KAAM+4B,EAAWE,OAAkB,SAAUrwB,EAAG4wB,GACtD,GAAIC,GAAsBD,EAAoBv4B,EAASgyB,EAAiBmG,EACxE,OAAoC,gBAAxBK,IAAqCH,GAAqBD,EAAWI,GAIrEH,IACDnnB,EAAWsnB,GADf,QAHNx4B,EAAQi4B,UAAU5qB,QAASmrB,GAC3BF,EAASE,IACF,KAKFtnB,EAGR,MAAOonB,GAASt4B,EAAQi4B,UAAW,MAAUG,EAAW,MAASE,EAAS,KAM3E,QAASG,IAAYn4B,EAAQJ,GAC5B,GAAI6J,GAAKxJ,EACRm4B,EAAcp7B,EAAOq7B,aAAaD,eAEnC,KAAM3uB,IAAO7J,GACQS,SAAfT,EAAK6J,MACP2uB,EAAa3uB,GAAQzJ,EAAWC,IAASA,OAAgBwJ,GAAQ7J,EAAK6J,GAO1E,OAJKxJ,IACJjD,EAAOyC,QAAQ,EAAMO,EAAQC,GAGvBD,EAOR,QAASs4B,IAAqBC,EAAGV,EAAOW,GAEvC,GAAIC,GAAI13B,EAAM23B,EAAeC,EAC5B7iB,EAAWyiB,EAAEziB,SACb6hB,EAAYY,EAAEZ,SAGf,OAA2B,MAAnBA,EAAW,GAClBA,EAAUhuB,QACEtJ,SAAPo4B,IACJA,EAAKF,EAAEK,UAAYf,EAAMgB,kBAAkB,gBAK7C,IAAKJ,EACJ,IAAM13B,IAAQ+U,GACb,GAAKA,EAAU/U,IAAU+U,EAAU/U,GAAO+H,KAAM2vB,GAAO,CACtDd,EAAU5qB,QAAShM,EACnB,OAMH,GAAK42B,EAAW,IAAOa,GACtBE,EAAgBf,EAAW,OACrB,CAEN,IAAM52B,IAAQy3B,GAAY,CACzB,IAAMb,EAAW,IAAOY,EAAEO,WAAY/3B,EAAO,IAAM42B,EAAU,IAAO,CACnEe,EAAgB33B,CAChB,OAEK43B,IACLA,EAAgB53B,GAIlB23B,EAAgBA,GAAiBC,EAMlC,MAAKD,IACCA,IAAkBf,EAAW,IACjCA,EAAU5qB,QAAS2rB,GAEbF,EAAWE,IAJnB,OAWD,QAASK,IAAaR,EAAGS,EAAUnB,EAAOoB,GACzC,GAAIC,GAAOC,EAASC,EAAM/1B,EAAK2S,EAC9B8iB,KAEAnB,EAAYY,EAAEZ,UAAUr7B,OAGzB,IAAKq7B,EAAW,GACf,IAAMyB,IAAQb,GAAEO,WACfA,EAAYM,EAAK/2B,eAAkBk2B,EAAEO,WAAYM,EAInDD,GAAUxB,EAAUhuB,OAGpB,OAAQwvB,EAcP,GAZKZ,EAAEc,eAAgBF,KACtBtB,EAAOU,EAAEc,eAAgBF,IAAcH,IAIlChjB,GAAQijB,GAAaV,EAAEe,aAC5BN,EAAWT,EAAEe,WAAYN,EAAUT,EAAEb,WAGtC1hB,EAAOmjB,EACPA,EAAUxB,EAAUhuB,QAKnB,GAAiB,MAAZwvB,EAEJA,EAAUnjB,MAGJ,IAAc,MAATA,GAAgBA,IAASmjB,EAAU,CAM9C,GAHAC,EAAON,EAAY9iB,EAAO,IAAMmjB,IAAaL,EAAY,KAAOK,IAG1DC,EACL,IAAMF,IAASJ,GAId,GADAz1B,EAAM61B,EAAM11B,MAAO,KACdH,EAAK,KAAQ81B,IAGjBC,EAAON,EAAY9iB,EAAO,IAAM3S,EAAK,KACpCy1B,EAAY,KAAOz1B,EAAK,KACb,CAEN+1B,KAAS,EACbA,EAAON,EAAYI,GAGRJ,EAAYI,MAAY,IACnCC,EAAU91B,EAAK,GACfs0B,EAAU5qB,QAAS1J,EAAK,IAEzB,OAOJ,GAAK+1B,KAAS,EAGb,GAAKA,GAAQb,EAAG,UACfS,EAAWI,EAAMJ,OAEjB,KACCA,EAAWI,EAAMJ,GAChB,MAAQnxB,GACT,OAASiR,MAAO,cAAenY,MAAOy4B,EAAOvxB,EAAI,sBAAwBmO,EAAO,OAASmjB,IAQ/F,OAASrgB,MAAO,UAAWV,KAAM4gB,GAGlCh8B,EAAOyC,QAGN85B,OAAQ,EAGRC,gBACAC,QAEApB,cACCqB,IAAKrC,GACLt2B,KAAM,MACN44B,QAAS7C,GAAehuB,KAAMwuB,GAAc,IAC5C37B,QAAQ,EACRi+B,aAAa,EACbC,OAAO,EACPC,YAAa,mDAabhe,SACC+T,IAAKuH,GACLv1B,KAAM,aACNmmB,KAAM,YACNhZ,IAAK,4BACL+qB,KAAM,qCAGPjkB,UACC9G,IAAK,MACLgZ,KAAM,OACN+R,KAAM,QAGPV,gBACCrqB,IAAK,cACLnN,KAAM,eACNk4B,KAAM,gBAKPjB,YAGCkB,SAAUvyB,OAGVwyB,aAAa,EAGbC,YAAal9B,EAAO6f,UAGpBsd,WAAYn9B,EAAOw5B,UAOpB4B,aACCsB,KAAK,EACLx8B,SAAS,IAOXk9B,UAAW,SAAUp6B,EAAQq6B,GAC5B,MAAOA,GAGNlC,GAAYA,GAAYn4B,EAAQhD,EAAOq7B,cAAgBgC,GAGvDlC,GAAYn7B,EAAOq7B,aAAcr4B,IAGnCs6B,cAAe/C,GAA6BL,IAC5CqD,cAAehD,GAA6BJ,IAG5CqD,KAAM,SAAUd,EAAKh6B,GAGA,gBAARg6B,KACXh6B,EAAUg6B,EACVA,EAAMr5B,QAIPX,EAAUA,KAEV,IAAI+6B,GAEHC,EAEAC,EACAC,EAEAC,EAEA3M,EAEA4M,EAEAh8B,EAEAy5B,EAAIv7B,EAAOo9B,aAAe16B,GAE1Bq7B,EAAkBxC,EAAEr7B,SAAWq7B,EAE/ByC,EAAqBzC,EAAEr7B,UAAa69B,EAAgB35B,UAAY25B,EAAgBl9B,QAC/Eb,EAAQ+9B,GACR/9B,EAAOkiB,MAERjG,EAAWjc,EAAO2b,WAClBsiB,EAAmBj+B,EAAO0a,UAAU,eAEpCwjB,EAAa3C,EAAE2C,eAEfC,KACAC,KAEAtiB,EAAQ,EAERuiB,EAAW,WAEXxD,GACC3c,WAAY,EAGZ2d,kBAAmB,SAAUpvB,GAC5B,GAAIzB,EACJ,IAAe,IAAV8Q,EAAc,CAClB,IAAM8hB,EAAkB,CACvBA,IACA,OAAS5yB,EAAQ6uB,GAASruB,KAAMmyB,GAC/BC,EAAiB5yB,EAAM,GAAG3F,eAAkB2F,EAAO,GAGrDA,EAAQ4yB,EAAiBnxB,EAAIpH,eAE9B,MAAgB,OAAT2F,EAAgB,KAAOA,GAI/BszB,sBAAuB,WACtB,MAAiB,KAAVxiB,EAAc6hB,EAAwB,MAI9CY,iBAAkB,SAAU57B,EAAM2C,GACjC,GAAIk5B,GAAQ77B,EAAK0C,aAKjB,OAJMyW,KACLnZ,EAAOy7B,EAAqBI,GAAUJ,EAAqBI,IAAW77B,EACtEw7B,EAAgBx7B,GAAS2C,GAEnBnG,MAIRs/B,iBAAkB,SAAU16B,GAI3B,MAHM+X,KACLyf,EAAEK,SAAW73B,GAEP5E,MAIR++B,WAAY,SAAUt8B,GACrB,GAAI2C,EACJ,IAAK3C,EACJ,GAAa,EAARka,EACJ,IAAMvX,IAAQ3C,GAEbs8B,EAAY35B,IAAW25B,EAAY35B,GAAQ3C,EAAK2C,QAIjDs2B,GAAM7e,OAAQpa,EAAKi5B,EAAM6D,QAG3B,OAAOv/B,OAIRw/B,MAAO,SAAUC,GAChB,GAAIC,GAAYD,GAAcP,CAK9B,OAJKZ,IACJA,EAAUkB,MAAOE,GAElBl3B,EAAM,EAAGk3B,GACF1/B,MAyCV,IApCA8c,EAASF,QAAS8e,GAAQ/F,SAAWmJ,EAAiBtkB,IACtDkhB,EAAMiE,QAAUjE,EAAMlzB,KACtBkzB,EAAMl3B,MAAQk3B,EAAM3e,KAMpBqf,EAAEmB,MAAUA,GAAOnB,EAAEmB,KAAOrC,IAAiB,IAAK52B,QAASk2B,GAAO,IAChEl2B,QAASu2B,GAAWM,GAAc,GAAM,MAG1CiB,EAAEx3B,KAAOrB,EAAQq8B,QAAUr8B,EAAQqB,MAAQw3B,EAAEwD,QAAUxD,EAAEx3B,KAGzDw3B,EAAEZ,UAAY36B,EAAO2E,KAAM42B,EAAEb,UAAY,KAAMr1B,cAAc2F,MAAOqP,KAAiB,IAG/D,MAAjBkhB,EAAEyD,cACN9N,EAAQ+I,GAAKzuB,KAAM+vB,EAAEmB,IAAIr3B,eACzBk2B,EAAEyD,eAAkB9N,GACjBA,EAAO,KAAQoJ,GAAc,IAAOpJ,EAAO,KAAQoJ,GAAc,KAChEpJ,EAAO,KAAwB,UAAfA,EAAO,GAAkB,KAAO,WAC/CoJ,GAAc,KAA+B,UAAtBA,GAAc,GAAkB,KAAO,UAK/DiB,EAAEngB,MAAQmgB,EAAEqB,aAAiC,gBAAXrB,GAAEngB,OACxCmgB,EAAEngB,KAAOpb,EAAOi/B,MAAO1D,EAAEngB,KAAMmgB,EAAE2D,cAIlCtE,GAA+BV,GAAYqB,EAAG74B,EAASm4B,GAGxC,IAAV/e,EACJ,MAAO+e,EAKRiD,GAAc99B,EAAOkiB,OAASqZ,EAAE58B,OAG3Bm/B,GAAmC,IAApB99B,EAAOu8B,UAC1Bv8B,EAAOkiB,MAAMwB,QAAQ,aAItB6X,EAAEx3B,KAAOw3B,EAAEx3B,KAAKpD,cAGhB46B,EAAE4D,YAAcpF,GAAWjuB,KAAMyvB,EAAEx3B,MAInC25B,EAAWnC,EAAEmB,IAGPnB,EAAE4D,aAGF5D,EAAEngB,OACNsiB,EAAanC,EAAEmB,MAASrD,GAAOvtB,KAAM4xB,GAAa,IAAM,KAAQnC,EAAEngB,WAE3DmgB,GAAEngB,MAILmgB,EAAE/uB,SAAU,IAChB+uB,EAAEmB,IAAM9C,GAAI9tB,KAAM4xB,GAGjBA,EAASj6B,QAASm2B,GAAK,OAASR,MAGhCsE,GAAarE,GAAOvtB,KAAM4xB,GAAa,IAAM,KAAQ,KAAOtE,OAK1DmC,EAAE6D,aACDp/B,EAAOw8B,aAAckB,IACzB7C,EAAM0D,iBAAkB,oBAAqBv+B,EAAOw8B,aAAckB,IAE9D19B,EAAOy8B,KAAMiB,IACjB7C,EAAM0D,iBAAkB,gBAAiBv+B,EAAOy8B,KAAMiB,MAKnDnC,EAAEngB,MAAQmgB,EAAE4D,YAAc5D,EAAEuB,eAAgB,GAASp6B,EAAQo6B,cACjEjC,EAAM0D,iBAAkB,eAAgBhD,EAAEuB,aAI3CjC,EAAM0D,iBACL,SACAhD,EAAEZ,UAAW,IAAOY,EAAEzc,QAASyc,EAAEZ,UAAU,IAC1CY,EAAEzc,QAASyc,EAAEZ,UAAU,KAA8B,MAArBY,EAAEZ,UAAW,GAAc,KAAOP,GAAW,WAAa,IAC1FmB,EAAEzc,QAAS,KAIb,KAAMhd,IAAKy5B,GAAE8D,QACZxE,EAAM0D,iBAAkBz8B,EAAGy5B,EAAE8D,QAASv9B,GAIvC,IAAKy5B,EAAE+D,aAAgB/D,EAAE+D,WAAWr+B,KAAM88B,EAAiBlD,EAAOU,MAAQ,GAAmB,IAAVzf,GAElF,MAAO+e,GAAM8D,OAIdN,GAAW,OAGX,KAAMv8B,KAAOg9B,QAAS,EAAGn7B,MAAO,EAAGmxB,SAAU,GAC5C+F,EAAO/4B,GAAKy5B,EAAGz5B,GAOhB,IAHA27B,EAAY7C,GAA+BT,GAAYoB,EAAG74B,EAASm4B,GAK5D,CACNA,EAAM3c,WAAa,EAGd4f,GACJE,EAAmBta,QAAS,YAAcmX,EAAOU,IAG7CA,EAAEsB,OAAStB,EAAE7E,QAAU,IAC3BmH,EAAe1f,WAAW,WACzB0c,EAAM8D,MAAM,YACVpD,EAAE7E,SAGN,KACC5a,EAAQ,EACR2hB,EAAU8B,KAAMpB,EAAgBx2B,GAC/B,MAAQkD,GAET,KAAa,EAARiR,GAIJ,KAAMjR,EAHNlD,GAAM,GAAIkD,QArBZlD,GAAM,GAAI,eA8BX,SAASA,GAAM+2B,EAAQc,EAAkBhE,EAAW6D,GACnD,GAAIpD,GAAW6C,EAASn7B,EAAOq4B,EAAUyD,EACxCb,EAAaY,CAGC,KAAV1jB,IAKLA,EAAQ,EAGH+hB,GACJlH,aAAckH,GAKfJ,EAAYp6B,OAGZs6B,EAAwB0B,GAAW,GAGnCxE,EAAM3c,WAAawgB,EAAS,EAAI,EAAI,EAGpCzC,EAAYyC,GAAU,KAAgB,IAATA,GAA2B,MAAXA,EAGxClD,IACJQ,EAAWV,GAAqBC,EAAGV,EAAOW,IAI3CQ,EAAWD,GAAaR,EAAGS,EAAUnB,EAAOoB,GAGvCA,GAGCV,EAAE6D,aACNK,EAAW5E,EAAMgB,kBAAkB,iBAC9B4D,IACJz/B,EAAOw8B,aAAckB,GAAa+B,GAEnCA,EAAW5E,EAAMgB,kBAAkB,QAC9B4D,IACJz/B,EAAOy8B,KAAMiB,GAAa+B,IAKZ,MAAXf,GAA6B,SAAXnD,EAAEx3B,KACxB66B,EAAa,YAGS,MAAXF,EACXE,EAAa,eAIbA,EAAa5C,EAASlgB,MACtBgjB,EAAU9C,EAAS5gB,KACnBzX,EAAQq4B,EAASr4B,MACjBs4B,GAAat4B,KAIdA,EAAQi7B,GACHF,IAAWE,KACfA,EAAa,QACC,EAATF,IACJA,EAAS,KAMZ7D,EAAM6D,OAASA,EACf7D,EAAM+D,YAAeY,GAAoBZ,GAAe,GAGnD3C,EACJhgB,EAASqB,YAAaygB,GAAmBe,EAASF,EAAY/D,IAE9D5e,EAAS2Y,WAAYmJ,GAAmBlD,EAAO+D,EAAYj7B,IAI5Dk3B,EAAMqD,WAAYA,GAClBA,EAAa76B,OAERy6B,GACJE,EAAmBta,QAASuY,EAAY,cAAgB,aACrDpB,EAAOU,EAAGU,EAAY6C,EAAUn7B,IAIpCs6B,EAAiBviB,SAAUqiB,GAAmBlD,EAAO+D,IAEhDd,IACJE,EAAmBta,QAAS,gBAAkBmX,EAAOU,MAE3Cv7B,EAAOu8B,QAChBv8B,EAAOkiB,MAAMwB,QAAQ,cAKxB,MAAOmX,IAGR6E,QAAS,SAAUhD,EAAKthB,EAAM1Z,GAC7B,MAAO1B,GAAOkB,IAAKw7B,EAAKthB,EAAM1Z,EAAU,SAGzCi+B,UAAW,SAAUjD,EAAKh7B,GACzB,MAAO1B,GAAOkB,IAAKw7B,EAAKr5B,OAAW3B,EAAU,aAI/C1B,EAAOyB,MAAQ,MAAO,QAAU,SAAUK,EAAGi9B,GAC5C/+B,EAAQ++B,GAAW,SAAUrC,EAAKthB,EAAM1Z,EAAUqC,GAQjD,MANK/D,GAAOkD,WAAYkY,KACvBrX,EAAOA,GAAQrC,EACfA,EAAW0Z,EACXA,EAAO/X,QAGDrD,EAAOw9B,MACbd,IAAKA,EACL34B,KAAMg7B,EACNrE,SAAU32B,EACVqX,KAAMA,EACN0jB,QAASp9B,OAMZ1B,EAAOsrB,SAAW,SAAUoR,GAC3B,MAAO18B,GAAOw9B,MACbd,IAAKA,EACL34B,KAAM,MACN22B,SAAU,SACVmC,OAAO,EACPl+B,QAAQ,EACRihC,UAAU,KAKZ5/B,EAAOG,GAAGsC,QACTo9B,QAAS,SAAU7U,GAClB,GAAIX,EAEJ,OAAKrqB,GAAOkD,WAAY8nB,GAChB7rB,KAAKsC,KAAK,SAAUK,GAC1B9B,EAAQb,MAAO0gC,QAAS7U,EAAK/pB,KAAK9B,KAAM2C,OAIrC3C,KAAM,KAGVkrB,EAAOrqB,EAAQgrB,EAAM7rB,KAAM,GAAIoM,eAAgBrJ,GAAI,GAAIa,OAAO,GAEzD5D,KAAM,GAAI6F,YACdqlB,EAAKO,aAAczrB,KAAM,IAG1BkrB,EAAKzoB,IAAI,WACR,GAAIC,GAAO1C,IAEX,OAAQ0C,EAAKi+B,kBACZj+B,EAAOA,EAAKi+B,iBAGb,OAAOj+B,KACL4oB,OAAQtrB,OAGLA,OAGR4gC,UAAW,SAAU/U,GACpB,MACQ7rB,MAAKsC,KADRzB,EAAOkD,WAAY8nB,GACN,SAAUlpB,GAC1B9B,EAAQb,MAAO4gC,UAAW/U,EAAK/pB,KAAK9B,KAAM2C,KAI3B,WAChB,GAAIwW,GAAOtY,EAAQb,MAClB2Z,EAAWR,EAAKQ,UAEZA,GAAS/X,OACb+X,EAAS+mB,QAAS7U,GAGlB1S,EAAKmS,OAAQO,MAKhBX,KAAM,SAAUW,GACf,GAAI9nB,GAAalD,EAAOkD,WAAY8nB,EAEpC,OAAO7rB,MAAKsC,KAAK,SAAUK,GAC1B9B,EAAQb,MAAO0gC,QAAS38B,EAAa8nB,EAAK/pB,KAAK9B,KAAM2C,GAAKkpB,MAI5DgV,OAAQ,WACP,MAAO7gC,MAAK6O,SAASvM,KAAK,WACnBzB,EAAOoF,SAAUjG,KAAM,SAC5Ba,EAAQb,MAAO8rB,YAAa9rB,KAAKyL,cAEhCtI,SAKLtC,EAAOgQ,KAAK4E,QAAQ+a,OAAS,SAAU9tB,GAGtC,MAAOA,GAAK0tB,aAAe,GAAK1tB,EAAK2tB,cAAgB,GAEtDxvB,EAAOgQ,KAAK4E,QAAQqrB,QAAU,SAAUp+B,GACvC,OAAQ7B,EAAOgQ,KAAK4E,QAAQ+a,OAAQ9tB,GAMrC,IAAIq+B,IAAM,OACTC,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,oCAEhB,SAASC,IAAazP,EAAQhtB,EAAKo7B,EAAavlB,GAC/C,GAAIhX,EAEJ,IAAK3C,EAAOoD,QAASU,GAEpB9D,EAAOyB,KAAMqC,EAAK,SAAUhC,EAAG0+B,GACzBtB,GAAeiB,GAASr0B,KAAMglB,GAElCnX,EAAKmX,EAAQ0P,GAIbD,GAAazP,EAAS,KAAqB,gBAAN0P,GAAiB1+B,EAAI,IAAO,IAAK0+B,EAAGtB,EAAavlB,SAIlF,IAAMulB,GAAsC,WAAvBl/B,EAAO+D,KAAMD,GAQxC6V,EAAKmX,EAAQhtB,OANb,KAAMnB,IAAQmB,GACby8B,GAAazP,EAAS,IAAMnuB,EAAO,IAAKmB,EAAKnB,GAAQu8B,EAAavlB,GAWrE3Z,EAAOi/B,MAAQ,SAAUh3B,EAAGi3B,GAC3B,GAAIpO,GACHyK,KACA5hB,EAAM,SAAUlN,EAAKnH,GAEpBA,EAAQtF,EAAOkD,WAAYoC,GAAUA,IAAqB,MAATA,EAAgB,GAAKA,EACtEi2B,EAAGA,EAAEx6B,QAAW0/B,mBAAoBh0B,GAAQ,IAAMg0B,mBAAoBn7B,GASxE,IALqBjC,SAAhB67B,IACJA,EAAcl/B,EAAOq7B,cAAgBr7B,EAAOq7B,aAAa6D,aAIrDl/B,EAAOoD,QAAS6E,IAASA,EAAEpH,SAAWb,EAAOmD,cAAe8E,GAEhEjI,EAAOyB,KAAMwG,EAAG,WACf0R,EAAKxa,KAAKwD,KAAMxD,KAAKmG,aAMtB,KAAMwrB,IAAU7oB,GACfs4B,GAAazP,EAAQ7oB,EAAG6oB,GAAUoO,EAAavlB,EAKjD,OAAO4hB,GAAEpvB,KAAM,KAAM1I,QAASy8B,GAAK,MAGpClgC,EAAOG,GAAGsC,QACTi+B,UAAW,WACV,MAAO1gC,GAAOi/B,MAAO9/B,KAAKwhC,mBAE3BA,eAAgB,WACf,MAAOxhC,MAAKyC,IAAI,WAEf,GAAIqO,GAAWjQ,EAAOmf,KAAMhgB,KAAM,WAClC,OAAO8Q,GAAWjQ,EAAOwF,UAAWyK,GAAa9Q,OAEjDwP,OAAO,WACP,GAAI5K,GAAO5E,KAAK4E,IAGhB,OAAO5E,MAAKwD,OAAS3C,EAAQb,MAAOoZ,GAAI,cACvC+nB,GAAax0B,KAAM3M,KAAKiG,YAAei7B,GAAgBv0B,KAAM/H,KAC3D5E,KAAKwU,UAAYuN,EAAepV,KAAM/H,MAEzCnC,IAAI,SAAUE,EAAGD,GACjB,GAAIsO,GAAMnQ,EAAQb,MAAOgR,KAEzB,OAAc,OAAPA,EACN,KACAnQ,EAAOoD,QAAS+M,GACfnQ,EAAO4B,IAAKuO,EAAK,SAAUA,GAC1B,OAASxN,KAAMd,EAAKc,KAAM2C,MAAO6K,EAAI1M,QAAS28B,GAAO,YAEpDz9B,KAAMd,EAAKc,KAAM2C,MAAO6K,EAAI1M,QAAS28B,GAAO,WAC9Cl/B,SAKLlB,EAAOq7B,aAAauF,IAAM,WACzB,IACC,MAAO,IAAIC,gBACV,MAAOh2B,KAGV,IAAIi2B,IAAQ,EACXC,MACAC,IAEC,EAAG,IAGHC,KAAM,KAEPC,GAAelhC,EAAOq7B,aAAauF,KAK/B1hC,GAAOmP,aACXnP,EAAOmP,YAAa,WAAY,WAC/B,IAAM,GAAI5B,KAAOs0B,IAChBA,GAAct0B,OAKjB3M,EAAQqhC,OAASD,IAAkB,mBAAqBA,IACxDphC,EAAQ09B,KAAO0D,KAAiBA,GAEhClhC,EAAOu9B,cAAc,SAAU76B,GAC9B,GAAIhB,EAGJ,OAAK5B,GAAQqhC,MAAQD,KAAiBx+B,EAAQs8B,aAE5CO,KAAM,SAAUF,EAASvK,GACxB,GAAIhzB,GACH8+B,EAAMl+B,EAAQk+B,MACdl1B,IAAOo1B,EAKR,IAHAF,EAAIQ,KAAM1+B,EAAQqB,KAAMrB,EAAQg6B,IAAKh6B,EAAQm6B,MAAOn6B,EAAQ2+B,SAAU3+B,EAAQ8R,UAGzE9R,EAAQ4+B,UACZ,IAAMx/B,IAAKY,GAAQ4+B,UAClBV,EAAK9+B,GAAMY,EAAQ4+B,UAAWx/B,EAK3BY,GAAQk5B,UAAYgF,EAAInC,kBAC5BmC,EAAInC,iBAAkB/7B,EAAQk5B,UAQzBl5B,EAAQs8B,aAAgBK,EAAQ,sBACrCA,EAAQ,oBAAsB,iBAI/B,KAAMv9B,IAAKu9B,GACVuB,EAAIrC,iBAAkBz8B,EAAGu9B,EAASv9B,GAInCJ,GAAW,SAAUqC,GACpB,MAAO,YACDrC,UACGq/B,IAAcr1B,GACrBhK,EAAWk/B,EAAIW,OAASX,EAAIY,QAAU,KAExB,UAATz9B,EACJ68B,EAAIjC,QACgB,UAAT56B,EACX+wB,EAEC8L,EAAIlC,OACJkC,EAAIhC,YAGL9J,EACCkM,GAAkBJ,EAAIlC,SAAYkC,EAAIlC,OACtCkC,EAAIhC,WAIwB,gBAArBgC,GAAIa,cACV58B,KAAM+7B,EAAIa,cACPp+B,OACJu9B,EAAItC,4BAQTsC,EAAIW,OAAS7/B,IACbk/B,EAAIY,QAAU9/B,EAAS,SAGvBA,EAAWq/B,GAAcr1B,GAAOhK,EAAS,QAEzC,KAECk/B,EAAIrB,KAAM78B,EAAQy8B,YAAcz8B,EAAQ0Y,MAAQ,MAC/C,MAAQvQ,GAET,GAAKnJ,EACJ,KAAMmJ,KAKT8zB,MAAO,WACDj9B,GACJA,MAvFJ,SAkGD1B,EAAOo9B,WACNte,SACCta,OAAQ,6FAETsU,UACCtU,OAAQ,uBAETs3B,YACC4F,cAAe,SAAU78B,GAExB,MADA7E,GAAOsE,WAAYO,GACZA,MAMV7E,EAAOs9B,cAAe,SAAU,SAAU/B,GACxBl4B,SAAZk4B,EAAE/uB,QACN+uB,EAAE/uB,OAAQ,GAEN+uB,EAAEyD,cACNzD,EAAEx3B,KAAO,SAKX/D,EAAOu9B,cAAe,SAAU,SAAUhC,GAEzC,GAAKA,EAAEyD,YAAc,CACpB,GAAIx6B,GAAQ9C,CACZ,QACC69B,KAAM,SAAUl1B,EAAGyqB,GAClBtwB,EAASxE,EAAO,YAAYmf,MAC3B0d,OAAO,EACP8E,QAASpG,EAAEqG,cACXh/B,IAAK24B,EAAEmB,MACLlV,GACF,aACA9lB,EAAW,SAAUmgC,GACpBr9B,EAAO+W,SACP7Z,EAAW,KACNmgC,GACJ/M,EAAuB,UAAb+M,EAAI99B,KAAmB,IAAM,IAAK89B,EAAI99B,QAInDhF,EAAS+F,KAAKC,YAAaP,EAAQ,KAEpCm6B,MAAO,WACDj9B,GACJA,QAUL,IAAIogC,OACHC,GAAS,mBAGV/hC,GAAOo9B,WACN4E,MAAO,WACPC,cAAe,WACd,GAAIvgC,GAAWogC,GAAa15B,OAAWpI,EAAOsD,QAAU,IAAQ81B,IAEhE,OADAj6B,MAAMuC,IAAa,EACZA,KAKT1B,EAAOs9B,cAAe,aAAc,SAAU/B,EAAG2G,EAAkBrH,GAElE,GAAIsH,GAAcC,EAAaC,EAC9BC,EAAW/G,EAAEyG,SAAU,IAAWD,GAAOj2B,KAAMyvB,EAAEmB,KAChD,MACkB,gBAAXnB,GAAEngB,QAAwBmgB,EAAEuB,aAAe,IAAKr9B,QAAQ,sCAAwCsiC,GAAOj2B,KAAMyvB,EAAEngB,OAAU,OAIlI,OAAKknB,IAAiC,UAArB/G,EAAEZ,UAAW,IAG7BwH,EAAe5G,EAAE0G,cAAgBjiC,EAAOkD,WAAYq4B,EAAE0G,eACrD1G,EAAE0G,gBACF1G,EAAE0G,cAGEK,EACJ/G,EAAG+G,GAAa/G,EAAG+G,GAAW7+B,QAASs+B,GAAQ,KAAOI,GAC3C5G,EAAEyG,SAAU,IACvBzG,EAAEmB,MAASrD,GAAOvtB,KAAMyvB,EAAEmB,KAAQ,IAAM,KAAQnB,EAAEyG,MAAQ,IAAMG,GAIjE5G,EAAEO,WAAW,eAAiB,WAI7B,MAHMuG,IACLriC,EAAO2D,MAAOw+B,EAAe,mBAEvBE,EAAmB,IAI3B9G,EAAEZ,UAAW,GAAM,OAGnByH,EAAcljC,EAAQijC,GACtBjjC,EAAQijC,GAAiB,WACxBE,EAAoBrgC,WAIrB64B,EAAM7e,OAAO,WAEZ9c,EAAQijC,GAAiBC,EAGpB7G,EAAG4G,KAEP5G,EAAE0G,cAAgBC,EAAiBD,cAGnCH,GAAatiC,KAAM2iC,IAIfE,GAAqBriC,EAAOkD,WAAYk/B,IAC5CA,EAAaC,EAAmB,IAGjCA,EAAoBD,EAAc/+B,SAI5B,UAtDR,SAgEDrD,EAAOyY,UAAY,SAAU2C,EAAMlb,EAASqiC,GAC3C,IAAMnnB,GAAwB,gBAATA,GACpB,MAAO,KAEgB,kBAAZlb,KACXqiC,EAAcriC,EACdA,GAAU,GAEXA,EAAUA,GAAWnB,CAErB,IAAIyjC,GAAStqB,EAAW1M,KAAM4P,GAC7B+O,GAAWoY,KAGZ,OAAKC,IACKtiC,EAAQ0E,cAAe49B,EAAO,MAGxCA,EAASxiC,EAAOkqB,eAAiB9O,GAAQlb,EAASiqB,GAE7CA,GAAWA,EAAQppB,QACvBf,EAAQmqB,GAAU5O,SAGZvb,EAAOuB,SAAWihC,EAAO53B,aAKjC,IAAI63B,IAAQziC,EAAOG,GAAGkmB,IAKtBrmB,GAAOG,GAAGkmB,KAAO,SAAUqW,EAAKgG,EAAQhhC,GACvC,GAAoB,gBAARg7B,IAAoB+F,GAC/B,MAAOA,IAAM1gC,MAAO5C,KAAM6C,UAG3B,IAAI/B,GAAU8D,EAAMi4B,EACnB1jB,EAAOnZ,KACP4e,EAAM2e,EAAIj9B,QAAQ,IA+CnB,OA7CKse,IAAO,IACX9d,EAAWD,EAAO2E,KAAM+3B,EAAIp9B,MAAOye,IACnC2e,EAAMA,EAAIp9B,MAAO,EAAGye,IAIhB/d,EAAOkD,WAAYw/B,IAGvBhhC,EAAWghC,EACXA,EAASr/B,QAGEq/B,GAA4B,gBAAXA,KAC5B3+B,EAAO,QAIHuU,EAAKvX,OAAS,GAClBf,EAAOw9B,MACNd,IAAKA,EAGL34B,KAAMA,EACN22B,SAAU,OACVtf,KAAMsnB,IACJ/6B,KAAK,SAAU85B,GAGjBzF,EAAWh6B,UAEXsW,EAAK0S,KAAM/qB,EAIVD,EAAO,SAASyqB,OAAQzqB,EAAOyY,UAAWgpB,IAAiB/yB,KAAMzO,GAGjEwhC,KAEC3M,SAAUpzB,GAAY,SAAUm5B,EAAO6D,GACzCpmB,EAAK7W,KAAMC,EAAUs6B,IAAcnB,EAAM4G,aAAc/C,EAAQ7D,MAI1D17B,MAORa,EAAOyB,MAAQ,YAAa,WAAY,eAAgB,YAAa,cAAe,YAAc,SAAUK,EAAGiC,GAC9G/D,EAAOG,GAAI4D,GAAS,SAAU5D,GAC7B,MAAOhB,MAAKqoB,GAAIzjB,EAAM5D,MAOxBH,EAAOgQ,KAAK4E,QAAQ+tB,SAAW,SAAU9gC,GACxC,MAAO7B,GAAO6F,KAAK7F,EAAO21B,OAAQ,SAAUx1B,GAC3C,MAAO0B,KAAS1B,EAAG0B,OACjBd,OAMJ,IAAIqG,IAAUlI,EAAOH,SAAS8O,eAK9B,SAAS+0B,IAAW/gC,GACnB,MAAO7B,GAAOiE,SAAUpC,GAASA,EAAyB,IAAlBA,EAAKuC,UAAkBvC,EAAKqM,YAGrElO,EAAO6iC,QACNC,UAAW,SAAUjhC,EAAMa,EAASZ,GACnC,GAAIihC,GAAaC,EAASC,EAAWC,EAAQC,EAAWC,EAAYC,EACnEhV,EAAWruB,EAAOihB,IAAKpf,EAAM,YAC7ByhC,EAAUtjC,EAAQ6B,GAClBojB,IAGiB,YAAboJ,IACJxsB,EAAKkqB,MAAMsC,SAAW,YAGvB8U,EAAYG,EAAQT,SACpBI,EAAYjjC,EAAOihB,IAAKpf,EAAM,OAC9BuhC,EAAapjC,EAAOihB,IAAKpf,EAAM,QAC/BwhC,GAAmC,aAAbhV,GAAwC,UAAbA,KAC9C4U,EAAYG,GAAa3jC,QAAQ,QAAU,GAIzC4jC,GACJN,EAAcO,EAAQjV,WACtB6U,EAASH,EAAY50B,IACrB60B,EAAUD,EAAYQ,OAGtBL,EAAS/+B,WAAY8+B,IAAe,EACpCD,EAAU7+B,WAAYi/B,IAAgB,GAGlCpjC,EAAOkD,WAAYR,KACvBA,EAAUA,EAAQzB,KAAMY,EAAMC,EAAGqhC,IAGd,MAAfzgC,EAAQyL,MACZ8W,EAAM9W,IAAQzL,EAAQyL,IAAMg1B,EAAUh1B,IAAQ+0B,GAE1B,MAAhBxgC,EAAQ6gC,OACZte,EAAMse,KAAS7gC,EAAQ6gC,KAAOJ,EAAUI,KAASP,GAG7C,SAAWtgC,GACfA,EAAQ8gC,MAAMviC,KAAMY,EAAMojB,GAG1Bqe,EAAQriB,IAAKgE,KAKhBjlB,EAAOG,GAAGsC,QACTogC,OAAQ,SAAUngC,GACjB,GAAKV,UAAUjB,OACd,MAAmBsC,UAAZX,EACNvD,KACAA,KAAKsC,KAAK,SAAUK,GACnB9B,EAAO6iC,OAAOC,UAAW3jC,KAAMuD,EAASZ,IAI3C,IAAIsF,GAASq8B,EACZ5hC,EAAO1C,KAAM,GACbukC,GAAQv1B,IAAK,EAAGo1B,KAAM,GACtBt1B,EAAMpM,GAAQA,EAAK0J,aAEpB,IAAM0C,EAON,MAHA7G,GAAU6G,EAAIJ,gBAGR7N,EAAOwH,SAAUJ,EAASvF,UAMpBA,GAAK8hC,wBAA0BniB,IAC1CkiB,EAAM7hC,EAAK8hC,yBAEZF,EAAMb,GAAW30B,IAEhBE,IAAKu1B,EAAIv1B,IAAMs1B,EAAIG,YAAcx8B,EAAQ8e,UACzCqd,KAAMG,EAAIH,KAAOE,EAAII,YAAcz8B,EAAQ0e,aAXpC4d,GAeTrV,SAAU,WACT,GAAMlvB,KAAM,GAAZ,CAIA,GAAI2kC,GAAcjB,EACjBhhC,EAAO1C,KAAM,GACb4kC,GAAiB51B,IAAK,EAAGo1B,KAAM,EAuBhC,OApBwC,UAAnCvjC,EAAOihB,IAAKpf,EAAM,YAEtBghC,EAAShhC,EAAK8hC,yBAIdG,EAAe3kC,KAAK2kC,eAGpBjB,EAAS1jC,KAAK0jC,SACR7iC,EAAOoF,SAAU0+B,EAAc,GAAK,UACzCC,EAAeD,EAAajB,UAI7BkB,EAAa51B,KAAOnO,EAAOihB,IAAK6iB,EAAc,GAAK,kBAAkB,GACrEC,EAAaR,MAAQvjC,EAAOihB,IAAK6iB,EAAc,GAAK,mBAAmB,KAKvE31B,IAAK00B,EAAO10B,IAAM41B,EAAa51B,IAAMnO,EAAOihB,IAAKpf,EAAM,aAAa,GACpE0hC,KAAMV,EAAOU,KAAOQ,EAAaR,KAAOvjC,EAAOihB,IAAKpf,EAAM,cAAc,MAI1EiiC,aAAc,WACb,MAAO3kC,MAAKyC,IAAI,WACf,GAAIkiC,GAAe3kC,KAAK2kC,cAAgB18B,EAExC,OAAQ08B,IAAmB9jC,EAAOoF,SAAU0+B,EAAc,SAAuD,WAA3C9jC,EAAOihB,IAAK6iB,EAAc,YAC/FA,EAAeA,EAAaA,YAG7B,OAAOA,IAAgB18B,QAM1BpH,EAAOyB,MAAQokB,WAAY,cAAeI,UAAW,eAAiB,SAAU8Y,EAAQ5f,GACvF,GAAIhR,GAAM,gBAAkBgR,CAE5Bnf,GAAOG,GAAI4+B,GAAW,SAAU5uB,GAC/B,MAAOiO,GAAQjf,KAAM,SAAU0C,EAAMk9B,EAAQ5uB,GAC5C,GAAIszB,GAAMb,GAAW/gC,EAErB,OAAawB,UAAR8M,EACGszB,EAAMA,EAAKtkB,GAAStd,EAAMk9B,QAG7B0E,EACJA,EAAIO,SACF71B,EAAYjP,EAAO2kC,YAAb1zB,EACPhC,EAAMgC,EAAMjR,EAAO0kC,aAIpB/hC,EAAMk9B,GAAW5uB,IAEhB4uB,EAAQ5uB,EAAKnO,UAAUjB,OAAQ,SAUpCf,EAAOyB,MAAQ,MAAO,QAAU,SAAUK,EAAGqd,GAC5Cnf,EAAO4vB,SAAUzQ,GAAS6N,GAAcltB,EAAQ6tB,cAC/C,SAAU9rB,EAAM8qB,GACf,MAAKA,IACJA,EAAWD,GAAQ7qB,EAAMsd,GAElBmN,GAAUxgB,KAAM6gB,GACtB3sB,EAAQ6B,GAAOwsB,WAAYlP,GAAS,KACpCwN,GALF,WAaH3sB,EAAOyB,MAAQwiC,OAAQ,SAAUC,MAAO,SAAW,SAAUvhC,EAAMoB,GAClE/D,EAAOyB,MAAQmvB,QAAS,QAAUjuB,EAAMqmB,QAASjlB,EAAM,GAAI,QAAUpB,GAAQ,SAAUwhC,EAAcC,GAEpGpkC,EAAOG,GAAIikC,GAAa,SAAUzT,EAAQrrB,GACzC,GAAI+Y,GAAYrc,UAAUjB,SAAYojC,GAAkC,iBAAXxT,IAC5DzB,EAAQiV,IAAkBxT,KAAW,GAAQrrB,KAAU,EAAO,SAAW,SAE1E,OAAO8Y,GAAQjf,KAAM,SAAU0C,EAAMkC,EAAMuB,GAC1C,GAAI2I,EAEJ,OAAKjO,GAAOiE,SAAUpC,GAIdA,EAAK9C,SAAS8O,gBAAiB,SAAWlL,GAI3B,IAAlBd,EAAKuC,UACT6J,EAAMpM,EAAKgM,gBAIJtK,KAAKyrB,IACXntB,EAAK6jB,KAAM,SAAW/iB,GAAQsL,EAAK,SAAWtL,GAC9Cd,EAAK6jB,KAAM,SAAW/iB,GAAQsL,EAAK,SAAWtL,GAC9CsL,EAAK,SAAWtL,KAIDU,SAAViC,EAENtF,EAAOihB,IAAKpf,EAAMkC,EAAMmrB,GAGxBlvB,EAAO+rB,MAAOlqB,EAAMkC,EAAMuB,EAAO4pB,IAChCnrB,EAAMsa,EAAYsS,EAASttB,OAAWgb,EAAW,WAOvDre,EAAOG,GAAGkkC,KAAO,WAChB,MAAOllC,MAAK4B,QAGbf,EAAOG,GAAGmkC,QAAUtkC,EAAOG,GAAGyZ,QAkBP,kBAAX2qB,SAAyBA,OAAOC,KAC3CD,OAAQ,YAAc,WACrB,MAAOvkC,IAOT,IAECykC,IAAUvlC,EAAOc,OAGjB0kC,GAAKxlC,EAAOylC,CAwBb,OAtBA3kC,GAAO4kC,WAAa,SAAU3hC,GAS7B,MARK/D,GAAOylC,IAAM3kC,IACjBd,EAAOylC,EAAID,IAGPzhC,GAAQ/D,EAAOc,SAAWA,IAC9Bd,EAAOc,OAASykC,IAGVzkC,SAMIZ,KAAaoiB,IACxBtiB,EAAOc,OAASd,EAAOylC,EAAI3kC,GAMrBA"}
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/package.json b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/package.json
new file mode 100644 (file)
index 0000000..6303854
--- /dev/null
@@ -0,0 +1,89 @@
+{
+  "name": "jquery",
+  "title": "jQuery",
+  "description": "JavaScript library for DOM operations",
+  "version": "2.1.4",
+  "main": "dist/jquery.js",
+  "homepage": "http://jquery.com",
+  "author": {
+    "name": "jQuery Foundation and other contributors",
+    "url": "https://github.com/jquery/jquery/blob/2.1.4/AUTHORS.txt"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/jquery/jquery.git"
+  },
+  "keywords": [
+    "jquery",
+    "javascript",
+    "browser",
+    "library"
+  ],
+  "bugs": {
+    "url": "http://bugs.jquery.com"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "https://github.com/jquery/jquery/blob/2.1.4/MIT-LICENSE.txt"
+    }
+  ],
+  "dependencies": {},
+  "devDependencies": {
+    "commitplease": "2.0.0",
+    "grunt": "0.4.2",
+    "grunt-bowercopy": "0.7.1",
+    "grunt-cli": "0.1.13",
+    "grunt-compare-size": "0.4.0",
+    "grunt-contrib-jshint": "0.8.0",
+    "grunt-contrib-uglify": "0.3.2",
+    "grunt-contrib-watch": "0.5.3",
+    "grunt-git-authors": "1.2.0",
+    "grunt-jscs-checker": "0.4.1",
+    "grunt-jsonlint": "1.0.4",
+    "gzip-js": "0.3.2",
+    "jsdom": "1.5.0",
+    "load-grunt-tasks": "0.3.0",
+    "requirejs": "2.1.10",
+    "testswarm": "1.1.0"
+  },
+  "scripts": {
+    "build": "npm install && grunt",
+    "start": "grunt watch",
+    "test": "grunt"
+  },
+  "gitHead": "7751e69b615c6eca6f783a81e292a55725af6b85",
+  "_id": "jquery@2.1.4",
+  "_shasum": "228bde698a0c61431dc2630a6a154f15890d2317",
+  "_from": "jquery@>=2.1.3 <3.0.0",
+  "_npmVersion": "2.7.4",
+  "_nodeVersion": "0.12.2",
+  "_npmUser": {
+    "name": "timmywil",
+    "email": "timmywillisn@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "dmethvin",
+      "email": "dave.methvin@gmail.com"
+    },
+    {
+      "name": "scott.gonzalez",
+      "email": "scott.gonzalez@gmail.com"
+    },
+    {
+      "name": "m_gol",
+      "email": "m.goleb@gmail.com"
+    },
+    {
+      "name": "timmywil",
+      "email": "timmywillisn@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "228bde698a0c61431dc2630a6a154f15890d2317",
+    "tarball": "http://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax.js
new file mode 100644 (file)
index 0000000..5c7b4ad
--- /dev/null
@@ -0,0 +1,786 @@
+define([
+       "./core",
+       "./var/rnotwhite",
+       "./ajax/var/nonce",
+       "./ajax/var/rquery",
+       "./core/init",
+       "./ajax/parseJSON",
+       "./ajax/parseXML",
+       "./deferred"
+], function( jQuery, rnotwhite, nonce, rquery ) {
+
+var
+       rhash = /#.*$/,
+       rts = /([?&])_=[^&]*/,
+       rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+       // #7653, #8125, #8152: local protocol detection
+       rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+       rnoContent = /^(?:GET|HEAD)$/,
+       rprotocol = /^\/\//,
+       rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
+
+       /* Prefilters
+        * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+        * 2) These are called:
+        *    - BEFORE asking for a transport
+        *    - AFTER param serialization (s.data is a string if s.processData is true)
+        * 3) key is the dataType
+        * 4) the catchall symbol "*" can be used
+        * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+        */
+       prefilters = {},
+
+       /* Transports bindings
+        * 1) key is the dataType
+        * 2) the catchall symbol "*" can be used
+        * 3) selection will start with transport dataType and THEN go to "*" if needed
+        */
+       transports = {},
+
+       // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+       allTypes = "*/".concat( "*" ),
+
+       // Document location
+       ajaxLocation = window.location.href,
+
+       // Segment location into parts
+       ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+       // dataTypeExpression is optional and defaults to "*"
+       return function( dataTypeExpression, func ) {
+
+               if ( typeof dataTypeExpression !== "string" ) {
+                       func = dataTypeExpression;
+                       dataTypeExpression = "*";
+               }
+
+               var dataType,
+                       i = 0,
+                       dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
+
+               if ( jQuery.isFunction( func ) ) {
+                       // For each dataType in the dataTypeExpression
+                       while ( (dataType = dataTypes[i++]) ) {
+                               // Prepend if requested
+                               if ( dataType[0] === "+" ) {
+                                       dataType = dataType.slice( 1 ) || "*";
+                                       (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+                               // Otherwise append
+                               } else {
+                                       (structure[ dataType ] = structure[ dataType ] || []).push( func );
+                               }
+                       }
+               }
+       };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+       var inspected = {},
+               seekingTransport = ( structure === transports );
+
+       function inspect( dataType ) {
+               var selected;
+               inspected[ dataType ] = true;
+               jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+                       var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+                       if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+                               options.dataTypes.unshift( dataTypeOrTransport );
+                               inspect( dataTypeOrTransport );
+                               return false;
+                       } else if ( seekingTransport ) {
+                               return !( selected = dataTypeOrTransport );
+                       }
+               });
+               return selected;
+       }
+
+       return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+       var key, deep,
+               flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+       for ( key in src ) {
+               if ( src[ key ] !== undefined ) {
+                       ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+               }
+       }
+       if ( deep ) {
+               jQuery.extend( true, target, deep );
+       }
+
+       return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+       var ct, type, finalDataType, firstDataType,
+               contents = s.contents,
+               dataTypes = s.dataTypes;
+
+       // Remove auto dataType and get content-type in the process
+       while ( dataTypes[ 0 ] === "*" ) {
+               dataTypes.shift();
+               if ( ct === undefined ) {
+                       ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+               }
+       }
+
+       // Check if we're dealing with a known content-type
+       if ( ct ) {
+               for ( type in contents ) {
+                       if ( contents[ type ] && contents[ type ].test( ct ) ) {
+                               dataTypes.unshift( type );
+                               break;
+                       }
+               }
+       }
+
+       // Check to see if we have a response for the expected dataType
+       if ( dataTypes[ 0 ] in responses ) {
+               finalDataType = dataTypes[ 0 ];
+       } else {
+               // Try convertible dataTypes
+               for ( type in responses ) {
+                       if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+                               finalDataType = type;
+                               break;
+                       }
+                       if ( !firstDataType ) {
+                               firstDataType = type;
+                       }
+               }
+               // Or just use first one
+               finalDataType = finalDataType || firstDataType;
+       }
+
+       // If we found a dataType
+       // We add the dataType to the list if needed
+       // and return the corresponding response
+       if ( finalDataType ) {
+               if ( finalDataType !== dataTypes[ 0 ] ) {
+                       dataTypes.unshift( finalDataType );
+               }
+               return responses[ finalDataType ];
+       }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+       var conv2, current, conv, tmp, prev,
+               converters = {},
+               // Work with a copy of dataTypes in case we need to modify it for conversion
+               dataTypes = s.dataTypes.slice();
+
+       // Create converters map with lowercased keys
+       if ( dataTypes[ 1 ] ) {
+               for ( conv in s.converters ) {
+                       converters[ conv.toLowerCase() ] = s.converters[ conv ];
+               }
+       }
+
+       current = dataTypes.shift();
+
+       // Convert to each sequential dataType
+       while ( current ) {
+
+               if ( s.responseFields[ current ] ) {
+                       jqXHR[ s.responseFields[ current ] ] = response;
+               }
+
+               // Apply the dataFilter if provided
+               if ( !prev && isSuccess && s.dataFilter ) {
+                       response = s.dataFilter( response, s.dataType );
+               }
+
+               prev = current;
+               current = dataTypes.shift();
+
+               if ( current ) {
+
+               // There's only work to do if current dataType is non-auto
+                       if ( current === "*" ) {
+
+                               current = prev;
+
+                       // Convert response if prev dataType is non-auto and differs from current
+                       } else if ( prev !== "*" && prev !== current ) {
+
+                               // Seek a direct converter
+                               conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+                               // If none found, seek a pair
+                               if ( !conv ) {
+                                       for ( conv2 in converters ) {
+
+                                               // If conv2 outputs current
+                                               tmp = conv2.split( " " );
+                                               if ( tmp[ 1 ] === current ) {
+
+                                                       // If prev can be converted to accepted input
+                                                       conv = converters[ prev + " " + tmp[ 0 ] ] ||
+                                                               converters[ "* " + tmp[ 0 ] ];
+                                                       if ( conv ) {
+                                                               // Condense equivalence converters
+                                                               if ( conv === true ) {
+                                                                       conv = converters[ conv2 ];
+
+                                                               // Otherwise, insert the intermediate dataType
+                                                               } else if ( converters[ conv2 ] !== true ) {
+                                                                       current = tmp[ 0 ];
+                                                                       dataTypes.unshift( tmp[ 1 ] );
+                                                               }
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               // Apply converter (if not an equivalence)
+                               if ( conv !== true ) {
+
+                                       // Unless errors are allowed to bubble, catch and return them
+                                       if ( conv && s[ "throws" ] ) {
+                                               response = conv( response );
+                                       } else {
+                                               try {
+                                                       response = conv( response );
+                                               } catch ( e ) {
+                                                       return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       return { state: "success", data: response };
+}
+
+jQuery.extend({
+
+       // Counter for holding the number of active queries
+       active: 0,
+
+       // Last-Modified header cache for next request
+       lastModified: {},
+       etag: {},
+
+       ajaxSettings: {
+               url: ajaxLocation,
+               type: "GET",
+               isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+               global: true,
+               processData: true,
+               async: true,
+               contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+               /*
+               timeout: 0,
+               data: null,
+               dataType: null,
+               username: null,
+               password: null,
+               cache: null,
+               throws: false,
+               traditional: false,
+               headers: {},
+               */
+
+               accepts: {
+                       "*": allTypes,
+                       text: "text/plain",
+                       html: "text/html",
+                       xml: "application/xml, text/xml",
+                       json: "application/json, text/javascript"
+               },
+
+               contents: {
+                       xml: /xml/,
+                       html: /html/,
+                       json: /json/
+               },
+
+               responseFields: {
+                       xml: "responseXML",
+                       text: "responseText",
+                       json: "responseJSON"
+               },
+
+               // Data converters
+               // Keys separate source (or catchall "*") and destination types with a single space
+               converters: {
+
+                       // Convert anything to text
+                       "* text": String,
+
+                       // Text to html (true = no transformation)
+                       "text html": true,
+
+                       // Evaluate text as a json expression
+                       "text json": jQuery.parseJSON,
+
+                       // Parse text as xml
+                       "text xml": jQuery.parseXML
+               },
+
+               // For options that shouldn't be deep extended:
+               // you can add your own custom options here if
+               // and when you create one that shouldn't be
+               // deep extended (see ajaxExtend)
+               flatOptions: {
+                       url: true,
+                       context: true
+               }
+       },
+
+       // Creates a full fledged settings object into target
+       // with both ajaxSettings and settings fields.
+       // If target is omitted, writes into ajaxSettings.
+       ajaxSetup: function( target, settings ) {
+               return settings ?
+
+                       // Building a settings object
+                       ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+                       // Extending ajaxSettings
+                       ajaxExtend( jQuery.ajaxSettings, target );
+       },
+
+       ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+       ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+       // Main method
+       ajax: function( url, options ) {
+
+               // If url is an object, simulate pre-1.5 signature
+               if ( typeof url === "object" ) {
+                       options = url;
+                       url = undefined;
+               }
+
+               // Force options to be an object
+               options = options || {};
+
+               var transport,
+                       // URL without anti-cache param
+                       cacheURL,
+                       // Response headers
+                       responseHeadersString,
+                       responseHeaders,
+                       // timeout handle
+                       timeoutTimer,
+                       // Cross-domain detection vars
+                       parts,
+                       // To know if global events are to be dispatched
+                       fireGlobals,
+                       // Loop variable
+                       i,
+                       // Create the final options object
+                       s = jQuery.ajaxSetup( {}, options ),
+                       // Callbacks context
+                       callbackContext = s.context || s,
+                       // Context for global events is callbackContext if it is a DOM node or jQuery collection
+                       globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+                               jQuery( callbackContext ) :
+                               jQuery.event,
+                       // Deferreds
+                       deferred = jQuery.Deferred(),
+                       completeDeferred = jQuery.Callbacks("once memory"),
+                       // Status-dependent callbacks
+                       statusCode = s.statusCode || {},
+                       // Headers (they are sent all at once)
+                       requestHeaders = {},
+                       requestHeadersNames = {},
+                       // The jqXHR state
+                       state = 0,
+                       // Default abort message
+                       strAbort = "canceled",
+                       // Fake xhr
+                       jqXHR = {
+                               readyState: 0,
+
+                               // Builds headers hashtable if needed
+                               getResponseHeader: function( key ) {
+                                       var match;
+                                       if ( state === 2 ) {
+                                               if ( !responseHeaders ) {
+                                                       responseHeaders = {};
+                                                       while ( (match = rheaders.exec( responseHeadersString )) ) {
+                                                               responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+                                                       }
+                                               }
+                                               match = responseHeaders[ key.toLowerCase() ];
+                                       }
+                                       return match == null ? null : match;
+                               },
+
+                               // Raw string
+                               getAllResponseHeaders: function() {
+                                       return state === 2 ? responseHeadersString : null;
+                               },
+
+                               // Caches the header
+                               setRequestHeader: function( name, value ) {
+                                       var lname = name.toLowerCase();
+                                       if ( !state ) {
+                                               name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+                                               requestHeaders[ name ] = value;
+                                       }
+                                       return this;
+                               },
+
+                               // Overrides response content-type header
+                               overrideMimeType: function( type ) {
+                                       if ( !state ) {
+                                               s.mimeType = type;
+                                       }
+                                       return this;
+                               },
+
+                               // Status-dependent callbacks
+                               statusCode: function( map ) {
+                                       var code;
+                                       if ( map ) {
+                                               if ( state < 2 ) {
+                                                       for ( code in map ) {
+                                                               // Lazy-add the new callback in a way that preserves old ones
+                                                               statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+                                                       }
+                                               } else {
+                                                       // Execute the appropriate callbacks
+                                                       jqXHR.always( map[ jqXHR.status ] );
+                                               }
+                                       }
+                                       return this;
+                               },
+
+                               // Cancel the request
+                               abort: function( statusText ) {
+                                       var finalText = statusText || strAbort;
+                                       if ( transport ) {
+                                               transport.abort( finalText );
+                                       }
+                                       done( 0, finalText );
+                                       return this;
+                               }
+                       };
+
+               // Attach deferreds
+               deferred.promise( jqXHR ).complete = completeDeferred.add;
+               jqXHR.success = jqXHR.done;
+               jqXHR.error = jqXHR.fail;
+
+               // Remove hash character (#7531: and string promotion)
+               // Add protocol if not provided (prefilters might expect it)
+               // Handle falsy url in the settings object (#10093: consistency with old signature)
+               // We also use the url parameter if available
+               s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
+                       .replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+               // Alias method option to type as per ticket #12004
+               s.type = options.method || options.type || s.method || s.type;
+
+               // Extract dataTypes list
+               s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
+
+               // A cross-domain request is in order when we have a protocol:host:port mismatch
+               if ( s.crossDomain == null ) {
+                       parts = rurl.exec( s.url.toLowerCase() );
+                       s.crossDomain = !!( parts &&
+                               ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+                                       ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+                                               ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+                       );
+               }
+
+               // Convert data if not already a string
+               if ( s.data && s.processData && typeof s.data !== "string" ) {
+                       s.data = jQuery.param( s.data, s.traditional );
+               }
+
+               // Apply prefilters
+               inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+               // If request was aborted inside a prefilter, stop there
+               if ( state === 2 ) {
+                       return jqXHR;
+               }
+
+               // We can fire global events as of now if asked to
+               // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+               fireGlobals = jQuery.event && s.global;
+
+               // Watch for a new set of requests
+               if ( fireGlobals && jQuery.active++ === 0 ) {
+                       jQuery.event.trigger("ajaxStart");
+               }
+
+               // Uppercase the type
+               s.type = s.type.toUpperCase();
+
+               // Determine if request has content
+               s.hasContent = !rnoContent.test( s.type );
+
+               // Save the URL in case we're toying with the If-Modified-Since
+               // and/or If-None-Match header later on
+               cacheURL = s.url;
+
+               // More options handling for requests with no content
+               if ( !s.hasContent ) {
+
+                       // If data is available, append data to url
+                       if ( s.data ) {
+                               cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+                               // #9682: remove data so that it's not used in an eventual retry
+                               delete s.data;
+                       }
+
+                       // Add anti-cache in url if needed
+                       if ( s.cache === false ) {
+                               s.url = rts.test( cacheURL ) ?
+
+                                       // If there is already a '_' parameter, set its value
+                                       cacheURL.replace( rts, "$1_=" + nonce++ ) :
+
+                                       // Otherwise add one to the end
+                                       cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
+                       }
+               }
+
+               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+               if ( s.ifModified ) {
+                       if ( jQuery.lastModified[ cacheURL ] ) {
+                               jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+                       }
+                       if ( jQuery.etag[ cacheURL ] ) {
+                               jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+                       }
+               }
+
+               // Set the correct header, if data is being sent
+               if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+                       jqXHR.setRequestHeader( "Content-Type", s.contentType );
+               }
+
+               // Set the Accepts header for the server, depending on the dataType
+               jqXHR.setRequestHeader(
+                       "Accept",
+                       s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+                               s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+                               s.accepts[ "*" ]
+               );
+
+               // Check for headers option
+               for ( i in s.headers ) {
+                       jqXHR.setRequestHeader( i, s.headers[ i ] );
+               }
+
+               // Allow custom headers/mimetypes and early abort
+               if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+                       // Abort if not done already and return
+                       return jqXHR.abort();
+               }
+
+               // Aborting is no longer a cancellation
+               strAbort = "abort";
+
+               // Install callbacks on deferreds
+               for ( i in { success: 1, error: 1, complete: 1 } ) {
+                       jqXHR[ i ]( s[ i ] );
+               }
+
+               // Get transport
+               transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+               // If no transport, we auto-abort
+               if ( !transport ) {
+                       done( -1, "No Transport" );
+               } else {
+                       jqXHR.readyState = 1;
+
+                       // Send global event
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+                       }
+                       // Timeout
+                       if ( s.async && s.timeout > 0 ) {
+                               timeoutTimer = setTimeout(function() {
+                                       jqXHR.abort("timeout");
+                               }, s.timeout );
+                       }
+
+                       try {
+                               state = 1;
+                               transport.send( requestHeaders, done );
+                       } catch ( e ) {
+                               // Propagate exception as error if not done
+                               if ( state < 2 ) {
+                                       done( -1, e );
+                               // Simply rethrow otherwise
+                               } else {
+                                       throw e;
+                               }
+                       }
+               }
+
+               // Callback for when everything is done
+               function done( status, nativeStatusText, responses, headers ) {
+                       var isSuccess, success, error, response, modified,
+                               statusText = nativeStatusText;
+
+                       // Called once
+                       if ( state === 2 ) {
+                               return;
+                       }
+
+                       // State is "done" now
+                       state = 2;
+
+                       // Clear timeout if it exists
+                       if ( timeoutTimer ) {
+                               clearTimeout( timeoutTimer );
+                       }
+
+                       // Dereference transport for early garbage collection
+                       // (no matter how long the jqXHR object will be used)
+                       transport = undefined;
+
+                       // Cache response headers
+                       responseHeadersString = headers || "";
+
+                       // Set readyState
+                       jqXHR.readyState = status > 0 ? 4 : 0;
+
+                       // Determine if successful
+                       isSuccess = status >= 200 && status < 300 || status === 304;
+
+                       // Get response data
+                       if ( responses ) {
+                               response = ajaxHandleResponses( s, jqXHR, responses );
+                       }
+
+                       // Convert no matter what (that way responseXXX fields are always set)
+                       response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+                       // If successful, handle type chaining
+                       if ( isSuccess ) {
+
+                               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+                               if ( s.ifModified ) {
+                                       modified = jqXHR.getResponseHeader("Last-Modified");
+                                       if ( modified ) {
+                                               jQuery.lastModified[ cacheURL ] = modified;
+                                       }
+                                       modified = jqXHR.getResponseHeader("etag");
+                                       if ( modified ) {
+                                               jQuery.etag[ cacheURL ] = modified;
+                                       }
+                               }
+
+                               // if no content
+                               if ( status === 204 || s.type === "HEAD" ) {
+                                       statusText = "nocontent";
+
+                               // if not modified
+                               } else if ( status === 304 ) {
+                                       statusText = "notmodified";
+
+                               // If we have data, let's convert it
+                               } else {
+                                       statusText = response.state;
+                                       success = response.data;
+                                       error = response.error;
+                                       isSuccess = !error;
+                               }
+                       } else {
+                               // Extract error from statusText and normalize for non-aborts
+                               error = statusText;
+                               if ( status || !statusText ) {
+                                       statusText = "error";
+                                       if ( status < 0 ) {
+                                               status = 0;
+                                       }
+                               }
+                       }
+
+                       // Set data for the fake xhr object
+                       jqXHR.status = status;
+                       jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+                       // Success/Error
+                       if ( isSuccess ) {
+                               deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+                       } else {
+                               deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+                       }
+
+                       // Status-dependent callbacks
+                       jqXHR.statusCode( statusCode );
+                       statusCode = undefined;
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+                                       [ jqXHR, s, isSuccess ? success : error ] );
+                       }
+
+                       // Complete
+                       completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+                               // Handle the global AJAX counter
+                               if ( !( --jQuery.active ) ) {
+                                       jQuery.event.trigger("ajaxStop");
+                               }
+                       }
+               }
+
+               return jqXHR;
+       },
+
+       getJSON: function( url, data, callback ) {
+               return jQuery.get( url, data, callback, "json" );
+       },
+
+       getScript: function( url, callback ) {
+               return jQuery.get( url, undefined, callback, "script" );
+       }
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+       jQuery[ method ] = function( url, data, callback, type ) {
+               // Shift arguments if data argument was omitted
+               if ( jQuery.isFunction( data ) ) {
+                       type = type || callback;
+                       callback = data;
+                       data = undefined;
+               }
+
+               return jQuery.ajax({
+                       url: url,
+                       type: method,
+                       dataType: type,
+                       data: data,
+                       success: callback
+               });
+       };
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/jsonp.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/jsonp.js
new file mode 100644 (file)
index 0000000..ff0d538
--- /dev/null
@@ -0,0 +1,89 @@
+define([
+       "../core",
+       "./var/nonce",
+       "./var/rquery",
+       "../ajax"
+], function( jQuery, nonce, rquery ) {
+
+var oldCallbacks = [],
+       rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+       jsonp: "callback",
+       jsonpCallback: function() {
+               var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+               this[ callback ] = true;
+               return callback;
+       }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+       var callbackName, overwritten, responseContainer,
+               jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+                       "url" :
+                       typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+               );
+
+       // Handle iff the expected data type is "jsonp" or we have a parameter to set
+       if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+               // Get callback name, remembering preexisting value associated with it
+               callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+                       s.jsonpCallback() :
+                       s.jsonpCallback;
+
+               // Insert callback into url or form data
+               if ( jsonProp ) {
+                       s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+               } else if ( s.jsonp !== false ) {
+                       s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+               }
+
+               // Use data converter to retrieve json after script execution
+               s.converters["script json"] = function() {
+                       if ( !responseContainer ) {
+                               jQuery.error( callbackName + " was not called" );
+                       }
+                       return responseContainer[ 0 ];
+               };
+
+               // force json dataType
+               s.dataTypes[ 0 ] = "json";
+
+               // Install callback
+               overwritten = window[ callbackName ];
+               window[ callbackName ] = function() {
+                       responseContainer = arguments;
+               };
+
+               // Clean-up function (fires after converters)
+               jqXHR.always(function() {
+                       // Restore preexisting value
+                       window[ callbackName ] = overwritten;
+
+                       // Save back as free
+                       if ( s[ callbackName ] ) {
+                               // make sure that re-using the options doesn't screw things around
+                               s.jsonpCallback = originalSettings.jsonpCallback;
+
+                               // save the callback name for future use
+                               oldCallbacks.push( callbackName );
+                       }
+
+                       // Call if it was a function and we have a response
+                       if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+                               overwritten( responseContainer[ 0 ] );
+                       }
+
+                       responseContainer = overwritten = undefined;
+               });
+
+               // Delegate to script
+               return "script";
+       }
+});
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/load.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/load.js
new file mode 100644 (file)
index 0000000..bff25b1
--- /dev/null
@@ -0,0 +1,75 @@
+define([
+       "../core",
+       "../core/parseHTML",
+       "../ajax",
+       "../traversing",
+       "../manipulation",
+       "../selector",
+       // Optional event/alias dependency
+       "../event/alias"
+], function( jQuery ) {
+
+// Keep a copy of the old load method
+var _load = jQuery.fn.load;
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+       if ( typeof url !== "string" && _load ) {
+               return _load.apply( this, arguments );
+       }
+
+       var selector, type, response,
+               self = this,
+               off = url.indexOf(" ");
+
+       if ( off >= 0 ) {
+               selector = jQuery.trim( url.slice( off ) );
+               url = url.slice( 0, off );
+       }
+
+       // If it's a function
+       if ( jQuery.isFunction( params ) ) {
+
+               // We assume that it's the callback
+               callback = params;
+               params = undefined;
+
+       // Otherwise, build a param string
+       } else if ( params && typeof params === "object" ) {
+               type = "POST";
+       }
+
+       // If we have elements to modify, make the request
+       if ( self.length > 0 ) {
+               jQuery.ajax({
+                       url: url,
+
+                       // if "type" variable is undefined, then "GET" method will be used
+                       type: type,
+                       dataType: "html",
+                       data: params
+               }).done(function( responseText ) {
+
+                       // Save response for use in complete callback
+                       response = arguments;
+
+                       self.html( selector ?
+
+                               // If a selector was specified, locate the right elements in a dummy div
+                               // Exclude scripts to avoid IE 'Permission Denied' errors
+                               jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+                               // Otherwise use the full result
+                               responseText );
+
+               }).complete( callback && function( jqXHR, status ) {
+                       self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+               });
+       }
+
+       return this;
+};
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/parseJSON.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/parseJSON.js
new file mode 100644 (file)
index 0000000..3a96d15
--- /dev/null
@@ -0,0 +1,13 @@
+define([
+       "../core"
+], function( jQuery ) {
+
+// Support: Android 2.3
+// Workaround failure to string-cast null input
+jQuery.parseJSON = function( data ) {
+       return JSON.parse( data + "" );
+};
+
+return jQuery.parseJSON;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/parseXML.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/parseXML.js
new file mode 100644 (file)
index 0000000..9eeb625
--- /dev/null
@@ -0,0 +1,28 @@
+define([
+       "../core"
+], function( jQuery ) {
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+       var xml, tmp;
+       if ( !data || typeof data !== "string" ) {
+               return null;
+       }
+
+       // Support: IE9
+       try {
+               tmp = new DOMParser();
+               xml = tmp.parseFromString( data, "text/xml" );
+       } catch ( e ) {
+               xml = undefined;
+       }
+
+       if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+               jQuery.error( "Invalid XML: " + data );
+       }
+       return xml;
+};
+
+return jQuery.parseXML;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/script.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/script.js
new file mode 100644 (file)
index 0000000..f44329d
--- /dev/null
@@ -0,0 +1,64 @@
+define([
+       "../core",
+       "../ajax"
+], function( jQuery ) {
+
+// Install script dataType
+jQuery.ajaxSetup({
+       accepts: {
+               script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+       },
+       contents: {
+               script: /(?:java|ecma)script/
+       },
+       converters: {
+               "text script": function( text ) {
+                       jQuery.globalEval( text );
+                       return text;
+               }
+       }
+});
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+       if ( s.cache === undefined ) {
+               s.cache = false;
+       }
+       if ( s.crossDomain ) {
+               s.type = "GET";
+       }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+       // This transport only deals with cross domain requests
+       if ( s.crossDomain ) {
+               var script, callback;
+               return {
+                       send: function( _, complete ) {
+                               script = jQuery("<script>").prop({
+                                       async: true,
+                                       charset: s.scriptCharset,
+                                       src: s.url
+                               }).on(
+                                       "load error",
+                                       callback = function( evt ) {
+                                               script.remove();
+                                               callback = null;
+                                               if ( evt ) {
+                                                       complete( evt.type === "error" ? 404 : 200, evt.type );
+                                               }
+                                       }
+                               );
+                               document.head.appendChild( script[ 0 ] );
+                       },
+                       abort: function() {
+                               if ( callback ) {
+                                       callback();
+                               }
+                       }
+               };
+       }
+});
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/var/nonce.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/var/nonce.js
new file mode 100644 (file)
index 0000000..0871aae
--- /dev/null
@@ -0,0 +1,5 @@
+define([
+       "../../core"
+], function( jQuery ) {
+       return jQuery.now();
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/var/rquery.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/var/rquery.js
new file mode 100644 (file)
index 0000000..500a77a
--- /dev/null
@@ -0,0 +1,3 @@
+define(function() {
+       return (/\?/);
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/xhr.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/ajax/xhr.js
new file mode 100644 (file)
index 0000000..c2b43c9
--- /dev/null
@@ -0,0 +1,136 @@
+define([
+       "../core",
+       "../var/support",
+       "../ajax"
+], function( jQuery, support ) {
+
+jQuery.ajaxSettings.xhr = function() {
+       try {
+               return new XMLHttpRequest();
+       } catch( e ) {}
+};
+
+var xhrId = 0,
+       xhrCallbacks = {},
+       xhrSuccessStatus = {
+               // file protocol always yields status code 0, assume 200
+               0: 200,
+               // Support: IE9
+               // #1450: sometimes IE returns 1223 when it should be 204
+               1223: 204
+       },
+       xhrSupported = jQuery.ajaxSettings.xhr();
+
+// Support: IE9
+// Open requests must be manually aborted on unload (#5280)
+// See https://support.microsoft.com/kb/2856746 for more info
+if ( window.attachEvent ) {
+       window.attachEvent( "onunload", function() {
+               for ( var key in xhrCallbacks ) {
+                       xhrCallbacks[ key ]();
+               }
+       });
+}
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport(function( options ) {
+       var callback;
+
+       // Cross domain only allowed if supported through XMLHttpRequest
+       if ( support.cors || xhrSupported && !options.crossDomain ) {
+               return {
+                       send: function( headers, complete ) {
+                               var i,
+                                       xhr = options.xhr(),
+                                       id = ++xhrId;
+
+                               xhr.open( options.type, options.url, options.async, options.username, options.password );
+
+                               // Apply custom fields if provided
+                               if ( options.xhrFields ) {
+                                       for ( i in options.xhrFields ) {
+                                               xhr[ i ] = options.xhrFields[ i ];
+                                       }
+                               }
+
+                               // Override mime type if needed
+                               if ( options.mimeType && xhr.overrideMimeType ) {
+                                       xhr.overrideMimeType( options.mimeType );
+                               }
+
+                               // X-Requested-With header
+                               // For cross-domain requests, seeing as conditions for a preflight are
+                               // akin to a jigsaw puzzle, we simply never set it to be sure.
+                               // (it can always be set on a per-request basis or even using ajaxSetup)
+                               // For same-domain requests, won't change header if already provided.
+                               if ( !options.crossDomain && !headers["X-Requested-With"] ) {
+                                       headers["X-Requested-With"] = "XMLHttpRequest";
+                               }
+
+                               // Set headers
+                               for ( i in headers ) {
+                                       xhr.setRequestHeader( i, headers[ i ] );
+                               }
+
+                               // Callback
+                               callback = function( type ) {
+                                       return function() {
+                                               if ( callback ) {
+                                                       delete xhrCallbacks[ id ];
+                                                       callback = xhr.onload = xhr.onerror = null;
+
+                                                       if ( type === "abort" ) {
+                                                               xhr.abort();
+                                                       } else if ( type === "error" ) {
+                                                               complete(
+                                                                       // file: protocol always yields status 0; see #8605, #14207
+                                                                       xhr.status,
+                                                                       xhr.statusText
+                                                               );
+                                                       } else {
+                                                               complete(
+                                                                       xhrSuccessStatus[ xhr.status ] || xhr.status,
+                                                                       xhr.statusText,
+                                                                       // Support: IE9
+                                                                       // Accessing binary-data responseText throws an exception
+                                                                       // (#11426)
+                                                                       typeof xhr.responseText === "string" ? {
+                                                                               text: xhr.responseText
+                                                                       } : undefined,
+                                                                       xhr.getAllResponseHeaders()
+                                                               );
+                                                       }
+                                               }
+                                       };
+                               };
+
+                               // Listen to events
+                               xhr.onload = callback();
+                               xhr.onerror = callback("error");
+
+                               // Create the abort callback
+                               callback = xhrCallbacks[ id ] = callback("abort");
+
+                               try {
+                                       // Do send the request (this may raise an exception)
+                                       xhr.send( options.hasContent && options.data || null );
+                               } catch ( e ) {
+                                       // #14683: Only rethrow if this hasn't been notified as an error yet
+                                       if ( callback ) {
+                                               throw e;
+                                       }
+                               }
+                       },
+
+                       abort: function() {
+                               if ( callback ) {
+                                       callback();
+                               }
+                       }
+               };
+       }
+});
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes.js
new file mode 100644 (file)
index 0000000..fa2ef1e
--- /dev/null
@@ -0,0 +1,11 @@
+define([
+       "./core",
+       "./attributes/attr",
+       "./attributes/prop",
+       "./attributes/classes",
+       "./attributes/val"
+], function( jQuery ) {
+
+// Return jQuery for attributes-only inclusion
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/attr.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/attr.js
new file mode 100644 (file)
index 0000000..a4414d1
--- /dev/null
@@ -0,0 +1,141 @@
+define([
+       "../core",
+       "../var/rnotwhite",
+       "../var/strundefined",
+       "../core/access",
+       "./support",
+       "../selector"
+], function( jQuery, rnotwhite, strundefined, access, support ) {
+
+var nodeHook, boolHook,
+       attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend({
+       attr: function( name, value ) {
+               return access( this, jQuery.attr, name, value, arguments.length > 1 );
+       },
+
+       removeAttr: function( name ) {
+               return this.each(function() {
+                       jQuery.removeAttr( this, name );
+               });
+       }
+});
+
+jQuery.extend({
+       attr: function( elem, name, value ) {
+               var hooks, ret,
+                       nType = elem.nodeType;
+
+               // don't get/set attributes on text, comment and attribute nodes
+               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               // Fallback to prop when attributes are not supported
+               if ( typeof elem.getAttribute === strundefined ) {
+                       return jQuery.prop( elem, name, value );
+               }
+
+               // All attributes are lowercase
+               // Grab necessary hook if one is defined
+               if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+                       name = name.toLowerCase();
+                       hooks = jQuery.attrHooks[ name ] ||
+                               ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+               }
+
+               if ( value !== undefined ) {
+
+                       if ( value === null ) {
+                               jQuery.removeAttr( elem, name );
+
+                       } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+                               return ret;
+
+                       } else {
+                               elem.setAttribute( name, value + "" );
+                               return value;
+                       }
+
+               } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+                       return ret;
+
+               } else {
+                       ret = jQuery.find.attr( elem, name );
+
+                       // Non-existent attributes return null, we normalize to undefined
+                       return ret == null ?
+                               undefined :
+                               ret;
+               }
+       },
+
+       removeAttr: function( elem, value ) {
+               var name, propName,
+                       i = 0,
+                       attrNames = value && value.match( rnotwhite );
+
+               if ( attrNames && elem.nodeType === 1 ) {
+                       while ( (name = attrNames[i++]) ) {
+                               propName = jQuery.propFix[ name ] || name;
+
+                               // Boolean attributes get special treatment (#10870)
+                               if ( jQuery.expr.match.bool.test( name ) ) {
+                                       // Set corresponding property to false
+                                       elem[ propName ] = false;
+                               }
+
+                               elem.removeAttribute( name );
+                       }
+               }
+       },
+
+       attrHooks: {
+               type: {
+                       set: function( elem, value ) {
+                               if ( !support.radioValue && value === "radio" &&
+                                       jQuery.nodeName( elem, "input" ) ) {
+                                       var val = elem.value;
+                                       elem.setAttribute( "type", value );
+                                       if ( val ) {
+                                               elem.value = val;
+                                       }
+                                       return value;
+                               }
+                       }
+               }
+       }
+});
+
+// Hooks for boolean attributes
+boolHook = {
+       set: function( elem, value, name ) {
+               if ( value === false ) {
+                       // Remove boolean attributes when set to false
+                       jQuery.removeAttr( elem, name );
+               } else {
+                       elem.setAttribute( name, name );
+               }
+               return name;
+       }
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+       var getter = attrHandle[ name ] || jQuery.find.attr;
+
+       attrHandle[ name ] = function( elem, name, isXML ) {
+               var ret, handle;
+               if ( !isXML ) {
+                       // Avoid an infinite loop by temporarily removing this function from the getter
+                       handle = attrHandle[ name ];
+                       attrHandle[ name ] = ret;
+                       ret = getter( elem, name, isXML ) != null ?
+                               name.toLowerCase() :
+                               null;
+                       attrHandle[ name ] = handle;
+               }
+               return ret;
+       };
+});
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/classes.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/classes.js
new file mode 100644 (file)
index 0000000..1011384
--- /dev/null
@@ -0,0 +1,158 @@
+define([
+       "../core",
+       "../var/rnotwhite",
+       "../var/strundefined",
+       "../data/var/data_priv",
+       "../core/init"
+], function( jQuery, rnotwhite, strundefined, data_priv ) {
+
+var rclass = /[\t\r\n\f]/g;
+
+jQuery.fn.extend({
+       addClass: function( value ) {
+               var classes, elem, cur, clazz, j, finalValue,
+                       proceed = typeof value === "string" && value,
+                       i = 0,
+                       len = this.length;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( j ) {
+                               jQuery( this ).addClass( value.call( this, j, this.className ) );
+                       });
+               }
+
+               if ( proceed ) {
+                       // The disjunction here is for better compressibility (see removeClass)
+                       classes = ( value || "" ).match( rnotwhite ) || [];
+
+                       for ( ; i < len; i++ ) {
+                               elem = this[ i ];
+                               cur = elem.nodeType === 1 && ( elem.className ?
+                                       ( " " + elem.className + " " ).replace( rclass, " " ) :
+                                       " "
+                               );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( (clazz = classes[j++]) ) {
+                                               if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+                                                       cur += clazz + " ";
+                                               }
+                                       }
+
+                                       // only assign if different to avoid unneeded rendering.
+                                       finalValue = jQuery.trim( cur );
+                                       if ( elem.className !== finalValue ) {
+                                               elem.className = finalValue;
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       removeClass: function( value ) {
+               var classes, elem, cur, clazz, j, finalValue,
+                       proceed = arguments.length === 0 || typeof value === "string" && value,
+                       i = 0,
+                       len = this.length;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( j ) {
+                               jQuery( this ).removeClass( value.call( this, j, this.className ) );
+                       });
+               }
+               if ( proceed ) {
+                       classes = ( value || "" ).match( rnotwhite ) || [];
+
+                       for ( ; i < len; i++ ) {
+                               elem = this[ i ];
+                               // This expression is here for better compressibility (see addClass)
+                               cur = elem.nodeType === 1 && ( elem.className ?
+                                       ( " " + elem.className + " " ).replace( rclass, " " ) :
+                                       ""
+                               );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( (clazz = classes[j++]) ) {
+                                               // Remove *all* instances
+                                               while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+                                                       cur = cur.replace( " " + clazz + " ", " " );
+                                               }
+                                       }
+
+                                       // Only assign if different to avoid unneeded rendering.
+                                       finalValue = value ? jQuery.trim( cur ) : "";
+                                       if ( elem.className !== finalValue ) {
+                                               elem.className = finalValue;
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       toggleClass: function( value, stateVal ) {
+               var type = typeof value;
+
+               if ( typeof stateVal === "boolean" && type === "string" ) {
+                       return stateVal ? this.addClass( value ) : this.removeClass( value );
+               }
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( i ) {
+                               jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+                       });
+               }
+
+               return this.each(function() {
+                       if ( type === "string" ) {
+                               // Toggle individual class names
+                               var className,
+                                       i = 0,
+                                       self = jQuery( this ),
+                                       classNames = value.match( rnotwhite ) || [];
+
+                               while ( (className = classNames[ i++ ]) ) {
+                                       // Check each className given, space separated list
+                                       if ( self.hasClass( className ) ) {
+                                               self.removeClass( className );
+                                       } else {
+                                               self.addClass( className );
+                                       }
+                               }
+
+                       // Toggle whole class name
+                       } else if ( type === strundefined || type === "boolean" ) {
+                               if ( this.className ) {
+                                       // store className if set
+                                       data_priv.set( this, "__className__", this.className );
+                               }
+
+                               // If the element has a class name or if we're passed `false`,
+                               // then remove the whole classname (if there was one, the above saved it).
+                               // Otherwise bring back whatever was previously saved (if anything),
+                               // falling back to the empty string if nothing was stored.
+                               this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
+                       }
+               });
+       },
+
+       hasClass: function( selector ) {
+               var className = " " + selector + " ",
+                       i = 0,
+                       l = this.length;
+               for ( ; i < l; i++ ) {
+                       if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+                               return true;
+                       }
+               }
+
+               return false;
+       }
+});
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/prop.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/prop.js
new file mode 100644 (file)
index 0000000..d4ee8b6
--- /dev/null
@@ -0,0 +1,94 @@
+define([
+       "../core",
+       "../core/access",
+       "./support"
+], function( jQuery, access, support ) {
+
+var rfocusable = /^(?:input|select|textarea|button)$/i;
+
+jQuery.fn.extend({
+       prop: function( name, value ) {
+               return access( this, jQuery.prop, name, value, arguments.length > 1 );
+       },
+
+       removeProp: function( name ) {
+               return this.each(function() {
+                       delete this[ jQuery.propFix[ name ] || name ];
+               });
+       }
+});
+
+jQuery.extend({
+       propFix: {
+               "for": "htmlFor",
+               "class": "className"
+       },
+
+       prop: function( elem, name, value ) {
+               var ret, hooks, notxml,
+                       nType = elem.nodeType;
+
+               // Don't get/set properties on text, comment and attribute nodes
+               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+               if ( notxml ) {
+                       // Fix name and attach hooks
+                       name = jQuery.propFix[ name ] || name;
+                       hooks = jQuery.propHooks[ name ];
+               }
+
+               if ( value !== undefined ) {
+                       return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+                               ret :
+                               ( elem[ name ] = value );
+
+               } else {
+                       return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+                               ret :
+                               elem[ name ];
+               }
+       },
+
+       propHooks: {
+               tabIndex: {
+                       get: function( elem ) {
+                               return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
+                                       elem.tabIndex :
+                                       -1;
+                       }
+               }
+       }
+});
+
+if ( !support.optSelected ) {
+       jQuery.propHooks.selected = {
+               get: function( elem ) {
+                       var parent = elem.parentNode;
+                       if ( parent && parent.parentNode ) {
+                               parent.parentNode.selectedIndex;
+                       }
+                       return null;
+               }
+       };
+}
+
+jQuery.each([
+       "tabIndex",
+       "readOnly",
+       "maxLength",
+       "cellSpacing",
+       "cellPadding",
+       "rowSpan",
+       "colSpan",
+       "useMap",
+       "frameBorder",
+       "contentEditable"
+], function() {
+       jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/support.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/support.js
new file mode 100644 (file)
index 0000000..5db5c52
--- /dev/null
@@ -0,0 +1,35 @@
+define([
+       "../var/support"
+], function( support ) {
+
+(function() {
+       var input = document.createElement( "input" ),
+               select = document.createElement( "select" ),
+               opt = select.appendChild( document.createElement( "option" ) );
+
+       input.type = "checkbox";
+
+       // Support: iOS<=5.1, Android<=4.2+
+       // Default value for a checkbox should be "on"
+       support.checkOn = input.value !== "";
+
+       // Support: IE<=11+
+       // Must access selectedIndex to make default options select
+       support.optSelected = opt.selected;
+
+       // Support: Android<=2.3
+       // Options inside disabled selects are incorrectly marked as disabled
+       select.disabled = true;
+       support.optDisabled = !opt.disabled;
+
+       // Support: IE<=11+
+       // An input loses its value after becoming a radio
+       input = document.createElement( "input" );
+       input.value = "t";
+       input.type = "radio";
+       support.radioValue = input.value === "t";
+})();
+
+return support;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/val.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/attributes/val.js
new file mode 100644 (file)
index 0000000..4a1358a
--- /dev/null
@@ -0,0 +1,161 @@
+define([
+       "../core",
+       "./support",
+       "../core/init"
+], function( jQuery, support ) {
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend({
+       val: function( value ) {
+               var hooks, ret, isFunction,
+                       elem = this[0];
+
+               if ( !arguments.length ) {
+                       if ( elem ) {
+                               hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+                               if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+                                       return ret;
+                               }
+
+                               ret = elem.value;
+
+                               return typeof ret === "string" ?
+                                       // Handle most common string cases
+                                       ret.replace(rreturn, "") :
+                                       // Handle cases where value is null/undef or number
+                                       ret == null ? "" : ret;
+                       }
+
+                       return;
+               }
+
+               isFunction = jQuery.isFunction( value );
+
+               return this.each(function( i ) {
+                       var val;
+
+                       if ( this.nodeType !== 1 ) {
+                               return;
+                       }
+
+                       if ( isFunction ) {
+                               val = value.call( this, i, jQuery( this ).val() );
+                       } else {
+                               val = value;
+                       }
+
+                       // Treat null/undefined as ""; convert numbers to string
+                       if ( val == null ) {
+                               val = "";
+
+                       } else if ( typeof val === "number" ) {
+                               val += "";
+
+                       } else if ( jQuery.isArray( val ) ) {
+                               val = jQuery.map( val, function( value ) {
+                                       return value == null ? "" : value + "";
+                               });
+                       }
+
+                       hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+                       // If set returns undefined, fall back to normal setting
+                       if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+                               this.value = val;
+                       }
+               });
+       }
+});
+
+jQuery.extend({
+       valHooks: {
+               option: {
+                       get: function( elem ) {
+                               var val = jQuery.find.attr( elem, "value" );
+                               return val != null ?
+                                       val :
+                                       // Support: IE10-11+
+                                       // option.text throws exceptions (#14686, #14858)
+                                       jQuery.trim( jQuery.text( elem ) );
+                       }
+               },
+               select: {
+                       get: function( elem ) {
+                               var value, option,
+                                       options = elem.options,
+                                       index = elem.selectedIndex,
+                                       one = elem.type === "select-one" || index < 0,
+                                       values = one ? null : [],
+                                       max = one ? index + 1 : options.length,
+                                       i = index < 0 ?
+                                               max :
+                                               one ? index : 0;
+
+                               // Loop through all the selected options
+                               for ( ; i < max; i++ ) {
+                                       option = options[ i ];
+
+                                       // IE6-9 doesn't update selected after form reset (#2551)
+                                       if ( ( option.selected || i === index ) &&
+                                                       // Don't return options that are disabled or in a disabled optgroup
+                                                       ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
+                                                       ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+                                               // Get the specific value for the option
+                                               value = jQuery( option ).val();
+
+                                               // We don't need an array for one selects
+                                               if ( one ) {
+                                                       return value;
+                                               }
+
+                                               // Multi-Selects return an array
+                                               values.push( value );
+                                       }
+                               }
+
+                               return values;
+                       },
+
+                       set: function( elem, value ) {
+                               var optionSet, option,
+                                       options = elem.options,
+                                       values = jQuery.makeArray( value ),
+                                       i = options.length;
+
+                               while ( i-- ) {
+                                       option = options[ i ];
+                                       if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
+                                               optionSet = true;
+                                       }
+                               }
+
+                               // Force browsers to behave consistently when non-matching value is set
+                               if ( !optionSet ) {
+                                       elem.selectedIndex = -1;
+                               }
+                               return values;
+                       }
+               }
+       }
+});
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+       jQuery.valHooks[ this ] = {
+               set: function( elem, value ) {
+                       if ( jQuery.isArray( value ) ) {
+                               return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+                       }
+               }
+       };
+       if ( !support.checkOn ) {
+               jQuery.valHooks[ this ].get = function( elem ) {
+                       return elem.getAttribute("value") === null ? "on" : elem.value;
+               };
+       }
+});
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/callbacks.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/callbacks.js
new file mode 100644 (file)
index 0000000..17572bb
--- /dev/null
@@ -0,0 +1,205 @@
+define([
+       "./core",
+       "./var/rnotwhite"
+], function( jQuery, rnotwhite ) {
+
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+       var object = optionsCache[ options ] = {};
+       jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+               object[ flag ] = true;
+       });
+       return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *     options: an optional list of space-separated options that will change how
+ *                     the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *     once:                   will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *     memory:                 will keep track of previous values and will call any callback added
+ *                                     after the list has been fired right away with the latest "memorized"
+ *                                     values (like a Deferred)
+ *
+ *     unique:                 will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *     stopOnFalse:    interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+       // Convert options from String-formatted to Object-formatted if needed
+       // (we check in cache first)
+       options = typeof options === "string" ?
+               ( optionsCache[ options ] || createOptions( options ) ) :
+               jQuery.extend( {}, options );
+
+       var // Last fire value (for non-forgettable lists)
+               memory,
+               // Flag to know if list was already fired
+               fired,
+               // Flag to know if list is currently firing
+               firing,
+               // First callback to fire (used internally by add and fireWith)
+               firingStart,
+               // End of the loop when firing
+               firingLength,
+               // Index of currently firing callback (modified by remove if needed)
+               firingIndex,
+               // Actual callback list
+               list = [],
+               // Stack of fire calls for repeatable lists
+               stack = !options.once && [],
+               // Fire callbacks
+               fire = function( data ) {
+                       memory = options.memory && data;
+                       fired = true;
+                       firingIndex = firingStart || 0;
+                       firingStart = 0;
+                       firingLength = list.length;
+                       firing = true;
+                       for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+                               if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+                                       memory = false; // To prevent further calls using add
+                                       break;
+                               }
+                       }
+                       firing = false;
+                       if ( list ) {
+                               if ( stack ) {
+                                       if ( stack.length ) {
+                                               fire( stack.shift() );
+                                       }
+                               } else if ( memory ) {
+                                       list = [];
+                               } else {
+                                       self.disable();
+                               }
+                       }
+               },
+               // Actual Callbacks object
+               self = {
+                       // Add a callback or a collection of callbacks to the list
+                       add: function() {
+                               if ( list ) {
+                                       // First, we save the current length
+                                       var start = list.length;
+                                       (function add( args ) {
+                                               jQuery.each( args, function( _, arg ) {
+                                                       var type = jQuery.type( arg );
+                                                       if ( type === "function" ) {
+                                                               if ( !options.unique || !self.has( arg ) ) {
+                                                                       list.push( arg );
+                                                               }
+                                                       } else if ( arg && arg.length && type !== "string" ) {
+                                                               // Inspect recursively
+                                                               add( arg );
+                                                       }
+                                               });
+                                       })( arguments );
+                                       // Do we need to add the callbacks to the
+                                       // current firing batch?
+                                       if ( firing ) {
+                                               firingLength = list.length;
+                                       // With memory, if we're not firing then
+                                       // we should call right away
+                                       } else if ( memory ) {
+                                               firingStart = start;
+                                               fire( memory );
+                                       }
+                               }
+                               return this;
+                       },
+                       // Remove a callback from the list
+                       remove: function() {
+                               if ( list ) {
+                                       jQuery.each( arguments, function( _, arg ) {
+                                               var index;
+                                               while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+                                                       list.splice( index, 1 );
+                                                       // Handle firing indexes
+                                                       if ( firing ) {
+                                                               if ( index <= firingLength ) {
+                                                                       firingLength--;
+                                                               }
+                                                               if ( index <= firingIndex ) {
+                                                                       firingIndex--;
+                                                               }
+                                                       }
+                                               }
+                                       });
+                               }
+                               return this;
+                       },
+                       // Check if a given callback is in the list.
+                       // If no argument is given, return whether or not list has callbacks attached.
+                       has: function( fn ) {
+                               return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+                       },
+                       // Remove all callbacks from the list
+                       empty: function() {
+                               list = [];
+                               firingLength = 0;
+                               return this;
+                       },
+                       // Have the list do nothing anymore
+                       disable: function() {
+                               list = stack = memory = undefined;
+                               return this;
+                       },
+                       // Is it disabled?
+                       disabled: function() {
+                               return !list;
+                       },
+                       // Lock the list in its current state
+                       lock: function() {
+                               stack = undefined;
+                               if ( !memory ) {
+                                       self.disable();
+                               }
+                               return this;
+                       },
+                       // Is it locked?
+                       locked: function() {
+                               return !stack;
+                       },
+                       // Call all callbacks with the given context and arguments
+                       fireWith: function( context, args ) {
+                               if ( list && ( !fired || stack ) ) {
+                                       args = args || [];
+                                       args = [ context, args.slice ? args.slice() : args ];
+                                       if ( firing ) {
+                                               stack.push( args );
+                                       } else {
+                                               fire( args );
+                                       }
+                               }
+                               return this;
+                       },
+                       // Call all the callbacks with the given arguments
+                       fire: function() {
+                               self.fireWith( this, arguments );
+                               return this;
+                       },
+                       // To know if the callbacks have already been called at least once
+                       fired: function() {
+                               return !!fired;
+                       }
+               };
+
+       return self;
+};
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core.js
new file mode 100644 (file)
index 0000000..6f471ee
--- /dev/null
@@ -0,0 +1,502 @@
+define([
+       "./var/arr",
+       "./var/slice",
+       "./var/concat",
+       "./var/push",
+       "./var/indexOf",
+       "./var/class2type",
+       "./var/toString",
+       "./var/hasOwn",
+       "./var/support"
+], function( arr, slice, concat, push, indexOf, class2type, toString, hasOwn, support ) {
+
+var
+       // Use the correct document accordingly with window argument (sandbox)
+       document = window.document,
+
+       version = "@VERSION",
+
+       // Define a local copy of jQuery
+       jQuery = function( selector, context ) {
+               // The jQuery object is actually just the init constructor 'enhanced'
+               // Need init if jQuery is called (just allow error to be thrown if not included)
+               return new jQuery.fn.init( selector, context );
+       },
+
+       // Support: Android<4.1
+       // Make sure we trim BOM and NBSP
+       rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+       // Matches dashed string for camelizing
+       rmsPrefix = /^-ms-/,
+       rdashAlpha = /-([\da-z])/gi,
+
+       // Used by jQuery.camelCase as callback to replace()
+       fcamelCase = function( all, letter ) {
+               return letter.toUpperCase();
+       };
+
+jQuery.fn = jQuery.prototype = {
+       // The current version of jQuery being used
+       jquery: version,
+
+       constructor: jQuery,
+
+       // Start with an empty selector
+       selector: "",
+
+       // The default length of a jQuery object is 0
+       length: 0,
+
+       toArray: function() {
+               return slice.call( this );
+       },
+
+       // Get the Nth element in the matched element set OR
+       // Get the whole matched element set as a clean array
+       get: function( num ) {
+               return num != null ?
+
+                       // Return just the one element from the set
+                       ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+                       // Return all the elements in a clean array
+                       slice.call( this );
+       },
+
+       // Take an array of elements and push it onto the stack
+       // (returning the new matched element set)
+       pushStack: function( elems ) {
+
+               // Build a new jQuery matched element set
+               var ret = jQuery.merge( this.constructor(), elems );
+
+               // Add the old object onto the stack (as a reference)
+               ret.prevObject = this;
+               ret.context = this.context;
+
+               // Return the newly-formed element set
+               return ret;
+       },
+
+       // Execute a callback for every element in the matched set.
+       // (You can seed the arguments with an array of args, but this is
+       // only used internally.)
+       each: function( callback, args ) {
+               return jQuery.each( this, callback, args );
+       },
+
+       map: function( callback ) {
+               return this.pushStack( jQuery.map(this, function( elem, i ) {
+                       return callback.call( elem, i, elem );
+               }));
+       },
+
+       slice: function() {
+               return this.pushStack( slice.apply( this, arguments ) );
+       },
+
+       first: function() {
+               return this.eq( 0 );
+       },
+
+       last: function() {
+               return this.eq( -1 );
+       },
+
+       eq: function( i ) {
+               var len = this.length,
+                       j = +i + ( i < 0 ? len : 0 );
+               return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+       },
+
+       end: function() {
+               return this.prevObject || this.constructor(null);
+       },
+
+       // For internal use only.
+       // Behaves like an Array's method, not like a jQuery method.
+       push: push,
+       sort: arr.sort,
+       splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+       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;
+
+               // Skip the boolean and the target
+               target = arguments[ i ] || {};
+               i++;
+       }
+
+       // Handle case when target is a string or something (possible in deep copy)
+       if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+               target = {};
+       }
+
+       // Extend jQuery itself if only one argument is passed
+       if ( i === length ) {
+               target = this;
+               i--;
+       }
+
+       for ( ; i < length; i++ ) {
+               // Only deal with non-null/undefined values
+               if ( (options = arguments[ i ]) != 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 && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+                                       if ( copyIsArray ) {
+                                               copyIsArray = false;
+                                               clone = src && jQuery.isArray(src) ? src : [];
+
+                                       } else {
+                                               clone = src && jQuery.isPlainObject(src) ? src : {};
+                                       }
+
+                                       // Never move original objects, clone them
+                                       target[ name ] = jQuery.extend( deep, clone, copy );
+
+                               // Don't bring in undefined values
+                               } else if ( copy !== undefined ) {
+                                       target[ name ] = copy;
+                               }
+                       }
+               }
+       }
+
+       // Return the modified object
+       return target;
+};
+
+jQuery.extend({
+       // Unique for each copy of jQuery on the page
+       expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+       // Assume jQuery is ready without the ready module
+       isReady: true,
+
+       error: function( msg ) {
+               throw new Error( msg );
+       },
+
+       noop: function() {},
+
+       isFunction: function( obj ) {
+               return jQuery.type(obj) === "function";
+       },
+
+       isArray: Array.isArray,
+
+       isWindow: function( obj ) {
+               return obj != null && obj === obj.window;
+       },
+
+       isNumeric: function( obj ) {
+               // parseFloat NaNs numeric-cast false positives (null|true|false|"")
+               // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+               // subtraction forces infinities to NaN
+               // adding 1 corrects loss of precision from parseFloat (#15100)
+               return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
+       },
+
+       isPlainObject: function( obj ) {
+               // Not plain objects:
+               // - Any object or value whose internal [[Class]] property is not "[object Object]"
+               // - DOM nodes
+               // - window
+               if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+                       return false;
+               }
+
+               if ( obj.constructor &&
+                               !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
+                       return false;
+               }
+
+               // If the function hasn't returned already, we're confident that
+               // |obj| is a plain object, created by {} or constructed with new Object
+               return true;
+       },
+
+       isEmptyObject: function( obj ) {
+               var name;
+               for ( name in obj ) {
+                       return false;
+               }
+               return true;
+       },
+
+       type: function( obj ) {
+               if ( obj == null ) {
+                       return obj + "";
+               }
+               // Support: Android<4.0, iOS<6 (functionish RegExp)
+               return typeof obj === "object" || typeof obj === "function" ?
+                       class2type[ toString.call(obj) ] || "object" :
+                       typeof obj;
+       },
+
+       // Evaluates a script in a global context
+       globalEval: function( code ) {
+               var script,
+                       indirect = eval;
+
+               code = jQuery.trim( code );
+
+               if ( code ) {
+                       // If the code includes a valid, prologue position
+                       // strict mode pragma, execute code by injecting a
+                       // script tag into the document.
+                       if ( code.indexOf("use strict") === 1 ) {
+                               script = document.createElement("script");
+                               script.text = code;
+                               document.head.appendChild( script ).parentNode.removeChild( script );
+                       } else {
+                       // Otherwise, avoid the DOM node creation, insertion
+                       // and removal by using an indirect global eval
+                               indirect( code );
+                       }
+               }
+       },
+
+       // Convert dashed to camelCase; used by the css and data modules
+       // Support: IE9-11+
+       // Microsoft forgot to hump their vendor prefix (#9572)
+       camelCase: function( string ) {
+               return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+       },
+
+       nodeName: function( elem, name ) {
+               return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+       },
+
+       // args is for internal usage only
+       each: function( obj, callback, args ) {
+               var value,
+                       i = 0,
+                       length = obj.length,
+                       isArray = isArraylike( obj );
+
+               if ( args ) {
+                       if ( isArray ) {
+                               for ( ; i < length; i++ ) {
+                                       value = callback.apply( obj[ i ], args );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       } else {
+                               for ( i in obj ) {
+                                       value = callback.apply( obj[ i ], args );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       }
+
+               // A special, fast, case for the most common use of each
+               } else {
+                       if ( isArray ) {
+                               for ( ; i < length; i++ ) {
+                                       value = callback.call( obj[ i ], i, obj[ i ] );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       } else {
+                               for ( i in obj ) {
+                                       value = callback.call( obj[ i ], i, obj[ i ] );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return obj;
+       },
+
+       // Support: Android<4.1
+       trim: function( text ) {
+               return text == null ?
+                       "" :
+                       ( text + "" ).replace( rtrim, "" );
+       },
+
+       // results is for internal usage only
+       makeArray: function( arr, results ) {
+               var ret = results || [];
+
+               if ( arr != null ) {
+                       if ( isArraylike( Object(arr) ) ) {
+                               jQuery.merge( ret,
+                                       typeof arr === "string" ?
+                                       [ arr ] : arr
+                               );
+                       } else {
+                               push.call( ret, arr );
+                       }
+               }
+
+               return ret;
+       },
+
+       inArray: function( elem, arr, i ) {
+               return arr == null ? -1 : indexOf.call( arr, elem, i );
+       },
+
+       merge: function( first, second ) {
+               var len = +second.length,
+                       j = 0,
+                       i = first.length;
+
+               for ( ; j < len; j++ ) {
+                       first[ i++ ] = second[ j ];
+               }
+
+               first.length = i;
+
+               return first;
+       },
+
+       grep: function( elems, callback, invert ) {
+               var callbackInverse,
+                       matches = [],
+                       i = 0,
+                       length = elems.length,
+                       callbackExpect = !invert;
+
+               // Go through the array, only saving the items
+               // that pass the validator function
+               for ( ; i < length; i++ ) {
+                       callbackInverse = !callback( elems[ i ], i );
+                       if ( callbackInverse !== callbackExpect ) {
+                               matches.push( elems[ i ] );
+                       }
+               }
+
+               return matches;
+       },
+
+       // arg is for internal usage only
+       map: function( elems, callback, arg ) {
+               var value,
+                       i = 0,
+                       length = elems.length,
+                       isArray = isArraylike( elems ),
+                       ret = [];
+
+               // Go through the array, translating each of the items to their new values
+               if ( isArray ) {
+                       for ( ; i < length; i++ ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+
+               // Go through every key on the object,
+               } else {
+                       for ( i in elems ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret.push( value );
+                               }
+                       }
+               }
+
+               // Flatten any nested arrays
+               return concat.apply( [], ret );
+       },
+
+       // A global GUID counter for objects
+       guid: 1,
+
+       // Bind a function to a context, optionally partially applying any
+       // arguments.
+       proxy: function( fn, context ) {
+               var tmp, args, proxy;
+
+               if ( typeof context === "string" ) {
+                       tmp = fn[ context ];
+                       context = fn;
+                       fn = tmp;
+               }
+
+               // Quick check to determine if target is callable, in the spec
+               // this throws a TypeError, but we will just return undefined.
+               if ( !jQuery.isFunction( fn ) ) {
+                       return undefined;
+               }
+
+               // Simulated bind
+               args = slice.call( arguments, 2 );
+               proxy = function() {
+                       return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+               };
+
+               // Set the guid of unique handler to the same of original handler, so it can be removed
+               proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+               return proxy;
+       },
+
+       now: Date.now,
+
+       // jQuery.support is not used in Core but other projects attach their
+       // properties to it so it needs to exist.
+       support: support
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+       class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+
+       // Support: iOS 8.2 (not reproducible in simulator)
+       // `in` check used to prevent JIT error (gh-2145)
+       // hasOwn isn't used here due to false negatives
+       // regarding Nodelist length in IE
+       var length = "length" in obj && obj.length,
+               type = jQuery.type( obj );
+
+       if ( type === "function" || jQuery.isWindow( obj ) ) {
+               return false;
+       }
+
+       if ( obj.nodeType === 1 && length ) {
+               return true;
+       }
+
+       return type === "array" || length === 0 ||
+               typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/access.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/access.js
new file mode 100644 (file)
index 0000000..b6110c8
--- /dev/null
@@ -0,0 +1,60 @@
+define([
+       "../core"
+], function( jQuery ) {
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+       var i = 0,
+               len = elems.length,
+               bulk = key == null;
+
+       // Sets many values
+       if ( jQuery.type( key ) === "object" ) {
+               chainable = true;
+               for ( i in key ) {
+                       jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+               }
+
+       // Sets one value
+       } else if ( value !== undefined ) {
+               chainable = true;
+
+               if ( !jQuery.isFunction( value ) ) {
+                       raw = true;
+               }
+
+               if ( bulk ) {
+                       // Bulk operations run against the entire set
+                       if ( raw ) {
+                               fn.call( elems, value );
+                               fn = null;
+
+                       // ...except when executing function values
+                       } else {
+                               bulk = fn;
+                               fn = function( elem, key, value ) {
+                                       return bulk.call( jQuery( elem ), value );
+                               };
+                       }
+               }
+
+               if ( fn ) {
+                       for ( ; i < len; i++ ) {
+                               fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+                       }
+               }
+       }
+
+       return chainable ?
+               elems :
+
+               // Gets
+               bulk ?
+                       fn.call( elems ) :
+                       len ? fn( elems[0], key ) : emptyGet;
+};
+
+return access;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/init.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/init.js
new file mode 100644 (file)
index 0000000..7e83a04
--- /dev/null
@@ -0,0 +1,123 @@
+// Initialize a jQuery object
+define([
+       "../core",
+       "./var/rsingleTag",
+       "../traversing/findFilter"
+], function( jQuery, rsingleTag ) {
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+       // A simple way to check for HTML strings
+       // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+       // Strict HTML recognition (#11290: must start with <)
+       rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+       init = jQuery.fn.init = function( selector, context ) {
+               var match, elem;
+
+               // HANDLE: $(""), $(null), $(undefined), $(false)
+               if ( !selector ) {
+                       return this;
+               }
+
+               // Handle HTML strings
+               if ( typeof selector === "string" ) {
+                       if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
+                               // Assume that strings that start and end with <> are HTML and skip the regex check
+                               match = [ null, selector, null ];
+
+                       } else {
+                               match = rquickExpr.exec( selector );
+                       }
+
+                       // Match html or make sure no context is specified for #id
+                       if ( match && (match[1] || !context) ) {
+
+                               // HANDLE: $(html) -> $(array)
+                               if ( match[1] ) {
+                                       context = context instanceof jQuery ? context[0] : context;
+
+                                       // Option to run scripts is true for back-compat
+                                       // Intentionally let the error be thrown if parseHTML is not present
+                                       jQuery.merge( this, jQuery.parseHTML(
+                                               match[1],
+                                               context && context.nodeType ? context.ownerDocument || context : document,
+                                               true
+                                       ) );
+
+                                       // HANDLE: $(html, props)
+                                       if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+                                               for ( match in context ) {
+                                                       // Properties of context are called as methods if possible
+                                                       if ( jQuery.isFunction( this[ match ] ) ) {
+                                                               this[ match ]( context[ match ] );
+
+                                                       // ...and otherwise set as attributes
+                                                       } else {
+                                                               this.attr( match, context[ match ] );
+                                                       }
+                                               }
+                                       }
+
+                                       return this;
+
+                               // HANDLE: $(#id)
+                               } else {
+                                       elem = document.getElementById( match[2] );
+
+                                       // Support: Blackberry 4.6
+                                       // gEBID returns nodes no longer in the document (#6963)
+                                       if ( elem && elem.parentNode ) {
+                                               // Inject the element directly into the jQuery object
+                                               this.length = 1;
+                                               this[0] = elem;
+                                       }
+
+                                       this.context = document;
+                                       this.selector = selector;
+                                       return this;
+                               }
+
+                       // HANDLE: $(expr, $(...))
+                       } else if ( !context || context.jquery ) {
+                               return ( context || rootjQuery ).find( selector );
+
+                       // HANDLE: $(expr, context)
+                       // (which is just equivalent to: $(context).find(expr)
+                       } else {
+                               return this.constructor( context ).find( selector );
+                       }
+
+               // HANDLE: $(DOMElement)
+               } else if ( selector.nodeType ) {
+                       this.context = this[0] = selector;
+                       this.length = 1;
+                       return this;
+
+               // HANDLE: $(function)
+               // Shortcut for document ready
+               } else if ( jQuery.isFunction( selector ) ) {
+                       return typeof rootjQuery.ready !== "undefined" ?
+                               rootjQuery.ready( selector ) :
+                               // Execute immediately if ready is not present
+                               selector( jQuery );
+               }
+
+               if ( selector.selector !== undefined ) {
+                       this.selector = selector.selector;
+                       this.context = selector.context;
+               }
+
+               return jQuery.makeArray( selector, this );
+       };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+return init;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/parseHTML.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/parseHTML.js
new file mode 100644 (file)
index 0000000..64cf2a1
--- /dev/null
@@ -0,0 +1,39 @@
+define([
+       "../core",
+       "./var/rsingleTag",
+       "../manipulation" // buildFragment
+], function( jQuery, rsingleTag ) {
+
+// data: string of html
+// context (optional): If specified, the fragment will be created in this context, defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+       if ( !data || typeof data !== "string" ) {
+               return null;
+       }
+       if ( typeof context === "boolean" ) {
+               keepScripts = context;
+               context = false;
+       }
+       context = context || document;
+
+       var parsed = rsingleTag.exec( data ),
+               scripts = !keepScripts && [];
+
+       // Single tag
+       if ( parsed ) {
+               return [ context.createElement( parsed[1] ) ];
+       }
+
+       parsed = jQuery.buildFragment( [ data ], context, scripts );
+
+       if ( scripts && scripts.length ) {
+               jQuery( scripts ).remove();
+       }
+
+       return jQuery.merge( [], parsed.childNodes );
+};
+
+return jQuery.parseHTML;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/ready.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/ready.js
new file mode 100644 (file)
index 0000000..db1a6e6
--- /dev/null
@@ -0,0 +1,97 @@
+define([
+       "../core",
+       "../core/init",
+       "../deferred"
+], function( jQuery ) {
+
+// The deferred used on DOM ready
+var readyList;
+
+jQuery.fn.ready = function( fn ) {
+       // Add the callback
+       jQuery.ready.promise().done( fn );
+
+       return this;
+};
+
+jQuery.extend({
+       // Is the DOM ready to be used? Set to true once it occurs.
+       isReady: false,
+
+       // A counter to track how many items to wait for before
+       // the ready event fires. See #6781
+       readyWait: 1,
+
+       // Hold (or release) the ready event
+       holdReady: function( hold ) {
+               if ( hold ) {
+                       jQuery.readyWait++;
+               } else {
+                       jQuery.ready( true );
+               }
+       },
+
+       // Handle when the DOM is ready
+       ready: function( wait ) {
+
+               // Abort if there are pending holds or we're already ready
+               if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+                       return;
+               }
+
+               // Remember that the DOM is ready
+               jQuery.isReady = true;
+
+               // If a normal DOM Ready event fired, decrement, and wait if need be
+               if ( wait !== true && --jQuery.readyWait > 0 ) {
+                       return;
+               }
+
+               // If there are functions bound, to execute
+               readyList.resolveWith( document, [ jQuery ] );
+
+               // Trigger any bound ready events
+               if ( jQuery.fn.triggerHandler ) {
+                       jQuery( document ).triggerHandler( "ready" );
+                       jQuery( document ).off( "ready" );
+               }
+       }
+});
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+       document.removeEventListener( "DOMContentLoaded", completed, false );
+       window.removeEventListener( "load", completed, false );
+       jQuery.ready();
+}
+
+jQuery.ready.promise = function( obj ) {
+       if ( !readyList ) {
+
+               readyList = jQuery.Deferred();
+
+               // Catch cases where $(document).ready() is called after the browser event has already occurred.
+               // We once tried to use readyState "interactive" here, but it caused issues like the one
+               // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+               if ( document.readyState === "complete" ) {
+                       // Handle it asynchronously to allow scripts the opportunity to delay ready
+                       setTimeout( jQuery.ready );
+
+               } else {
+
+                       // Use the handy event callback
+                       document.addEventListener( "DOMContentLoaded", completed, false );
+
+                       // A fallback to window.onload, that will always work
+                       window.addEventListener( "load", completed, false );
+               }
+       }
+       return readyList.promise( obj );
+};
+
+// Kick off the DOM ready check even if the user does not
+jQuery.ready.promise();
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/var/rsingleTag.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/core/var/rsingleTag.js
new file mode 100644 (file)
index 0000000..7e7090b
--- /dev/null
@@ -0,0 +1,4 @@
+define(function() {
+       // Match a standalone tag
+       return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css.js
new file mode 100644 (file)
index 0000000..d481617
--- /dev/null
@@ -0,0 +1,450 @@
+define([
+       "./core",
+       "./var/pnum",
+       "./core/access",
+       "./css/var/rmargin",
+       "./css/var/rnumnonpx",
+       "./css/var/cssExpand",
+       "./css/var/isHidden",
+       "./css/var/getStyles",
+       "./css/curCSS",
+       "./css/defaultDisplay",
+       "./css/addGetHookIf",
+       "./css/support",
+       "./data/var/data_priv",
+
+       "./core/init",
+       "./css/swap",
+       "./core/ready",
+       "./selector" // contains
+], function( jQuery, pnum, access, rmargin, rnumnonpx, cssExpand, isHidden,
+       getStyles, curCSS, defaultDisplay, addGetHookIf, support, data_priv ) {
+
+var
+       // Swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+       // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+       rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+       rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
+       rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
+
+       cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+       cssNormalTransform = {
+               letterSpacing: "0",
+               fontWeight: "400"
+       },
+
+       cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+       // Shortcut for names that are not vendor prefixed
+       if ( name in style ) {
+               return name;
+       }
+
+       // Check for vendor prefixed names
+       var capName = name[0].toUpperCase() + name.slice(1),
+               origName = name,
+               i = cssPrefixes.length;
+
+       while ( i-- ) {
+               name = cssPrefixes[ i ] + capName;
+               if ( name in style ) {
+                       return name;
+               }
+       }
+
+       return origName;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+       var matches = rnumsplit.exec( value );
+       return matches ?
+               // Guard against undefined "subtract", e.g., when used as in cssHooks
+               Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+               value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+       var i = extra === ( isBorderBox ? "border" : "content" ) ?
+               // If we already have the right measurement, avoid augmentation
+               4 :
+               // Otherwise initialize for horizontal or vertical properties
+               name === "width" ? 1 : 0,
+
+               val = 0;
+
+       for ( ; i < 4; i += 2 ) {
+               // Both box models exclude margin, so add it if we want it
+               if ( extra === "margin" ) {
+                       val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+               }
+
+               if ( isBorderBox ) {
+                       // border-box includes padding, so remove it if we want content
+                       if ( extra === "content" ) {
+                               val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+                       }
+
+                       // At this point, extra isn't border nor margin, so remove border
+                       if ( extra !== "margin" ) {
+                               val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               } else {
+                       // At this point, extra isn't content, so add padding
+                       val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+                       // At this point, extra isn't content nor padding, so add border
+                       if ( extra !== "padding" ) {
+                               val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               }
+       }
+
+       return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+       // Start with offset property, which is equivalent to the border-box value
+       var valueIsBorderBox = true,
+               val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+               styles = getStyles( elem ),
+               isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+       // Some non-html elements return undefined for offsetWidth, so check for null/undefined
+       // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+       // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+       if ( val <= 0 || val == null ) {
+               // Fall back to computed then uncomputed css if necessary
+               val = curCSS( elem, name, styles );
+               if ( val < 0 || val == null ) {
+                       val = elem.style[ name ];
+               }
+
+               // Computed unit is not pixels. Stop here and return.
+               if ( rnumnonpx.test(val) ) {
+                       return val;
+               }
+
+               // Check for style in case a browser which returns unreliable values
+               // for getComputedStyle silently falls back to the reliable elem.style
+               valueIsBorderBox = isBorderBox &&
+                       ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+               // Normalize "", auto, and prepare for extra
+               val = parseFloat( val ) || 0;
+       }
+
+       // Use the active box-sizing model to add/subtract irrelevant styles
+       return ( val +
+               augmentWidthOrHeight(
+                       elem,
+                       name,
+                       extra || ( isBorderBox ? "border" : "content" ),
+                       valueIsBorderBox,
+                       styles
+               )
+       ) + "px";
+}
+
+function showHide( elements, show ) {
+       var display, elem, hidden,
+               values = [],
+               index = 0,
+               length = elements.length;
+
+       for ( ; index < length; index++ ) {
+               elem = elements[ index ];
+               if ( !elem.style ) {
+                       continue;
+               }
+
+               values[ index ] = data_priv.get( elem, "olddisplay" );
+               display = elem.style.display;
+               if ( show ) {
+                       // Reset the inline display of this element to learn if it is
+                       // being hidden by cascaded rules or not
+                       if ( !values[ index ] && display === "none" ) {
+                               elem.style.display = "";
+                       }
+
+                       // Set elements which have been overridden with display: none
+                       // in a stylesheet to whatever the default browser style is
+                       // for such an element
+                       if ( elem.style.display === "" && isHidden( elem ) ) {
+                               values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
+                       }
+               } else {
+                       hidden = isHidden( elem );
+
+                       if ( display !== "none" || !hidden ) {
+                               data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+                       }
+               }
+       }
+
+       // Set the display of most of the elements in a second loop
+       // to avoid the constant reflow
+       for ( index = 0; index < length; index++ ) {
+               elem = elements[ index ];
+               if ( !elem.style ) {
+                       continue;
+               }
+               if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+                       elem.style.display = show ? values[ index ] || "" : "none";
+               }
+       }
+
+       return elements;
+}
+
+jQuery.extend({
+
+       // Add in style property hooks for overriding the default
+       // behavior of getting and setting a style property
+       cssHooks: {
+               opacity: {
+                       get: function( elem, computed ) {
+                               if ( computed ) {
+
+                                       // We should always get a number back from opacity
+                                       var ret = curCSS( elem, "opacity" );
+                                       return ret === "" ? "1" : ret;
+                               }
+                       }
+               }
+       },
+
+       // Don't automatically add "px" to these possibly-unitless properties
+       cssNumber: {
+               "columnCount": true,
+               "fillOpacity": true,
+               "flexGrow": true,
+               "flexShrink": true,
+               "fontWeight": true,
+               "lineHeight": true,
+               "opacity": true,
+               "order": true,
+               "orphans": true,
+               "widows": true,
+               "zIndex": true,
+               "zoom": true
+       },
+
+       // Add in properties whose names you wish to fix before
+       // setting or getting the value
+       cssProps: {
+               "float": "cssFloat"
+       },
+
+       // Get and set the style property on a DOM Node
+       style: function( elem, name, value, extra ) {
+
+               // Don't set styles on text and comment nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+                       return;
+               }
+
+               // Make sure that we're working with the right name
+               var ret, type, hooks,
+                       origName = jQuery.camelCase( name ),
+                       style = elem.style;
+
+               name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+               // Gets hook for the prefixed version, then unprefixed version
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // Check if we're setting a value
+               if ( value !== undefined ) {
+                       type = typeof value;
+
+                       // Convert "+=" or "-=" to relative numbers (#7345)
+                       if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+                               value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+                               // Fixes bug #9237
+                               type = "number";
+                       }
+
+                       // Make sure that null and NaN values aren't set (#7116)
+                       if ( value == null || value !== value ) {
+                               return;
+                       }
+
+                       // If a number, add 'px' to the (except for certain CSS properties)
+                       if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+                               value += "px";
+                       }
+
+                       // Support: IE9-11+
+                       // background-* props affect original clone's values
+                       if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+                               style[ name ] = "inherit";
+                       }
+
+                       // If a hook was provided, use that value, otherwise just set the specified value
+                       if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+                               style[ name ] = value;
+                       }
+
+               } else {
+                       // If a hook was provided get the non-computed value from there
+                       if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+                               return ret;
+                       }
+
+                       // Otherwise just get the value from the style object
+                       return style[ name ];
+               }
+       },
+
+       css: function( elem, name, extra, styles ) {
+               var val, num, hooks,
+                       origName = jQuery.camelCase( name );
+
+               // Make sure that we're working with the right name
+               name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+               // Try prefixed name followed by the unprefixed name
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // If a hook was provided get the computed value from there
+               if ( hooks && "get" in hooks ) {
+                       val = hooks.get( elem, true, extra );
+               }
+
+               // Otherwise, if a way to get the computed value exists, use that
+               if ( val === undefined ) {
+                       val = curCSS( elem, name, styles );
+               }
+
+               // Convert "normal" to computed value
+               if ( val === "normal" && name in cssNormalTransform ) {
+                       val = cssNormalTransform[ name ];
+               }
+
+               // Make numeric if forced or a qualifier was provided and val looks numeric
+               if ( extra === "" || extra ) {
+                       num = parseFloat( val );
+                       return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+               }
+               return val;
+       }
+});
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+       jQuery.cssHooks[ name ] = {
+               get: function( elem, computed, extra ) {
+                       if ( computed ) {
+
+                               // Certain elements can have dimension info if we invisibly show them
+                               // but it must have a current display style that would benefit
+                               return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
+                                       jQuery.swap( elem, cssShow, function() {
+                                               return getWidthOrHeight( elem, name, extra );
+                                       }) :
+                                       getWidthOrHeight( elem, name, extra );
+                       }
+               },
+
+               set: function( elem, value, extra ) {
+                       var styles = extra && getStyles( elem );
+                       return setPositiveNumber( elem, value, extra ?
+                               augmentWidthOrHeight(
+                                       elem,
+                                       name,
+                                       extra,
+                                       jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+                                       styles
+                               ) : 0
+                       );
+               }
+       };
+});
+
+// Support: Android 2.3
+jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
+       function( elem, computed ) {
+               if ( computed ) {
+                       return jQuery.swap( elem, { "display": "inline-block" },
+                               curCSS, [ elem, "marginRight" ] );
+               }
+       }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+       margin: "",
+       padding: "",
+       border: "Width"
+}, function( prefix, suffix ) {
+       jQuery.cssHooks[ prefix + suffix ] = {
+               expand: function( value ) {
+                       var i = 0,
+                               expanded = {},
+
+                               // Assumes a single number if not a string
+                               parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+                       for ( ; i < 4; i++ ) {
+                               expanded[ prefix + cssExpand[ i ] + suffix ] =
+                                       parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+                       }
+
+                       return expanded;
+               }
+       };
+
+       if ( !rmargin.test( prefix ) ) {
+               jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+       }
+});
+
+jQuery.fn.extend({
+       css: function( name, value ) {
+               return access( this, function( elem, name, value ) {
+                       var styles, len,
+                               map = {},
+                               i = 0;
+
+                       if ( jQuery.isArray( name ) ) {
+                               styles = getStyles( elem );
+                               len = name.length;
+
+                               for ( ; i < len; i++ ) {
+                                       map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+                               }
+
+                               return map;
+                       }
+
+                       return value !== undefined ?
+                               jQuery.style( elem, name, value ) :
+                               jQuery.css( elem, name );
+               }, name, value, arguments.length > 1 );
+       },
+       show: function() {
+               return showHide( this, true );
+       },
+       hide: function() {
+               return showHide( this );
+       },
+       toggle: function( state ) {
+               if ( typeof state === "boolean" ) {
+                       return state ? this.show() : this.hide();
+               }
+
+               return this.each(function() {
+                       if ( isHidden( this ) ) {
+                               jQuery( this ).show();
+                       } else {
+                               jQuery( this ).hide();
+                       }
+               });
+       }
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/addGetHookIf.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/addGetHookIf.js
new file mode 100644 (file)
index 0000000..e12f359
--- /dev/null
@@ -0,0 +1,22 @@
+define(function() {
+
+function addGetHookIf( conditionFn, hookFn ) {
+       // Define the hook, we'll check on the first run if it's really needed.
+       return {
+               get: function() {
+                       if ( conditionFn() ) {
+                               // Hook not needed (or it's not possible to use it due
+                               // to missing dependency), remove it.
+                               delete this.get;
+                               return;
+                       }
+
+                       // Hook needed; redefine it so that the support test is not executed again.
+                       return (this.get = hookFn).apply( this, arguments );
+               }
+       };
+}
+
+return addGetHookIf;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/curCSS.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/curCSS.js
new file mode 100644 (file)
index 0000000..90e508c
--- /dev/null
@@ -0,0 +1,57 @@
+define([
+       "../core",
+       "./var/rnumnonpx",
+       "./var/rmargin",
+       "./var/getStyles",
+       "../selector" // contains
+], function( jQuery, rnumnonpx, rmargin, getStyles ) {
+
+function curCSS( elem, name, computed ) {
+       var width, minWidth, maxWidth, ret,
+               style = elem.style;
+
+       computed = computed || getStyles( elem );
+
+       // Support: IE9
+       // getPropertyValue is only needed for .css('filter') (#12537)
+       if ( computed ) {
+               ret = computed.getPropertyValue( name ) || computed[ name ];
+       }
+
+       if ( computed ) {
+
+               if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+                       ret = jQuery.style( elem, name );
+               }
+
+               // Support: iOS < 6
+               // A tribute to the "awesome hack by Dean Edwards"
+               // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+               // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+               if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+                       // Remember the original values
+                       width = style.width;
+                       minWidth = style.minWidth;
+                       maxWidth = style.maxWidth;
+
+                       // Put in the new values to get a computed value out
+                       style.minWidth = style.maxWidth = style.width = ret;
+                       ret = computed.width;
+
+                       // Revert the changed values
+                       style.width = width;
+                       style.minWidth = minWidth;
+                       style.maxWidth = maxWidth;
+               }
+       }
+
+       return ret !== undefined ?
+               // Support: IE
+               // IE returns zIndex value as an integer.
+               ret + "" :
+               ret;
+}
+
+return curCSS;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/defaultDisplay.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/defaultDisplay.js
new file mode 100644 (file)
index 0000000..046ae91
--- /dev/null
@@ -0,0 +1,70 @@
+define([
+       "../core",
+       "../manipulation" // appendTo
+], function( jQuery ) {
+
+var iframe,
+       elemdisplay = {};
+
+/**
+ * Retrieve the actual display of a element
+ * @param {String} name nodeName of the element
+ * @param {Object} doc Document object
+ */
+// Called only from within defaultDisplay
+function actualDisplay( name, doc ) {
+       var style,
+               elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+
+               // getDefaultComputedStyle might be reliably used only on attached element
+               display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
+
+                       // Use of this method is a temporary fix (more like optimization) until something better comes along,
+                       // since it was removed from specification and supported only in FF
+                       style.display : jQuery.css( elem[ 0 ], "display" );
+
+       // We don't have any data stored on the element,
+       // so use "detach" method as fast way to get rid of the element
+       elem.detach();
+
+       return display;
+}
+
+/**
+ * Try to determine the default display value of an element
+ * @param {String} nodeName
+ */
+function defaultDisplay( nodeName ) {
+       var doc = document,
+               display = elemdisplay[ nodeName ];
+
+       if ( !display ) {
+               display = actualDisplay( nodeName, doc );
+
+               // If the simple way fails, read from inside an iframe
+               if ( display === "none" || !display ) {
+
+                       // Use the already-created iframe if possible
+                       iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
+
+                       // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+                       doc = iframe[ 0 ].contentDocument;
+
+                       // Support: IE
+                       doc.write();
+                       doc.close();
+
+                       display = actualDisplay( nodeName, doc );
+                       iframe.detach();
+               }
+
+               // Store the correct default display
+               elemdisplay[ nodeName ] = display;
+       }
+
+       return display;
+}
+
+return defaultDisplay;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/hiddenVisibleSelectors.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/hiddenVisibleSelectors.js
new file mode 100644 (file)
index 0000000..c7f1c7e
--- /dev/null
@@ -0,0 +1,15 @@
+define([
+       "../core",
+       "../selector"
+], function( jQuery ) {
+
+jQuery.expr.filters.hidden = function( elem ) {
+       // Support: Opera <= 12.12
+       // Opera reports offsetWidths and offsetHeights less than zero on some elements
+       return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
+};
+jQuery.expr.filters.visible = function( elem ) {
+       return !jQuery.expr.filters.hidden( elem );
+};
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/support.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/support.js
new file mode 100644 (file)
index 0000000..b9eaf14
--- /dev/null
@@ -0,0 +1,96 @@
+define([
+       "../core",
+       "../var/support"
+], function( jQuery, support ) {
+
+(function() {
+       var pixelPositionVal, boxSizingReliableVal,
+               docElem = document.documentElement,
+               container = document.createElement( "div" ),
+               div = document.createElement( "div" );
+
+       if ( !div.style ) {
+               return;
+       }
+
+       // Support: IE9-11+
+       // Style of cloned element affects source element cloned (#8908)
+       div.style.backgroundClip = "content-box";
+       div.cloneNode( true ).style.backgroundClip = "";
+       support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+       container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
+               "position:absolute";
+       container.appendChild( div );
+
+       // Executing both pixelPosition & boxSizingReliable tests require only one layout
+       // so they're executed at the same time to save the second computation.
+       function computePixelPositionAndBoxSizingReliable() {
+               div.style.cssText =
+                       // Support: Firefox<29, Android 2.3
+                       // Vendor-prefix box-sizing
+                       "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
+                       "box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
+                       "border:1px;padding:1px;width:4px;position:absolute";
+               div.innerHTML = "";
+               docElem.appendChild( container );
+
+               var divStyle = window.getComputedStyle( div, null );
+               pixelPositionVal = divStyle.top !== "1%";
+               boxSizingReliableVal = divStyle.width === "4px";
+
+               docElem.removeChild( container );
+       }
+
+       // Support: node.js jsdom
+       // Don't assume that getComputedStyle is a property of the global object
+       if ( window.getComputedStyle ) {
+               jQuery.extend( support, {
+                       pixelPosition: function() {
+
+                               // This test is executed only once but we still do memoizing
+                               // since we can use the boxSizingReliable pre-computing.
+                               // No need to check if the test was already performed, though.
+                               computePixelPositionAndBoxSizingReliable();
+                               return pixelPositionVal;
+                       },
+                       boxSizingReliable: function() {
+                               if ( boxSizingReliableVal == null ) {
+                                       computePixelPositionAndBoxSizingReliable();
+                               }
+                               return boxSizingReliableVal;
+                       },
+                       reliableMarginRight: function() {
+
+                               // Support: Android 2.3
+                               // Check if div with explicit width and no margin-right incorrectly
+                               // gets computed margin-right based on width of container. (#3333)
+                               // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+                               // This support function is only executed once so no memoizing is needed.
+                               var ret,
+                                       marginDiv = div.appendChild( document.createElement( "div" ) );
+
+                               // Reset CSS: box-sizing; display; margin; border; padding
+                               marginDiv.style.cssText = div.style.cssText =
+                                       // Support: Firefox<29, Android 2.3
+                                       // Vendor-prefix box-sizing
+                                       "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
+                                       "box-sizing:content-box;display:block;margin:0;border:0;padding:0";
+                               marginDiv.style.marginRight = marginDiv.style.width = "0";
+                               div.style.width = "1px";
+                               docElem.appendChild( container );
+
+                               ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
+
+                               docElem.removeChild( container );
+                               div.removeChild( marginDiv );
+
+                               return ret;
+                       }
+               });
+       }
+})();
+
+return support;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/swap.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/swap.js
new file mode 100644 (file)
index 0000000..ce16435
--- /dev/null
@@ -0,0 +1,28 @@
+define([
+       "../core"
+], function( jQuery ) {
+
+// A method for quickly swapping in/out CSS properties to get correct calculations.
+jQuery.swap = function( elem, options, callback, args ) {
+       var ret, name,
+               old = {};
+
+       // Remember the old values, and insert the new ones
+       for ( name in options ) {
+               old[ name ] = elem.style[ name ];
+               elem.style[ name ] = options[ name ];
+       }
+
+       ret = callback.apply( elem, args || [] );
+
+       // Revert the old values
+       for ( name in options ) {
+               elem.style[ name ] = old[ name ];
+       }
+
+       return ret;
+};
+
+return jQuery.swap;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/cssExpand.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/cssExpand.js
new file mode 100644 (file)
index 0000000..91e90a8
--- /dev/null
@@ -0,0 +1,3 @@
+define(function() {
+       return [ "Top", "Right", "Bottom", "Left" ];
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/getStyles.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/getStyles.js
new file mode 100644 (file)
index 0000000..413acd0
--- /dev/null
@@ -0,0 +1,12 @@
+define(function() {
+       return function( elem ) {
+               // Support: IE<=11+, Firefox<=30+ (#15098, #14150)
+               // IE throws on elements created in popups
+               // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+               if ( elem.ownerDocument.defaultView.opener ) {
+                       return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
+               }
+
+               return window.getComputedStyle( elem, null );
+       };
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/isHidden.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/isHidden.js
new file mode 100644 (file)
index 0000000..15ab81a
--- /dev/null
@@ -0,0 +1,13 @@
+define([
+       "../../core",
+       "../../selector"
+       // css is assumed
+], function( jQuery ) {
+
+       return function( elem, el ) {
+               // isHidden might be called from jQuery#filter function;
+               // in that case, element will be second argument
+               elem = el || elem;
+               return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+       };
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/rmargin.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/rmargin.js
new file mode 100644 (file)
index 0000000..da0438d
--- /dev/null
@@ -0,0 +1,3 @@
+define(function() {
+       return (/^margin/);
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/rnumnonpx.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/css/var/rnumnonpx.js
new file mode 100644 (file)
index 0000000..c93be28
--- /dev/null
@@ -0,0 +1,5 @@
+define([
+       "../../var/pnum"
+], function( pnum ) {
+       return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data.js
new file mode 100644 (file)
index 0000000..f9af9ae
--- /dev/null
@@ -0,0 +1,178 @@
+define([
+       "./core",
+       "./var/rnotwhite",
+       "./core/access",
+       "./data/var/data_priv",
+       "./data/var/data_user"
+], function( jQuery, rnotwhite, access, data_priv, data_user ) {
+
+//     Implementation Summary
+//
+//     1. Enforce API surface and semantic compatibility with 1.9.x branch
+//     2. Improve the module's maintainability by reducing the storage
+//             paths to a single mechanism.
+//     3. Use the same single mechanism to support "private" and "user" data.
+//     4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//     5. Avoid exposing implementation details on user objects (eg. expando properties)
+//     6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+       rmultiDash = /([A-Z])/g;
+
+function dataAttr( elem, key, data ) {
+       var name;
+
+       // If nothing was found internally, try to fetch any
+       // data from the HTML5 data-* attribute
+       if ( data === undefined && elem.nodeType === 1 ) {
+               name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+               data = elem.getAttribute( name );
+
+               if ( typeof data === "string" ) {
+                       try {
+                               data = data === "true" ? true :
+                                       data === "false" ? false :
+                                       data === "null" ? null :
+                                       // Only convert to a number if it doesn't change the string
+                                       +data + "" === data ? +data :
+                                       rbrace.test( data ) ? jQuery.parseJSON( data ) :
+                                       data;
+                       } catch( e ) {}
+
+                       // Make sure we set the data so it isn't changed later
+                       data_user.set( elem, key, data );
+               } else {
+                       data = undefined;
+               }
+       }
+       return data;
+}
+
+jQuery.extend({
+       hasData: function( elem ) {
+               return data_user.hasData( elem ) || data_priv.hasData( elem );
+       },
+
+       data: function( elem, name, data ) {
+               return data_user.access( elem, name, data );
+       },
+
+       removeData: function( elem, name ) {
+               data_user.remove( elem, name );
+       },
+
+       // TODO: Now that all calls to _data and _removeData have been replaced
+       // with direct calls to data_priv methods, these can be deprecated.
+       _data: function( elem, name, data ) {
+               return data_priv.access( elem, name, data );
+       },
+
+       _removeData: function( elem, name ) {
+               data_priv.remove( elem, name );
+       }
+});
+
+jQuery.fn.extend({
+       data: function( key, value ) {
+               var i, name, data,
+                       elem = this[ 0 ],
+                       attrs = elem && elem.attributes;
+
+               // Gets all values
+               if ( key === undefined ) {
+                       if ( this.length ) {
+                               data = data_user.get( elem );
+
+                               if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
+                                       i = attrs.length;
+                                       while ( i-- ) {
+
+                                               // Support: IE11+
+                                               // The attrs elements can be null (#14894)
+                                               if ( attrs[ i ] ) {
+                                                       name = attrs[ i ].name;
+                                                       if ( name.indexOf( "data-" ) === 0 ) {
+                                                               name = jQuery.camelCase( name.slice(5) );
+                                                               dataAttr( elem, name, data[ name ] );
+                                                       }
+                                               }
+                                       }
+                                       data_priv.set( elem, "hasDataAttrs", true );
+                               }
+                       }
+
+                       return data;
+               }
+
+               // Sets multiple values
+               if ( typeof key === "object" ) {
+                       return this.each(function() {
+                               data_user.set( this, key );
+                       });
+               }
+
+               return access( this, function( value ) {
+                       var data,
+                               camelKey = jQuery.camelCase( key );
+
+                       // The calling jQuery object (element matches) is not empty
+                       // (and therefore has an element appears at this[ 0 ]) and the
+                       // `value` parameter was not undefined. An empty jQuery object
+                       // will result in `undefined` for elem = this[ 0 ] which will
+                       // throw an exception if an attempt to read a data cache is made.
+                       if ( elem && value === undefined ) {
+                               // Attempt to get data from the cache
+                               // with the key as-is
+                               data = data_user.get( elem, key );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // Attempt to get data from the cache
+                               // with the key camelized
+                               data = data_user.get( elem, camelKey );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // Attempt to "discover" the data in
+                               // HTML5 custom data-* attrs
+                               data = dataAttr( elem, camelKey, undefined );
+                               if ( data !== undefined ) {
+                                       return data;
+                               }
+
+                               // We tried really hard, but the data doesn't exist.
+                               return;
+                       }
+
+                       // Set the data...
+                       this.each(function() {
+                               // First, attempt to store a copy or reference of any
+                               // data that might've been store with a camelCased key.
+                               var data = data_user.get( this, camelKey );
+
+                               // For HTML5 data-* attribute interop, we have to
+                               // store property names with dashes in a camelCase form.
+                               // This might not apply to all properties...*
+                               data_user.set( this, camelKey, value );
+
+                               // *... In the case of properties that might _actually_
+                               // have dashes, we need to also store a copy of that
+                               // unchanged property.
+                               if ( key.indexOf("-") !== -1 && data !== undefined ) {
+                                       data_user.set( this, key, value );
+                               }
+                       });
+               }, null, value, arguments.length > 1, null, true );
+       },
+
+       removeData: function( key ) {
+               return this.each(function() {
+                       data_user.remove( this, key );
+               });
+       }
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/Data.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/Data.js
new file mode 100644 (file)
index 0000000..85afd64
--- /dev/null
@@ -0,0 +1,181 @@
+define([
+       "../core",
+       "../var/rnotwhite",
+       "./accepts"
+], function( jQuery, rnotwhite ) {
+
+function Data() {
+       // Support: Android<4,
+       // Old WebKit does not have Object.preventExtensions/freeze method,
+       // return new empty object instead with no [[set]] accessor
+       Object.defineProperty( this.cache = {}, 0, {
+               get: function() {
+                       return {};
+               }
+       });
+
+       this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+Data.accepts = jQuery.acceptData;
+
+Data.prototype = {
+       key: function( owner ) {
+               // We can accept data for non-element nodes in modern browsers,
+               // but we should not, see #8335.
+               // Always return the key for a frozen object.
+               if ( !Data.accepts( owner ) ) {
+                       return 0;
+               }
+
+               var descriptor = {},
+                       // Check if the owner object already has a cache key
+                       unlock = owner[ this.expando ];
+
+               // If not, create one
+               if ( !unlock ) {
+                       unlock = Data.uid++;
+
+                       // Secure it in a non-enumerable, non-writable property
+                       try {
+                               descriptor[ this.expando ] = { value: unlock };
+                               Object.defineProperties( owner, descriptor );
+
+                       // Support: Android<4
+                       // Fallback to a less secure definition
+                       } catch ( e ) {
+                               descriptor[ this.expando ] = unlock;
+                               jQuery.extend( owner, descriptor );
+                       }
+               }
+
+               // Ensure the cache object
+               if ( !this.cache[ unlock ] ) {
+                       this.cache[ unlock ] = {};
+               }
+
+               return unlock;
+       },
+       set: function( owner, data, value ) {
+               var prop,
+                       // There may be an unlock assigned to this node,
+                       // if there is no entry for this "owner", create one inline
+                       // and set the unlock as though an owner entry had always existed
+                       unlock = this.key( owner ),
+                       cache = this.cache[ unlock ];
+
+               // Handle: [ owner, key, value ] args
+               if ( typeof data === "string" ) {
+                       cache[ data ] = value;
+
+               // Handle: [ owner, { properties } ] args
+               } else {
+                       // Fresh assignments by object are shallow copied
+                       if ( jQuery.isEmptyObject( cache ) ) {
+                               jQuery.extend( this.cache[ unlock ], data );
+                       // Otherwise, copy the properties one-by-one to the cache object
+                       } else {
+                               for ( prop in data ) {
+                                       cache[ prop ] = data[ prop ];
+                               }
+                       }
+               }
+               return cache;
+       },
+       get: function( owner, key ) {
+               // Either a valid cache is found, or will be created.
+               // New caches will be created and the unlock returned,
+               // allowing direct access to the newly created
+               // empty data object. A valid owner object must be provided.
+               var cache = this.cache[ this.key( owner ) ];
+
+               return key === undefined ?
+                       cache : cache[ key ];
+       },
+       access: function( owner, key, value ) {
+               var stored;
+               // In cases where either:
+               //
+               //   1. No key was specified
+               //   2. A string key was specified, but no value provided
+               //
+               // Take the "read" path and allow the get method to determine
+               // which value to return, respectively either:
+               //
+               //   1. The entire cache object
+               //   2. The data stored at the key
+               //
+               if ( key === undefined ||
+                               ((key && typeof key === "string") && value === undefined) ) {
+
+                       stored = this.get( owner, key );
+
+                       return stored !== undefined ?
+                               stored : this.get( owner, jQuery.camelCase(key) );
+               }
+
+               // [*]When the key is not a string, or both a key and value
+               // are specified, set or extend (existing objects) with either:
+               //
+               //   1. An object of properties
+               //   2. A key and value
+               //
+               this.set( owner, key, value );
+
+               // Since the "set" path can have two possible entry points
+               // return the expected data based on which path was taken[*]
+               return value !== undefined ? value : key;
+       },
+       remove: function( owner, key ) {
+               var i, name, camel,
+                       unlock = this.key( owner ),
+                       cache = this.cache[ unlock ];
+
+               if ( key === undefined ) {
+                       this.cache[ unlock ] = {};
+
+               } else {
+                       // Support array or space separated string of keys
+                       if ( jQuery.isArray( key ) ) {
+                               // If "name" is an array of keys...
+                               // When data is initially created, via ("key", "val") signature,
+                               // keys will be converted to camelCase.
+                               // Since there is no way to tell _how_ a key was added, remove
+                               // both plain key and camelCase key. #12786
+                               // This will only penalize the array argument path.
+                               name = key.concat( key.map( jQuery.camelCase ) );
+                       } else {
+                               camel = jQuery.camelCase( key );
+                               // Try the string as a key before any manipulation
+                               if ( key in cache ) {
+                                       name = [ key, camel ];
+                               } else {
+                                       // If a key with the spaces exists, use it.
+                                       // Otherwise, create an array by matching non-whitespace
+                                       name = camel;
+                                       name = name in cache ?
+                                               [ name ] : ( name.match( rnotwhite ) || [] );
+                               }
+                       }
+
+                       i = name.length;
+                       while ( i-- ) {
+                               delete cache[ name[ i ] ];
+                       }
+               }
+       },
+       hasData: function( owner ) {
+               return !jQuery.isEmptyObject(
+                       this.cache[ owner[ this.expando ] ] || {}
+               );
+       },
+       discard: function( owner ) {
+               if ( owner[ this.expando ] ) {
+                       delete this.cache[ owner[ this.expando ] ];
+               }
+       }
+};
+
+return Data;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/accepts.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/accepts.js
new file mode 100644 (file)
index 0000000..291c7b4
--- /dev/null
@@ -0,0 +1,20 @@
+define([
+       "../core"
+], function( jQuery ) {
+
+/**
+ * Determines whether an object can have data
+ */
+jQuery.acceptData = function( owner ) {
+       // Accepts only:
+       //  - Node
+       //    - Node.ELEMENT_NODE
+       //    - Node.DOCUMENT_NODE
+       //  - Object
+       //    - Any
+       /* jshint -W018 */
+       return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+return jQuery.acceptData;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/var/data_priv.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/var/data_priv.js
new file mode 100644 (file)
index 0000000..24399e4
--- /dev/null
@@ -0,0 +1,5 @@
+define([
+       "../Data"
+], function( Data ) {
+       return new Data();
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/var/data_user.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/data/var/data_user.js
new file mode 100644 (file)
index 0000000..24399e4
--- /dev/null
@@ -0,0 +1,5 @@
+define([
+       "../Data"
+], function( Data ) {
+       return new Data();
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/deferred.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/deferred.js
new file mode 100644 (file)
index 0000000..98f9c31
--- /dev/null
@@ -0,0 +1,149 @@
+define([
+       "./core",
+       "./var/slice",
+       "./callbacks"
+], function( jQuery, slice ) {
+
+jQuery.extend({
+
+       Deferred: function( func ) {
+               var tuples = [
+                               // action, add listener, listener list, final state
+                               [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+                               [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+                               [ "notify", "progress", jQuery.Callbacks("memory") ]
+                       ],
+                       state = "pending",
+                       promise = {
+                               state: function() {
+                                       return state;
+                               },
+                               always: function() {
+                                       deferred.done( arguments ).fail( arguments );
+                                       return this;
+                               },
+                               then: function( /* fnDone, fnFail, fnProgress */ ) {
+                                       var fns = arguments;
+                                       return jQuery.Deferred(function( newDefer ) {
+                                               jQuery.each( tuples, function( i, tuple ) {
+                                                       var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+                                                       // deferred[ done | fail | progress ] for forwarding actions to newDefer
+                                                       deferred[ tuple[1] ](function() {
+                                                               var returned = fn && fn.apply( this, arguments );
+                                                               if ( returned && jQuery.isFunction( returned.promise ) ) {
+                                                                       returned.promise()
+                                                                               .done( newDefer.resolve )
+                                                                               .fail( newDefer.reject )
+                                                                               .progress( newDefer.notify );
+                                                               } else {
+                                                                       newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+                                                               }
+                                                       });
+                                               });
+                                               fns = null;
+                                       }).promise();
+                               },
+                               // Get a promise for this deferred
+                               // If obj is provided, the promise aspect is added to the object
+                               promise: function( obj ) {
+                                       return obj != null ? jQuery.extend( obj, promise ) : promise;
+                               }
+                       },
+                       deferred = {};
+
+               // Keep pipe for back-compat
+               promise.pipe = promise.then;
+
+               // Add list-specific methods
+               jQuery.each( tuples, function( i, tuple ) {
+                       var list = tuple[ 2 ],
+                               stateString = tuple[ 3 ];
+
+                       // promise[ done | fail | progress ] = list.add
+                       promise[ tuple[1] ] = list.add;
+
+                       // Handle state
+                       if ( stateString ) {
+                               list.add(function() {
+                                       // state = [ resolved | rejected ]
+                                       state = stateString;
+
+                               // [ reject_list | resolve_list ].disable; progress_list.lock
+                               }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+                       }
+
+                       // deferred[ resolve | reject | notify ]
+                       deferred[ tuple[0] ] = function() {
+                               deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+                               return this;
+                       };
+                       deferred[ tuple[0] + "With" ] = list.fireWith;
+               });
+
+               // Make the deferred a promise
+               promise.promise( deferred );
+
+               // Call given func if any
+               if ( func ) {
+                       func.call( deferred, deferred );
+               }
+
+               // All done!
+               return deferred;
+       },
+
+       // Deferred helper
+       when: function( subordinate /* , ..., subordinateN */ ) {
+               var i = 0,
+                       resolveValues = slice.call( arguments ),
+                       length = resolveValues.length,
+
+                       // the count of uncompleted subordinates
+                       remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+                       // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+                       deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+                       // Update function for both resolve and progress values
+                       updateFunc = function( i, contexts, values ) {
+                               return function( value ) {
+                                       contexts[ i ] = this;
+                                       values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+                                       if ( values === progressValues ) {
+                                               deferred.notifyWith( contexts, values );
+                                       } else if ( !( --remaining ) ) {
+                                               deferred.resolveWith( contexts, values );
+                                       }
+                               };
+                       },
+
+                       progressValues, progressContexts, resolveContexts;
+
+               // Add listeners to Deferred subordinates; treat others as resolved
+               if ( length > 1 ) {
+                       progressValues = new Array( length );
+                       progressContexts = new Array( length );
+                       resolveContexts = new Array( length );
+                       for ( ; i < length; i++ ) {
+                               if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+                                       resolveValues[ i ].promise()
+                                               .done( updateFunc( i, resolveContexts, resolveValues ) )
+                                               .fail( deferred.reject )
+                                               .progress( updateFunc( i, progressContexts, progressValues ) );
+                               } else {
+                                       --remaining;
+                               }
+                       }
+               }
+
+               // If we're not waiting on anything, resolve the master
+               if ( !remaining ) {
+                       deferred.resolveWith( resolveContexts, resolveValues );
+               }
+
+               return deferred.promise();
+       }
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/deprecated.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/deprecated.js
new file mode 100644 (file)
index 0000000..1b068bc
--- /dev/null
@@ -0,0 +1,13 @@
+define([
+       "./core",
+       "./traversing"
+], function( jQuery ) {
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+       return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/dimensions.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/dimensions.js
new file mode 100644 (file)
index 0000000..e6cb04c
--- /dev/null
@@ -0,0 +1,50 @@
+define([
+       "./core",
+       "./core/access",
+       "./css"
+], function( jQuery, access ) {
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+       jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+               // Margin is only for outerHeight, outerWidth
+               jQuery.fn[ funcName ] = function( margin, value ) {
+                       var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+                               extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+                       return access( this, function( elem, type, value ) {
+                               var doc;
+
+                               if ( jQuery.isWindow( elem ) ) {
+                                       // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+                                       // isn't a whole lot we can do. See pull request at this URL for discussion:
+                                       // https://github.com/jquery/jquery/pull/764
+                                       return elem.document.documentElement[ "client" + name ];
+                               }
+
+                               // Get document width or height
+                               if ( elem.nodeType === 9 ) {
+                                       doc = elem.documentElement;
+
+                                       // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+                                       // whichever is greatest
+                                       return Math.max(
+                                               elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+                                               elem.body[ "offset" + name ], doc[ "offset" + name ],
+                                               doc[ "client" + name ]
+                                       );
+                               }
+
+                               return value === undefined ?
+                                       // Get width or height on the element, requesting but not forcing parseFloat
+                                       jQuery.css( elem, type, extra ) :
+
+                                       // Set width or height on the element
+                                       jQuery.style( elem, type, value, extra );
+                       }, type, chainable ? margin : undefined, chainable, null );
+               };
+       });
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/effects.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/effects.js
new file mode 100644 (file)
index 0000000..90226bd
--- /dev/null
@@ -0,0 +1,648 @@
+define([
+       "./core",
+       "./var/pnum",
+       "./css/var/cssExpand",
+       "./css/var/isHidden",
+       "./css/defaultDisplay",
+       "./data/var/data_priv",
+
+       "./core/init",
+       "./effects/Tween",
+       "./queue",
+       "./css",
+       "./deferred",
+       "./traversing"
+], function( jQuery, pnum, cssExpand, isHidden, defaultDisplay, data_priv ) {
+
+var
+       fxNow, timerId,
+       rfxtypes = /^(?:toggle|show|hide)$/,
+       rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
+       rrun = /queueHooks$/,
+       animationPrefilters = [ defaultPrefilter ],
+       tweeners = {
+               "*": [ function( prop, value ) {
+                       var tween = this.createTween( prop, value ),
+                               target = tween.cur(),
+                               parts = rfxnum.exec( value ),
+                               unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+                               // Starting value computation is required for potential unit mismatches
+                               start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+                                       rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+                               scale = 1,
+                               maxIterations = 20;
+
+                       if ( start && start[ 3 ] !== unit ) {
+                               // Trust units reported by jQuery.css
+                               unit = unit || start[ 3 ];
+
+                               // Make sure we update the tween properties later on
+                               parts = parts || [];
+
+                               // Iteratively approximate from a nonzero starting point
+                               start = +target || 1;
+
+                               do {
+                                       // If previous iteration zeroed out, double until we get *something*.
+                                       // Use string for doubling so we don't accidentally see scale as unchanged below
+                                       scale = scale || ".5";
+
+                                       // Adjust and apply
+                                       start = start / scale;
+                                       jQuery.style( tween.elem, prop, start + unit );
+
+                               // Update scale, tolerating zero or NaN from tween.cur(),
+                               // break the loop if scale is unchanged or perfect, or if we've just had enough
+                               } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+                       }
+
+                       // Update tween properties
+                       if ( parts ) {
+                               start = tween.start = +start || +target || 0;
+                               tween.unit = unit;
+                               // If a +=/-= token was provided, we're doing a relative animation
+                               tween.end = parts[ 1 ] ?
+                                       start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+                                       +parts[ 2 ];
+                       }
+
+                       return tween;
+               } ]
+       };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+       setTimeout(function() {
+               fxNow = undefined;
+       });
+       return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+       var which,
+               i = 0,
+               attrs = { height: type };
+
+       // If we include width, step value is 1 to do all cssExpand values,
+       // otherwise step value is 2 to skip over Left and Right
+       includeWidth = includeWidth ? 1 : 0;
+       for ( ; i < 4 ; i += 2 - includeWidth ) {
+               which = cssExpand[ i ];
+               attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+       }
+
+       if ( includeWidth ) {
+               attrs.opacity = attrs.width = type;
+       }
+
+       return attrs;
+}
+
+function createTween( value, prop, animation ) {
+       var tween,
+               collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+               index = 0,
+               length = collection.length;
+       for ( ; index < length; index++ ) {
+               if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+                       // We're done with this property
+                       return tween;
+               }
+       }
+}
+
+function defaultPrefilter( elem, props, opts ) {
+       /* jshint validthis: true */
+       var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
+               anim = this,
+               orig = {},
+               style = elem.style,
+               hidden = elem.nodeType && isHidden( elem ),
+               dataShow = data_priv.get( elem, "fxshow" );
+
+       // Handle queue: false promises
+       if ( !opts.queue ) {
+               hooks = jQuery._queueHooks( elem, "fx" );
+               if ( hooks.unqueued == null ) {
+                       hooks.unqueued = 0;
+                       oldfire = hooks.empty.fire;
+                       hooks.empty.fire = function() {
+                               if ( !hooks.unqueued ) {
+                                       oldfire();
+                               }
+                       };
+               }
+               hooks.unqueued++;
+
+               anim.always(function() {
+                       // Ensure the complete handler is called before this completes
+                       anim.always(function() {
+                               hooks.unqueued--;
+                               if ( !jQuery.queue( elem, "fx" ).length ) {
+                                       hooks.empty.fire();
+                               }
+                       });
+               });
+       }
+
+       // Height/width overflow pass
+       if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+               // Make sure that nothing sneaks out
+               // Record all 3 overflow attributes because IE9-10 do not
+               // change the overflow attribute when overflowX and
+               // overflowY are set to the same value
+               opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+               // Set display property to inline-block for height/width
+               // animations on inline elements that are having width/height animated
+               display = jQuery.css( elem, "display" );
+
+               // Test default display if display is currently "none"
+               checkDisplay = display === "none" ?
+                       data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
+
+               if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
+                       style.display = "inline-block";
+               }
+       }
+
+       if ( opts.overflow ) {
+               style.overflow = "hidden";
+               anim.always(function() {
+                       style.overflow = opts.overflow[ 0 ];
+                       style.overflowX = opts.overflow[ 1 ];
+                       style.overflowY = opts.overflow[ 2 ];
+               });
+       }
+
+       // show/hide pass
+       for ( prop in props ) {
+               value = props[ prop ];
+               if ( rfxtypes.exec( value ) ) {
+                       delete props[ prop ];
+                       toggle = toggle || value === "toggle";
+                       if ( value === ( hidden ? "hide" : "show" ) ) {
+
+                               // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
+                               if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+                                       hidden = true;
+                               } else {
+                                       continue;
+                               }
+                       }
+                       orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+
+               // Any non-fx value stops us from restoring the original display value
+               } else {
+                       display = undefined;
+               }
+       }
+
+       if ( !jQuery.isEmptyObject( orig ) ) {
+               if ( dataShow ) {
+                       if ( "hidden" in dataShow ) {
+                               hidden = dataShow.hidden;
+                       }
+               } else {
+                       dataShow = data_priv.access( elem, "fxshow", {} );
+               }
+
+               // Store state if its toggle - enables .stop().toggle() to "reverse"
+               if ( toggle ) {
+                       dataShow.hidden = !hidden;
+               }
+               if ( hidden ) {
+                       jQuery( elem ).show();
+               } else {
+                       anim.done(function() {
+                               jQuery( elem ).hide();
+                       });
+               }
+               anim.done(function() {
+                       var prop;
+
+                       data_priv.remove( elem, "fxshow" );
+                       for ( prop in orig ) {
+                               jQuery.style( elem, prop, orig[ prop ] );
+                       }
+               });
+               for ( prop in orig ) {
+                       tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+                       if ( !( prop in dataShow ) ) {
+                               dataShow[ prop ] = tween.start;
+                               if ( hidden ) {
+                                       tween.end = tween.start;
+                                       tween.start = prop === "width" || prop === "height" ? 1 : 0;
+                               }
+                       }
+               }
+
+       // If this is a noop like .hide().hide(), restore an overwritten display value
+       } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
+               style.display = display;
+       }
+}
+
+function propFilter( props, specialEasing ) {
+       var index, name, easing, value, hooks;
+
+       // camelCase, specialEasing and expand cssHook pass
+       for ( index in props ) {
+               name = jQuery.camelCase( index );
+               easing = specialEasing[ name ];
+               value = props[ index ];
+               if ( jQuery.isArray( value ) ) {
+                       easing = value[ 1 ];
+                       value = props[ index ] = value[ 0 ];
+               }
+
+               if ( index !== name ) {
+                       props[ name ] = value;
+                       delete props[ index ];
+               }
+
+               hooks = jQuery.cssHooks[ name ];
+               if ( hooks && "expand" in hooks ) {
+                       value = hooks.expand( value );
+                       delete props[ name ];
+
+                       // Not quite $.extend, this won't overwrite existing keys.
+                       // Reusing 'index' because we have the correct "name"
+                       for ( index in value ) {
+                               if ( !( index in props ) ) {
+                                       props[ index ] = value[ index ];
+                                       specialEasing[ index ] = easing;
+                               }
+                       }
+               } else {
+                       specialEasing[ name ] = easing;
+               }
+       }
+}
+
+function Animation( elem, properties, options ) {
+       var result,
+               stopped,
+               index = 0,
+               length = animationPrefilters.length,
+               deferred = jQuery.Deferred().always( function() {
+                       // Don't match elem in the :animated selector
+                       delete tick.elem;
+               }),
+               tick = function() {
+                       if ( stopped ) {
+                               return false;
+                       }
+                       var currentTime = fxNow || createFxNow(),
+                               remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+                               // Support: Android 2.3
+                               // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+                               temp = remaining / animation.duration || 0,
+                               percent = 1 - temp,
+                               index = 0,
+                               length = animation.tweens.length;
+
+                       for ( ; index < length ; index++ ) {
+                               animation.tweens[ index ].run( percent );
+                       }
+
+                       deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+                       if ( percent < 1 && length ) {
+                               return remaining;
+                       } else {
+                               deferred.resolveWith( elem, [ animation ] );
+                               return false;
+                       }
+               },
+               animation = deferred.promise({
+                       elem: elem,
+                       props: jQuery.extend( {}, properties ),
+                       opts: jQuery.extend( true, { specialEasing: {} }, options ),
+                       originalProperties: properties,
+                       originalOptions: options,
+                       startTime: fxNow || createFxNow(),
+                       duration: options.duration,
+                       tweens: [],
+                       createTween: function( prop, end ) {
+                               var tween = jQuery.Tween( elem, animation.opts, prop, end,
+                                               animation.opts.specialEasing[ prop ] || animation.opts.easing );
+                               animation.tweens.push( tween );
+                               return tween;
+                       },
+                       stop: function( gotoEnd ) {
+                               var index = 0,
+                                       // If we are going to the end, we want to run all the tweens
+                                       // otherwise we skip this part
+                                       length = gotoEnd ? animation.tweens.length : 0;
+                               if ( stopped ) {
+                                       return this;
+                               }
+                               stopped = true;
+                               for ( ; index < length ; index++ ) {
+                                       animation.tweens[ index ].run( 1 );
+                               }
+
+                               // Resolve when we played the last frame; otherwise, reject
+                               if ( gotoEnd ) {
+                                       deferred.resolveWith( elem, [ animation, gotoEnd ] );
+                               } else {
+                                       deferred.rejectWith( elem, [ animation, gotoEnd ] );
+                               }
+                               return this;
+                       }
+               }),
+               props = animation.props;
+
+       propFilter( props, animation.opts.specialEasing );
+
+       for ( ; index < length ; index++ ) {
+               result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+               if ( result ) {
+                       return result;
+               }
+       }
+
+       jQuery.map( props, createTween, animation );
+
+       if ( jQuery.isFunction( animation.opts.start ) ) {
+               animation.opts.start.call( elem, animation );
+       }
+
+       jQuery.fx.timer(
+               jQuery.extend( tick, {
+                       elem: elem,
+                       anim: animation,
+                       queue: animation.opts.queue
+               })
+       );
+
+       // attach callbacks from options
+       return animation.progress( animation.opts.progress )
+               .done( animation.opts.done, animation.opts.complete )
+               .fail( animation.opts.fail )
+               .always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+       tweener: function( props, callback ) {
+               if ( jQuery.isFunction( props ) ) {
+                       callback = props;
+                       props = [ "*" ];
+               } else {
+                       props = props.split(" ");
+               }
+
+               var prop,
+                       index = 0,
+                       length = props.length;
+
+               for ( ; index < length ; index++ ) {
+                       prop = props[ index ];
+                       tweeners[ prop ] = tweeners[ prop ] || [];
+                       tweeners[ prop ].unshift( callback );
+               }
+       },
+
+       prefilter: function( callback, prepend ) {
+               if ( prepend ) {
+                       animationPrefilters.unshift( callback );
+               } else {
+                       animationPrefilters.push( callback );
+               }
+       }
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+       var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+               complete: fn || !fn && easing ||
+                       jQuery.isFunction( speed ) && speed,
+               duration: speed,
+               easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+       };
+
+       opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+               opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+       // Normalize opt.queue - true/undefined/null -> "fx"
+       if ( opt.queue == null || opt.queue === true ) {
+               opt.queue = "fx";
+       }
+
+       // Queueing
+       opt.old = opt.complete;
+
+       opt.complete = function() {
+               if ( jQuery.isFunction( opt.old ) ) {
+                       opt.old.call( this );
+               }
+
+               if ( opt.queue ) {
+                       jQuery.dequeue( this, opt.queue );
+               }
+       };
+
+       return opt;
+};
+
+jQuery.fn.extend({
+       fadeTo: function( speed, to, easing, callback ) {
+
+               // Show any hidden elements after setting opacity to 0
+               return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+                       // Animate to the value specified
+                       .end().animate({ opacity: to }, speed, easing, callback );
+       },
+       animate: function( prop, speed, easing, callback ) {
+               var empty = jQuery.isEmptyObject( prop ),
+                       optall = jQuery.speed( speed, easing, callback ),
+                       doAnimation = function() {
+                               // Operate on a copy of prop so per-property easing won't be lost
+                               var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+                               // Empty animations, or finishing resolves immediately
+                               if ( empty || data_priv.get( this, "finish" ) ) {
+                                       anim.stop( true );
+                               }
+                       };
+                       doAnimation.finish = doAnimation;
+
+               return empty || optall.queue === false ?
+                       this.each( doAnimation ) :
+                       this.queue( optall.queue, doAnimation );
+       },
+       stop: function( type, clearQueue, gotoEnd ) {
+               var stopQueue = function( hooks ) {
+                       var stop = hooks.stop;
+                       delete hooks.stop;
+                       stop( gotoEnd );
+               };
+
+               if ( typeof type !== "string" ) {
+                       gotoEnd = clearQueue;
+                       clearQueue = type;
+                       type = undefined;
+               }
+               if ( clearQueue && type !== false ) {
+                       this.queue( type || "fx", [] );
+               }
+
+               return this.each(function() {
+                       var dequeue = true,
+                               index = type != null && type + "queueHooks",
+                               timers = jQuery.timers,
+                               data = data_priv.get( this );
+
+                       if ( index ) {
+                               if ( data[ index ] && data[ index ].stop ) {
+                                       stopQueue( data[ index ] );
+                               }
+                       } else {
+                               for ( index in data ) {
+                                       if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+                                               stopQueue( data[ index ] );
+                                       }
+                               }
+                       }
+
+                       for ( index = timers.length; index--; ) {
+                               if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+                                       timers[ index ].anim.stop( gotoEnd );
+                                       dequeue = false;
+                                       timers.splice( index, 1 );
+                               }
+                       }
+
+                       // Start the next in the queue if the last step wasn't forced.
+                       // Timers currently will call their complete callbacks, which
+                       // will dequeue but only if they were gotoEnd.
+                       if ( dequeue || !gotoEnd ) {
+                               jQuery.dequeue( this, type );
+                       }
+               });
+       },
+       finish: function( type ) {
+               if ( type !== false ) {
+                       type = type || "fx";
+               }
+               return this.each(function() {
+                       var index,
+                               data = data_priv.get( this ),
+                               queue = data[ type + "queue" ],
+                               hooks = data[ type + "queueHooks" ],
+                               timers = jQuery.timers,
+                               length = queue ? queue.length : 0;
+
+                       // Enable finishing flag on private data
+                       data.finish = true;
+
+                       // Empty the queue first
+                       jQuery.queue( this, type, [] );
+
+                       if ( hooks && hooks.stop ) {
+                               hooks.stop.call( this, true );
+                       }
+
+                       // Look for any active animations, and finish them
+                       for ( index = timers.length; index--; ) {
+                               if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+                                       timers[ index ].anim.stop( true );
+                                       timers.splice( index, 1 );
+                               }
+                       }
+
+                       // Look for any animations in the old queue and finish them
+                       for ( index = 0; index < length; index++ ) {
+                               if ( queue[ index ] && queue[ index ].finish ) {
+                                       queue[ index ].finish.call( this );
+                               }
+                       }
+
+                       // Turn off finishing flag
+                       delete data.finish;
+               });
+       }
+});
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+       var cssFn = jQuery.fn[ name ];
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return speed == null || typeof speed === "boolean" ?
+                       cssFn.apply( this, arguments ) :
+                       this.animate( genFx( name, true ), speed, easing, callback );
+       };
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+       slideDown: genFx("show"),
+       slideUp: genFx("hide"),
+       slideToggle: genFx("toggle"),
+       fadeIn: { opacity: "show" },
+       fadeOut: { opacity: "hide" },
+       fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return this.animate( props, speed, easing, callback );
+       };
+});
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+       var timer,
+               i = 0,
+               timers = jQuery.timers;
+
+       fxNow = jQuery.now();
+
+       for ( ; i < timers.length; i++ ) {
+               timer = timers[ i ];
+               // Checks the timer has not already been removed
+               if ( !timer() && timers[ i ] === timer ) {
+                       timers.splice( i--, 1 );
+               }
+       }
+
+       if ( !timers.length ) {
+               jQuery.fx.stop();
+       }
+       fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+       jQuery.timers.push( timer );
+       if ( timer() ) {
+               jQuery.fx.start();
+       } else {
+               jQuery.timers.pop();
+       }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+       if ( !timerId ) {
+               timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+       }
+};
+
+jQuery.fx.stop = function() {
+       clearInterval( timerId );
+       timerId = null;
+};
+
+jQuery.fx.speeds = {
+       slow: 600,
+       fast: 200,
+       // Default speed
+       _default: 400
+};
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/effects/Tween.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/effects/Tween.js
new file mode 100644 (file)
index 0000000..9acd8d0
--- /dev/null
@@ -0,0 +1,114 @@
+define([
+       "../core",
+       "../css"
+], function( jQuery ) {
+
+function Tween( elem, options, prop, end, easing ) {
+       return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+       constructor: Tween,
+       init: function( elem, options, prop, end, easing, unit ) {
+               this.elem = elem;
+               this.prop = prop;
+               this.easing = easing || "swing";
+               this.options = options;
+               this.start = this.now = this.cur();
+               this.end = end;
+               this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+       },
+       cur: function() {
+               var hooks = Tween.propHooks[ this.prop ];
+
+               return hooks && hooks.get ?
+                       hooks.get( this ) :
+                       Tween.propHooks._default.get( this );
+       },
+       run: function( percent ) {
+               var eased,
+                       hooks = Tween.propHooks[ this.prop ];
+
+               if ( this.options.duration ) {
+                       this.pos = eased = jQuery.easing[ this.easing ](
+                               percent, this.options.duration * percent, 0, 1, this.options.duration
+                       );
+               } else {
+                       this.pos = eased = percent;
+               }
+               this.now = ( this.end - this.start ) * eased + this.start;
+
+               if ( this.options.step ) {
+                       this.options.step.call( this.elem, this.now, this );
+               }
+
+               if ( hooks && hooks.set ) {
+                       hooks.set( this );
+               } else {
+                       Tween.propHooks._default.set( this );
+               }
+               return this;
+       }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+       _default: {
+               get: function( tween ) {
+                       var result;
+
+                       if ( tween.elem[ tween.prop ] != null &&
+                               (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+                               return tween.elem[ tween.prop ];
+                       }
+
+                       // Passing an empty string as a 3rd parameter to .css will automatically
+                       // attempt a parseFloat and fallback to a string if the parse fails.
+                       // Simple values such as "10px" are parsed to Float;
+                       // complex values such as "rotate(1rad)" are returned as-is.
+                       result = jQuery.css( tween.elem, tween.prop, "" );
+                       // Empty strings, null, undefined and "auto" are converted to 0.
+                       return !result || result === "auto" ? 0 : result;
+               },
+               set: function( tween ) {
+                       // Use step hook for back compat.
+                       // Use cssHook if its there.
+                       // Use .style if available and use plain properties where available.
+                       if ( jQuery.fx.step[ tween.prop ] ) {
+                               jQuery.fx.step[ tween.prop ]( tween );
+                       } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+                               jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+                       } else {
+                               tween.elem[ tween.prop ] = tween.now;
+                       }
+               }
+       }
+};
+
+// Support: IE9
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+       set: function( tween ) {
+               if ( tween.elem.nodeType && tween.elem.parentNode ) {
+                       tween.elem[ tween.prop ] = tween.now;
+               }
+       }
+};
+
+jQuery.easing = {
+       linear: function( p ) {
+               return p;
+       },
+       swing: function( p ) {
+               return 0.5 - Math.cos( p * Math.PI ) / 2;
+       }
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/effects/animatedSelector.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/effects/animatedSelector.js
new file mode 100644 (file)
index 0000000..bc5a3d6
--- /dev/null
@@ -0,0 +1,13 @@
+define([
+       "../core",
+       "../selector",
+       "../effects"
+], function( jQuery ) {
+
+jQuery.expr.filters.animated = function( elem ) {
+       return jQuery.grep(jQuery.timers, function( fn ) {
+               return elem === fn.elem;
+       }).length;
+};
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event.js
new file mode 100644 (file)
index 0000000..8f04b89
--- /dev/null
@@ -0,0 +1,868 @@
+define([
+       "./core",
+       "./var/strundefined",
+       "./var/rnotwhite",
+       "./var/hasOwn",
+       "./var/slice",
+       "./event/support",
+       "./data/var/data_priv",
+
+       "./core/init",
+       "./data/accepts",
+       "./selector"
+], function( jQuery, strundefined, rnotwhite, hasOwn, slice, support, data_priv ) {
+
+var
+       rkeyEvent = /^key/,
+       rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
+       rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+       rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+       return true;
+}
+
+function returnFalse() {
+       return false;
+}
+
+function safeActiveElement() {
+       try {
+               return document.activeElement;
+       } catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+       global: {},
+
+       add: function( elem, types, handler, data, selector ) {
+
+               var handleObjIn, eventHandle, tmp,
+                       events, t, handleObj,
+                       special, handlers, type, namespaces, origType,
+                       elemData = data_priv.get( elem );
+
+               // Don't attach events to noData or text/comment nodes (but allow plain objects)
+               if ( !elemData ) {
+                       return;
+               }
+
+               // Caller can pass in an object of custom data in lieu of the handler
+               if ( handler.handler ) {
+                       handleObjIn = handler;
+                       handler = handleObjIn.handler;
+                       selector = handleObjIn.selector;
+               }
+
+               // Make sure that the handler has a unique ID, used to find/remove it later
+               if ( !handler.guid ) {
+                       handler.guid = jQuery.guid++;
+               }
+
+               // Init the element's event structure and main handler, if this is the first
+               if ( !(events = elemData.events) ) {
+                       events = elemData.events = {};
+               }
+               if ( !(eventHandle = elemData.handle) ) {
+                       eventHandle = elemData.handle = function( e ) {
+                               // Discard the second event of a jQuery.event.trigger() and
+                               // when an event is called after a page has unloaded
+                               return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
+                                       jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+                       };
+               }
+
+               // Handle multiple events separated by a space
+               types = ( types || "" ).match( rnotwhite ) || [ "" ];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[t] ) || [];
+                       type = origType = tmp[1];
+                       namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+                       // There *must* be a type, no attaching namespace-only handlers
+                       if ( !type ) {
+                               continue;
+                       }
+
+                       // If event changes its type, use the special event handlers for the changed type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // If selector defined, determine special event api type, otherwise given type
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+
+                       // Update special based on newly reset type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // handleObj is passed to all event handlers
+                       handleObj = jQuery.extend({
+                               type: type,
+                               origType: origType,
+                               data: data,
+                               handler: handler,
+                               guid: handler.guid,
+                               selector: selector,
+                               needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+                               namespace: namespaces.join(".")
+                       }, handleObjIn );
+
+                       // Init the event handler queue if we're the first
+                       if ( !(handlers = events[ type ]) ) {
+                               handlers = events[ type ] = [];
+                               handlers.delegateCount = 0;
+
+                               // Only use addEventListener if the special events handler returns false
+                               if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+                                       if ( elem.addEventListener ) {
+                                               elem.addEventListener( type, eventHandle, false );
+                                       }
+                               }
+                       }
+
+                       if ( special.add ) {
+                               special.add.call( elem, handleObj );
+
+                               if ( !handleObj.handler.guid ) {
+                                       handleObj.handler.guid = handler.guid;
+                               }
+                       }
+
+                       // Add to the element's handler list, delegates in front
+                       if ( selector ) {
+                               handlers.splice( handlers.delegateCount++, 0, handleObj );
+                       } else {
+                               handlers.push( handleObj );
+                       }
+
+                       // Keep track of which events have ever been used, for event optimization
+                       jQuery.event.global[ type ] = true;
+               }
+
+       },
+
+       // Detach an event or set of events from an element
+       remove: function( elem, types, handler, selector, mappedTypes ) {
+
+               var j, origCount, tmp,
+                       events, t, handleObj,
+                       special, handlers, type, namespaces, origType,
+                       elemData = data_priv.hasData( elem ) && data_priv.get( elem );
+
+               if ( !elemData || !(events = elemData.events) ) {
+                       return;
+               }
+
+               // Once for each type.namespace in types; type may be omitted
+               types = ( types || "" ).match( rnotwhite ) || [ "" ];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[t] ) || [];
+                       type = origType = tmp[1];
+                       namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+                       // Unbind all events (on this namespace, if provided) for the element
+                       if ( !type ) {
+                               for ( type in events ) {
+                                       jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+                               }
+                               continue;
+                       }
+
+                       special = jQuery.event.special[ type ] || {};
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+                       handlers = events[ type ] || [];
+                       tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+                       // Remove matching events
+                       origCount = j = handlers.length;
+                       while ( j-- ) {
+                               handleObj = handlers[ j ];
+
+                               if ( ( mappedTypes || origType === handleObj.origType ) &&
+                                       ( !handler || handler.guid === handleObj.guid ) &&
+                                       ( !tmp || tmp.test( handleObj.namespace ) ) &&
+                                       ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+                                       handlers.splice( j, 1 );
+
+                                       if ( handleObj.selector ) {
+                                               handlers.delegateCount--;
+                                       }
+                                       if ( special.remove ) {
+                                               special.remove.call( elem, handleObj );
+                                       }
+                               }
+                       }
+
+                       // Remove generic event handler if we removed something and no more handlers exist
+                       // (avoids potential for endless recursion during removal of special event handlers)
+                       if ( origCount && !handlers.length ) {
+                               if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+                                       jQuery.removeEvent( elem, type, elemData.handle );
+                               }
+
+                               delete events[ type ];
+                       }
+               }
+
+               // Remove the expando if it's no longer used
+               if ( jQuery.isEmptyObject( events ) ) {
+                       delete elemData.handle;
+                       data_priv.remove( elem, "events" );
+               }
+       },
+
+       trigger: function( event, data, elem, onlyHandlers ) {
+
+               var i, cur, tmp, bubbleType, ontype, handle, special,
+                       eventPath = [ elem || document ],
+                       type = hasOwn.call( event, "type" ) ? event.type : event,
+                       namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+               cur = tmp = elem = elem || document;
+
+               // Don't do events on text and comment nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return;
+               }
+
+               // focus/blur morphs to focusin/out; ensure we're not firing them right now
+               if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+                       return;
+               }
+
+               if ( type.indexOf(".") >= 0 ) {
+                       // Namespaced trigger; create a regexp to match event type in handle()
+                       namespaces = type.split(".");
+                       type = namespaces.shift();
+                       namespaces.sort();
+               }
+               ontype = type.indexOf(":") < 0 && "on" + type;
+
+               // Caller can pass in a jQuery.Event object, Object, or just an event type string
+               event = event[ jQuery.expando ] ?
+                       event :
+                       new jQuery.Event( type, typeof event === "object" && event );
+
+               // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+               event.isTrigger = onlyHandlers ? 2 : 3;
+               event.namespace = namespaces.join(".");
+               event.namespace_re = event.namespace ?
+                       new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+                       null;
+
+               // Clean up the event in case it is being reused
+               event.result = undefined;
+               if ( !event.target ) {
+                       event.target = elem;
+               }
+
+               // Clone any incoming data and prepend the event, creating the handler arg list
+               data = data == null ?
+                       [ event ] :
+                       jQuery.makeArray( data, [ event ] );
+
+               // Allow special events to draw outside the lines
+               special = jQuery.event.special[ type ] || {};
+               if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+                       return;
+               }
+
+               // Determine event propagation path in advance, per W3C events spec (#9951)
+               // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+               if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+                       bubbleType = special.delegateType || type;
+                       if ( !rfocusMorph.test( bubbleType + type ) ) {
+                               cur = cur.parentNode;
+                       }
+                       for ( ; cur; cur = cur.parentNode ) {
+                               eventPath.push( cur );
+                               tmp = cur;
+                       }
+
+                       // Only add window if we got to document (e.g., not plain obj or detached DOM)
+                       if ( tmp === (elem.ownerDocument || document) ) {
+                               eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+                       }
+               }
+
+               // Fire handlers on the event path
+               i = 0;
+               while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+                       event.type = i > 1 ?
+                               bubbleType :
+                               special.bindType || type;
+
+                       // jQuery handler
+                       handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
+                       if ( handle ) {
+                               handle.apply( cur, data );
+                       }
+
+                       // Native handler
+                       handle = ontype && cur[ ontype ];
+                       if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
+                               event.result = handle.apply( cur, data );
+                               if ( event.result === false ) {
+                                       event.preventDefault();
+                               }
+                       }
+               }
+               event.type = type;
+
+               // If nobody prevented the default action, do it now
+               if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+                       if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+                               jQuery.acceptData( elem ) ) {
+
+                               // Call a native DOM method on the target with the same name name as the event.
+                               // Don't do default actions on window, that's where global variables be (#6170)
+                               if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+                                       // Don't re-trigger an onFOO event when we call its FOO() method
+                                       tmp = elem[ ontype ];
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = null;
+                                       }
+
+                                       // Prevent re-triggering of the same event, since we already bubbled it above
+                                       jQuery.event.triggered = type;
+                                       elem[ type ]();
+                                       jQuery.event.triggered = undefined;
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = tmp;
+                                       }
+                               }
+                       }
+               }
+
+               return event.result;
+       },
+
+       dispatch: function( event ) {
+
+               // Make a writable jQuery.Event from the native event object
+               event = jQuery.event.fix( event );
+
+               var i, j, ret, matched, handleObj,
+                       handlerQueue = [],
+                       args = slice.call( arguments ),
+                       handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
+                       special = jQuery.event.special[ event.type ] || {};
+
+               // Use the fix-ed jQuery.Event rather than the (read-only) native event
+               args[0] = event;
+               event.delegateTarget = this;
+
+               // Call the preDispatch hook for the mapped type, and let it bail if desired
+               if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+                       return;
+               }
+
+               // Determine handlers
+               handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+               // Run delegates first; they may want to stop propagation beneath us
+               i = 0;
+               while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+                       event.currentTarget = matched.elem;
+
+                       j = 0;
+                       while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+                               // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+                               // a subset or equal to those in the bound event (both can have no namespace).
+                               if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+                                       event.handleObj = handleObj;
+                                       event.data = handleObj.data;
+
+                                       ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+                                                       .apply( matched.elem, args );
+
+                                       if ( ret !== undefined ) {
+                                               if ( (event.result = ret) === false ) {
+                                                       event.preventDefault();
+                                                       event.stopPropagation();
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               // Call the postDispatch hook for the mapped type
+               if ( special.postDispatch ) {
+                       special.postDispatch.call( this, event );
+               }
+
+               return event.result;
+       },
+
+       handlers: function( event, handlers ) {
+               var i, matches, sel, handleObj,
+                       handlerQueue = [],
+                       delegateCount = handlers.delegateCount,
+                       cur = event.target;
+
+               // Find delegate handlers
+               // Black-hole SVG <use> instance trees (#13180)
+               // Avoid non-left-click bubbling in Firefox (#3861)
+               if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+                       for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+                               // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+                               if ( cur.disabled !== true || event.type !== "click" ) {
+                                       matches = [];
+                                       for ( i = 0; i < delegateCount; i++ ) {
+                                               handleObj = handlers[ i ];
+
+                                               // Don't conflict with Object.prototype properties (#13203)
+                                               sel = handleObj.selector + " ";
+
+                                               if ( matches[ sel ] === undefined ) {
+                                                       matches[ sel ] = handleObj.needsContext ?
+                                                               jQuery( sel, this ).index( cur ) >= 0 :
+                                                               jQuery.find( sel, this, null, [ cur ] ).length;
+                                               }
+                                               if ( matches[ sel ] ) {
+                                                       matches.push( handleObj );
+                                               }
+                                       }
+                                       if ( matches.length ) {
+                                               handlerQueue.push({ elem: cur, handlers: matches });
+                                       }
+                               }
+                       }
+               }
+
+               // Add the remaining (directly-bound) handlers
+               if ( delegateCount < handlers.length ) {
+                       handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+               }
+
+               return handlerQueue;
+       },
+
+       // Includes some event props shared by KeyEvent and MouseEvent
+       props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+       fixHooks: {},
+
+       keyHooks: {
+               props: "char charCode key keyCode".split(" "),
+               filter: function( event, original ) {
+
+                       // Add which for key events
+                       if ( event.which == null ) {
+                               event.which = original.charCode != null ? original.charCode : original.keyCode;
+                       }
+
+                       return event;
+               }
+       },
+
+       mouseHooks: {
+               props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+               filter: function( event, original ) {
+                       var eventDoc, doc, body,
+                               button = original.button;
+
+                       // Calculate pageX/Y if missing and clientX/Y available
+                       if ( event.pageX == null && original.clientX != null ) {
+                               eventDoc = event.target.ownerDocument || document;
+                               doc = eventDoc.documentElement;
+                               body = eventDoc.body;
+
+                               event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+                               event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
+                       }
+
+                       // Add which for click: 1 === left; 2 === middle; 3 === right
+                       // Note: button is not normalized, so don't use it
+                       if ( !event.which && button !== undefined ) {
+                               event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+                       }
+
+                       return event;
+               }
+       },
+
+       fix: function( event ) {
+               if ( event[ jQuery.expando ] ) {
+                       return event;
+               }
+
+               // Create a writable copy of the event object and normalize some properties
+               var i, prop, copy,
+                       type = event.type,
+                       originalEvent = event,
+                       fixHook = this.fixHooks[ type ];
+
+               if ( !fixHook ) {
+                       this.fixHooks[ type ] = fixHook =
+                               rmouseEvent.test( type ) ? this.mouseHooks :
+                               rkeyEvent.test( type ) ? this.keyHooks :
+                               {};
+               }
+               copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+               event = new jQuery.Event( originalEvent );
+
+               i = copy.length;
+               while ( i-- ) {
+                       prop = copy[ i ];
+                       event[ prop ] = originalEvent[ prop ];
+               }
+
+               // Support: Cordova 2.5 (WebKit) (#13255)
+               // All events should have a target; Cordova deviceready doesn't
+               if ( !event.target ) {
+                       event.target = document;
+               }
+
+               // Support: Safari 6.0+, Chrome<28
+               // Target should not be a text node (#504, #13143)
+               if ( event.target.nodeType === 3 ) {
+                       event.target = event.target.parentNode;
+               }
+
+               return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+       },
+
+       special: {
+               load: {
+                       // Prevent triggered image.load events from bubbling to window.load
+                       noBubble: true
+               },
+               focus: {
+                       // Fire native event if possible so blur/focus sequence is correct
+                       trigger: function() {
+                               if ( this !== safeActiveElement() && this.focus ) {
+                                       this.focus();
+                                       return false;
+                               }
+                       },
+                       delegateType: "focusin"
+               },
+               blur: {
+                       trigger: function() {
+                               if ( this === safeActiveElement() && this.blur ) {
+                                       this.blur();
+                                       return false;
+                               }
+                       },
+                       delegateType: "focusout"
+               },
+               click: {
+                       // For checkbox, fire native event so checked state will be right
+                       trigger: function() {
+                               if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+                                       this.click();
+                                       return false;
+                               }
+                       },
+
+                       // For cross-browser consistency, don't fire native .click() on links
+                       _default: function( event ) {
+                               return jQuery.nodeName( event.target, "a" );
+                       }
+               },
+
+               beforeunload: {
+                       postDispatch: function( event ) {
+
+                               // Support: Firefox 20+
+                               // Firefox doesn't alert if the returnValue field is not set.
+                               if ( event.result !== undefined && event.originalEvent ) {
+                                       event.originalEvent.returnValue = event.result;
+                               }
+                       }
+               }
+       },
+
+       simulate: function( type, elem, event, bubble ) {
+               // Piggyback on a donor event to simulate a different one.
+               // Fake originalEvent to avoid donor's stopPropagation, but if the
+               // simulated event prevents default then we do the same on the donor.
+               var e = jQuery.extend(
+                       new jQuery.Event(),
+                       event,
+                       {
+                               type: type,
+                               isSimulated: true,
+                               originalEvent: {}
+                       }
+               );
+               if ( bubble ) {
+                       jQuery.event.trigger( e, null, elem );
+               } else {
+                       jQuery.event.dispatch.call( elem, e );
+               }
+               if ( e.isDefaultPrevented() ) {
+                       event.preventDefault();
+               }
+       }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+       if ( elem.removeEventListener ) {
+               elem.removeEventListener( type, handle, false );
+       }
+};
+
+jQuery.Event = function( src, props ) {
+       // Allow instantiation without the 'new' keyword
+       if ( !(this instanceof jQuery.Event) ) {
+               return new jQuery.Event( src, props );
+       }
+
+       // Event object
+       if ( src && src.type ) {
+               this.originalEvent = src;
+               this.type = src.type;
+
+               // Events bubbling up the document may have been marked as prevented
+               // by a handler lower down the tree; reflect the correct value.
+               this.isDefaultPrevented = src.defaultPrevented ||
+                               src.defaultPrevented === undefined &&
+                               // Support: Android<4.0
+                               src.returnValue === false ?
+                       returnTrue :
+                       returnFalse;
+
+       // Event type
+       } else {
+               this.type = src;
+       }
+
+       // Put explicitly provided properties onto the event object
+       if ( props ) {
+               jQuery.extend( this, props );
+       }
+
+       // Create a timestamp if incoming event doesn't have one
+       this.timeStamp = src && src.timeStamp || jQuery.now();
+
+       // Mark it as fixed
+       this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+       isDefaultPrevented: returnFalse,
+       isPropagationStopped: returnFalse,
+       isImmediatePropagationStopped: returnFalse,
+
+       preventDefault: function() {
+               var e = this.originalEvent;
+
+               this.isDefaultPrevented = returnTrue;
+
+               if ( e && e.preventDefault ) {
+                       e.preventDefault();
+               }
+       },
+       stopPropagation: function() {
+               var e = this.originalEvent;
+
+               this.isPropagationStopped = returnTrue;
+
+               if ( e && e.stopPropagation ) {
+                       e.stopPropagation();
+               }
+       },
+       stopImmediatePropagation: function() {
+               var e = this.originalEvent;
+
+               this.isImmediatePropagationStopped = returnTrue;
+
+               if ( e && e.stopImmediatePropagation ) {
+                       e.stopImmediatePropagation();
+               }
+
+               this.stopPropagation();
+       }
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// Support: Chrome 15+
+jQuery.each({
+       mouseenter: "mouseover",
+       mouseleave: "mouseout",
+       pointerenter: "pointerover",
+       pointerleave: "pointerout"
+}, function( orig, fix ) {
+       jQuery.event.special[ orig ] = {
+               delegateType: fix,
+               bindType: fix,
+
+               handle: function( event ) {
+                       var ret,
+                               target = this,
+                               related = event.relatedTarget,
+                               handleObj = event.handleObj;
+
+                       // For mousenter/leave call the handler if related is outside the target.
+                       // NB: No relatedTarget if the mouse left/entered the browser window
+                       if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+                               event.type = handleObj.origType;
+                               ret = handleObj.handler.apply( this, arguments );
+                               event.type = fix;
+                       }
+                       return ret;
+               }
+       };
+});
+
+// Support: Firefox, Chrome, Safari
+// Create "bubbling" focus and blur events
+if ( !support.focusinBubbles ) {
+       jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+               // Attach a single capturing handler on the document while someone wants focusin/focusout
+               var handler = function( event ) {
+                               jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+                       };
+
+               jQuery.event.special[ fix ] = {
+                       setup: function() {
+                               var doc = this.ownerDocument || this,
+                                       attaches = data_priv.access( doc, fix );
+
+                               if ( !attaches ) {
+                                       doc.addEventListener( orig, handler, true );
+                               }
+                               data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
+                       },
+                       teardown: function() {
+                               var doc = this.ownerDocument || this,
+                                       attaches = data_priv.access( doc, fix ) - 1;
+
+                               if ( !attaches ) {
+                                       doc.removeEventListener( orig, handler, true );
+                                       data_priv.remove( doc, fix );
+
+                               } else {
+                                       data_priv.access( doc, fix, attaches );
+                               }
+                       }
+               };
+       });
+}
+
+jQuery.fn.extend({
+
+       on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+               var origFn, type;
+
+               // Types can be a map of types/handlers
+               if ( typeof types === "object" ) {
+                       // ( types-Object, selector, data )
+                       if ( typeof selector !== "string" ) {
+                               // ( types-Object, data )
+                               data = data || selector;
+                               selector = undefined;
+                       }
+                       for ( type in types ) {
+                               this.on( type, selector, data, types[ type ], one );
+                       }
+                       return this;
+               }
+
+               if ( data == null && fn == null ) {
+                       // ( types, fn )
+                       fn = selector;
+                       data = selector = undefined;
+               } else if ( fn == null ) {
+                       if ( typeof selector === "string" ) {
+                               // ( types, selector, fn )
+                               fn = data;
+                               data = undefined;
+                       } else {
+                               // ( types, data, fn )
+                               fn = data;
+                               data = selector;
+                               selector = undefined;
+                       }
+               }
+               if ( fn === false ) {
+                       fn = returnFalse;
+               } else if ( !fn ) {
+                       return this;
+               }
+
+               if ( one === 1 ) {
+                       origFn = fn;
+                       fn = function( event ) {
+                               // Can use an empty set, since event contains the info
+                               jQuery().off( event );
+                               return origFn.apply( this, arguments );
+                       };
+                       // Use same guid so caller can remove using origFn
+                       fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+               }
+               return this.each( function() {
+                       jQuery.event.add( this, types, fn, data, selector );
+               });
+       },
+       one: function( types, selector, data, fn ) {
+               return this.on( types, selector, data, fn, 1 );
+       },
+       off: function( types, selector, fn ) {
+               var handleObj, type;
+               if ( types && types.preventDefault && types.handleObj ) {
+                       // ( event )  dispatched jQuery.Event
+                       handleObj = types.handleObj;
+                       jQuery( types.delegateTarget ).off(
+                               handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+                               handleObj.selector,
+                               handleObj.handler
+                       );
+                       return this;
+               }
+               if ( typeof types === "object" ) {
+                       // ( types-object [, selector] )
+                       for ( type in types ) {
+                               this.off( type, selector, types[ type ] );
+                       }
+                       return this;
+               }
+               if ( selector === false || typeof selector === "function" ) {
+                       // ( types [, fn] )
+                       fn = selector;
+                       selector = undefined;
+               }
+               if ( fn === false ) {
+                       fn = returnFalse;
+               }
+               return this.each(function() {
+                       jQuery.event.remove( this, types, fn, selector );
+               });
+       },
+
+       trigger: function( type, data ) {
+               return this.each(function() {
+                       jQuery.event.trigger( type, data, this );
+               });
+       },
+       triggerHandler: function( type, data ) {
+               var elem = this[0];
+               if ( elem ) {
+                       return jQuery.event.trigger( type, data, elem, true );
+               }
+       }
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event/ajax.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event/ajax.js
new file mode 100644 (file)
index 0000000..278c403
--- /dev/null
@@ -0,0 +1,13 @@
+define([
+       "../core",
+       "../event"
+], function( jQuery ) {
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
+       jQuery.fn[ type ] = function( fn ) {
+               return this.on( type, fn );
+       };
+});
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event/alias.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event/alias.js
new file mode 100644 (file)
index 0000000..7e79175
--- /dev/null
@@ -0,0 +1,39 @@
+define([
+       "../core",
+       "../event"
+], function( jQuery ) {
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+       "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+       "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+       // Handle event binding
+       jQuery.fn[ name ] = function( data, fn ) {
+               return arguments.length > 0 ?
+                       this.on( name, null, data, fn ) :
+                       this.trigger( name );
+       };
+});
+
+jQuery.fn.extend({
+       hover: function( fnOver, fnOut ) {
+               return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+       },
+
+       bind: function( types, data, fn ) {
+               return this.on( types, null, data, fn );
+       },
+       unbind: function( types, fn ) {
+               return this.off( types, null, fn );
+       },
+
+       delegate: function( selector, types, data, fn ) {
+               return this.on( types, selector, data, fn );
+       },
+       undelegate: function( selector, types, fn ) {
+               // ( namespace ) or ( selector, types [, fn] )
+               return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+       }
+});
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event/support.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/event/support.js
new file mode 100644 (file)
index 0000000..85060db
--- /dev/null
@@ -0,0 +1,9 @@
+define([
+       "../var/support"
+], function( support ) {
+
+support.focusinBubbles = "onfocusin" in window;
+
+return support;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/exports/amd.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/exports/amd.js
new file mode 100644 (file)
index 0000000..9a9846f
--- /dev/null
@@ -0,0 +1,24 @@
+define([
+       "../core"
+], function( jQuery ) {
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+       define( "jquery", [], function() {
+               return jQuery;
+       });
+}
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/exports/global.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/exports/global.js
new file mode 100644 (file)
index 0000000..6513287
--- /dev/null
@@ -0,0 +1,32 @@
+define([
+       "../core",
+       "../var/strundefined"
+], function( jQuery, strundefined ) {
+
+var
+       // Map over jQuery in case of overwrite
+       _jQuery = window.jQuery,
+
+       // Map over the $ in case of overwrite
+       _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+       if ( window.$ === jQuery ) {
+               window.$ = _$;
+       }
+
+       if ( deep && window.jQuery === jQuery ) {
+               window.jQuery = _jQuery;
+       }
+
+       return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( typeof noGlobal === strundefined ) {
+       window.jQuery = window.$ = jQuery;
+}
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/intro.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/intro.js
new file mode 100644 (file)
index 0000000..d7d4368
--- /dev/null
@@ -0,0 +1,44 @@
+/*!
+ * jQuery JavaScript Library v@VERSION
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: @DATE
+ */
+
+(function( global, factory ) {
+
+       if ( typeof module === "object" && typeof module.exports === "object" ) {
+               // For CommonJS and CommonJS-like environments where a proper `window`
+               // is present, execute the factory and get jQuery.
+               // For environments that do not have a `window` with a `document`
+               // (such as Node.js), expose a factory as module.exports.
+               // This accentuates the need for the creation of a real `window`.
+               // e.g. var jQuery = require("jquery")(window);
+               // See ticket #14549 for more info.
+               module.exports = global.document ?
+                       factory( global, true ) :
+                       function( w ) {
+                               if ( !w.document ) {
+                                       throw new Error( "jQuery requires a window with a document" );
+                               }
+                               return factory( w );
+                       };
+       } else {
+               factory( global );
+       }
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Support: Firefox 18+
+// Can't be in strict mode, several libs including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+//"use strict";
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/jquery.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/jquery.js
new file mode 100644 (file)
index 0000000..d3857e9
--- /dev/null
@@ -0,0 +1,37 @@
+define([
+       "./core",
+       "./selector",
+       "./traversing",
+       "./callbacks",
+       "./deferred",
+       "./core/ready",
+       "./data",
+       "./queue",
+       "./queue/delay",
+       "./attributes",
+       "./event",
+       "./event/alias",
+       "./manipulation",
+       "./manipulation/_evalUrl",
+       "./wrap",
+       "./css",
+       "./css/hiddenVisibleSelectors",
+       "./serialize",
+       "./ajax",
+       "./ajax/xhr",
+       "./ajax/script",
+       "./ajax/jsonp",
+       "./ajax/load",
+       "./event/ajax",
+       "./effects",
+       "./effects/animatedSelector",
+       "./offset",
+       "./dimensions",
+       "./deprecated",
+       "./exports/amd",
+       "./exports/global"
+], function( jQuery ) {
+
+return jQuery;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation.js
new file mode 100644 (file)
index 0000000..c627962
--- /dev/null
@@ -0,0 +1,580 @@
+define([
+       "./core",
+       "./var/concat",
+       "./var/push",
+       "./core/access",
+       "./manipulation/var/rcheckableType",
+       "./manipulation/support",
+       "./data/var/data_priv",
+       "./data/var/data_user",
+
+       "./core/init",
+       "./data/accepts",
+       "./traversing",
+       "./selector",
+       "./event"
+], function( jQuery, concat, push, access, rcheckableType, support, data_priv, data_user ) {
+
+var
+       rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+       rtagName = /<([\w:]+)/,
+       rhtml = /<|&#?\w+;/,
+       rnoInnerhtml = /<(?:script|style|link)/i,
+       // checked="checked" or checked
+       rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+       rscriptType = /^$|\/(?:java|ecma)script/i,
+       rscriptTypeMasked = /^true\/(.*)/,
+       rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+       // We have to close these tags to support XHTML (#13200)
+       wrapMap = {
+
+               // Support: IE9
+               option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+               thead: [ 1, "<table>", "</table>" ],
+               col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+               tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+               td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+               _default: [ 0, "", "" ]
+       };
+
+// Support: IE9
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// Support: 1.x compatibility
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+       return jQuery.nodeName( elem, "table" ) &&
+               jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
+
+               elem.getElementsByTagName("tbody")[0] ||
+                       elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+               elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+       elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
+       return elem;
+}
+function restoreScript( elem ) {
+       var match = rscriptTypeMasked.exec( elem.type );
+
+       if ( match ) {
+               elem.type = match[ 1 ];
+       } else {
+               elem.removeAttribute("type");
+       }
+
+       return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+       var i = 0,
+               l = elems.length;
+
+       for ( ; i < l; i++ ) {
+               data_priv.set(
+                       elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
+               );
+       }
+}
+
+function cloneCopyEvent( src, dest ) {
+       var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+       if ( dest.nodeType !== 1 ) {
+               return;
+       }
+
+       // 1. Copy private data: events, handlers, etc.
+       if ( data_priv.hasData( src ) ) {
+               pdataOld = data_priv.access( src );
+               pdataCur = data_priv.set( dest, pdataOld );
+               events = pdataOld.events;
+
+               if ( events ) {
+                       delete pdataCur.handle;
+                       pdataCur.events = {};
+
+                       for ( type in events ) {
+                               for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+                                       jQuery.event.add( dest, type, events[ type ][ i ] );
+                               }
+                       }
+               }
+       }
+
+       // 2. Copy user data
+       if ( data_user.hasData( src ) ) {
+               udataOld = data_user.access( src );
+               udataCur = jQuery.extend( {}, udataOld );
+
+               data_user.set( dest, udataCur );
+       }
+}
+
+function getAll( context, tag ) {
+       var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
+                       context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
+                       [];
+
+       return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+               jQuery.merge( [ context ], ret ) :
+               ret;
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+       var nodeName = dest.nodeName.toLowerCase();
+
+       // Fails to persist the checked state of a cloned checkbox or radio button.
+       if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+               dest.checked = src.checked;
+
+       // Fails to return the selected option to the default selected state when cloning options
+       } else if ( nodeName === "input" || nodeName === "textarea" ) {
+               dest.defaultValue = src.defaultValue;
+       }
+}
+
+jQuery.extend({
+       clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+               var i, l, srcElements, destElements,
+                       clone = elem.cloneNode( true ),
+                       inPage = jQuery.contains( elem.ownerDocument, elem );
+
+               // Fix IE cloning issues
+               if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+                               !jQuery.isXMLDoc( elem ) ) {
+
+                       // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+                       destElements = getAll( clone );
+                       srcElements = getAll( elem );
+
+                       for ( i = 0, l = srcElements.length; i < l; i++ ) {
+                               fixInput( srcElements[ i ], destElements[ i ] );
+                       }
+               }
+
+               // Copy the events from the original to the clone
+               if ( dataAndEvents ) {
+                       if ( deepDataAndEvents ) {
+                               srcElements = srcElements || getAll( elem );
+                               destElements = destElements || getAll( clone );
+
+                               for ( i = 0, l = srcElements.length; i < l; i++ ) {
+                                       cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+                               }
+                       } else {
+                               cloneCopyEvent( elem, clone );
+                       }
+               }
+
+               // Preserve script evaluation history
+               destElements = getAll( clone, "script" );
+               if ( destElements.length > 0 ) {
+                       setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+               }
+
+               // Return the cloned set
+               return clone;
+       },
+
+       buildFragment: function( elems, context, scripts, selection ) {
+               var elem, tmp, tag, wrap, contains, j,
+                       fragment = context.createDocumentFragment(),
+                       nodes = [],
+                       i = 0,
+                       l = elems.length;
+
+               for ( ; i < l; i++ ) {
+                       elem = elems[ i ];
+
+                       if ( elem || elem === 0 ) {
+
+                               // Add nodes directly
+                               if ( jQuery.type( elem ) === "object" ) {
+                                       // Support: QtWebKit, PhantomJS
+                                       // push.apply(_, arraylike) throws on ancient WebKit
+                                       jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+                               // Convert non-html into a text node
+                               } else if ( !rhtml.test( elem ) ) {
+                                       nodes.push( context.createTextNode( elem ) );
+
+                               // Convert html into DOM nodes
+                               } else {
+                                       tmp = tmp || fragment.appendChild( context.createElement("div") );
+
+                                       // Deserialize a standard representation
+                                       tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+                                       wrap = wrapMap[ tag ] || wrapMap._default;
+                                       tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
+
+                                       // Descend through wrappers to the right content
+                                       j = wrap[ 0 ];
+                                       while ( j-- ) {
+                                               tmp = tmp.lastChild;
+                                       }
+
+                                       // Support: QtWebKit, PhantomJS
+                                       // push.apply(_, arraylike) throws on ancient WebKit
+                                       jQuery.merge( nodes, tmp.childNodes );
+
+                                       // Remember the top-level container
+                                       tmp = fragment.firstChild;
+
+                                       // Ensure the created nodes are orphaned (#12392)
+                                       tmp.textContent = "";
+                               }
+                       }
+               }
+
+               // Remove wrapper from fragment
+               fragment.textContent = "";
+
+               i = 0;
+               while ( (elem = nodes[ i++ ]) ) {
+
+                       // #4087 - If origin and destination elements are the same, and this is
+                       // that element, do not do anything
+                       if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+                               continue;
+                       }
+
+                       contains = jQuery.contains( elem.ownerDocument, elem );
+
+                       // Append to fragment
+                       tmp = getAll( fragment.appendChild( elem ), "script" );
+
+                       // Preserve script evaluation history
+                       if ( contains ) {
+                               setGlobalEval( tmp );
+                       }
+
+                       // Capture executables
+                       if ( scripts ) {
+                               j = 0;
+                               while ( (elem = tmp[ j++ ]) ) {
+                                       if ( rscriptType.test( elem.type || "" ) ) {
+                                               scripts.push( elem );
+                                       }
+                               }
+                       }
+               }
+
+               return fragment;
+       },
+
+       cleanData: function( elems ) {
+               var data, elem, type, key,
+                       special = jQuery.event.special,
+                       i = 0;
+
+               for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
+                       if ( jQuery.acceptData( elem ) ) {
+                               key = elem[ data_priv.expando ];
+
+                               if ( key && (data = data_priv.cache[ key ]) ) {
+                                       if ( data.events ) {
+                                               for ( type in data.events ) {
+                                                       if ( special[ type ] ) {
+                                                               jQuery.event.remove( elem, type );
+
+                                                       // This is a shortcut to avoid jQuery.event.remove's overhead
+                                                       } else {
+                                                               jQuery.removeEvent( elem, type, data.handle );
+                                                       }
+                                               }
+                                       }
+                                       if ( data_priv.cache[ key ] ) {
+                                               // Discard any remaining `private` data
+                                               delete data_priv.cache[ key ];
+                                       }
+                               }
+                       }
+                       // Discard any remaining `user` data
+                       delete data_user.cache[ elem[ data_user.expando ] ];
+               }
+       }
+});
+
+jQuery.fn.extend({
+       text: function( value ) {
+               return access( this, function( value ) {
+                       return value === undefined ?
+                               jQuery.text( this ) :
+                               this.empty().each(function() {
+                                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                                               this.textContent = value;
+                                       }
+                               });
+               }, null, value, arguments.length );
+       },
+
+       append: function() {
+               return this.domManip( arguments, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               var target = manipulationTarget( this, elem );
+                               target.appendChild( elem );
+                       }
+               });
+       },
+
+       prepend: function() {
+               return this.domManip( arguments, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               var target = manipulationTarget( this, elem );
+                               target.insertBefore( elem, target.firstChild );
+                       }
+               });
+       },
+
+       before: function() {
+               return this.domManip( arguments, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this );
+                       }
+               });
+       },
+
+       after: function() {
+               return this.domManip( arguments, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this.nextSibling );
+                       }
+               });
+       },
+
+       remove: function( selector, keepData /* Internal Use Only */ ) {
+               var elem,
+                       elems = selector ? jQuery.filter( selector, this ) : this,
+                       i = 0;
+
+               for ( ; (elem = elems[i]) != null; i++ ) {
+                       if ( !keepData && elem.nodeType === 1 ) {
+                               jQuery.cleanData( getAll( elem ) );
+                       }
+
+                       if ( elem.parentNode ) {
+                               if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+                                       setGlobalEval( getAll( elem, "script" ) );
+                               }
+                               elem.parentNode.removeChild( elem );
+                       }
+               }
+
+               return this;
+       },
+
+       empty: function() {
+               var elem,
+                       i = 0;
+
+               for ( ; (elem = this[i]) != null; i++ ) {
+                       if ( elem.nodeType === 1 ) {
+
+                               // Prevent memory leaks
+                               jQuery.cleanData( getAll( elem, false ) );
+
+                               // Remove any remaining nodes
+                               elem.textContent = "";
+                       }
+               }
+
+               return this;
+       },
+
+       clone: function( dataAndEvents, deepDataAndEvents ) {
+               dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+               deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+               return this.map(function() {
+                       return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+               });
+       },
+
+       html: function( value ) {
+               return access( this, function( value ) {
+                       var elem = this[ 0 ] || {},
+                               i = 0,
+                               l = this.length;
+
+                       if ( value === undefined && elem.nodeType === 1 ) {
+                               return elem.innerHTML;
+                       }
+
+                       // See if we can take a shortcut and just use innerHTML
+                       if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+                               !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+                               value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+                               try {
+                                       for ( ; i < l; i++ ) {
+                                               elem = this[ i ] || {};
+
+                                               // Remove element nodes and prevent memory leaks
+                                               if ( elem.nodeType === 1 ) {
+                                                       jQuery.cleanData( getAll( elem, false ) );
+                                                       elem.innerHTML = value;
+                                               }
+                                       }
+
+                                       elem = 0;
+
+                               // If using innerHTML throws an exception, use the fallback method
+                               } catch( e ) {}
+                       }
+
+                       if ( elem ) {
+                               this.empty().append( value );
+                       }
+               }, null, value, arguments.length );
+       },
+
+       replaceWith: function() {
+               var arg = arguments[ 0 ];
+
+               // Make the changes, replacing each context element with the new content
+               this.domManip( arguments, function( elem ) {
+                       arg = this.parentNode;
+
+                       jQuery.cleanData( getAll( this ) );
+
+                       if ( arg ) {
+                               arg.replaceChild( elem, this );
+                       }
+               });
+
+               // Force removal if there was no new content (e.g., from empty arguments)
+               return arg && (arg.length || arg.nodeType) ? this : this.remove();
+       },
+
+       detach: function( selector ) {
+               return this.remove( selector, true );
+       },
+
+       domManip: function( args, callback ) {
+
+               // Flatten any nested arrays
+               args = concat.apply( [], args );
+
+               var fragment, first, scripts, hasScripts, node, doc,
+                       i = 0,
+                       l = this.length,
+                       set = this,
+                       iNoClone = l - 1,
+                       value = args[ 0 ],
+                       isFunction = jQuery.isFunction( value );
+
+               // We can't cloneNode fragments that contain checked, in WebKit
+               if ( isFunction ||
+                               ( l > 1 && typeof value === "string" &&
+                                       !support.checkClone && rchecked.test( value ) ) ) {
+                       return this.each(function( index ) {
+                               var self = set.eq( index );
+                               if ( isFunction ) {
+                                       args[ 0 ] = value.call( this, index, self.html() );
+                               }
+                               self.domManip( args, callback );
+                       });
+               }
+
+               if ( l ) {
+                       fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
+                       first = fragment.firstChild;
+
+                       if ( fragment.childNodes.length === 1 ) {
+                               fragment = first;
+                       }
+
+                       if ( first ) {
+                               scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+                               hasScripts = scripts.length;
+
+                               // Use the original fragment for the last item instead of the first because it can end up
+                               // being emptied incorrectly in certain situations (#8070).
+                               for ( ; i < l; i++ ) {
+                                       node = fragment;
+
+                                       if ( i !== iNoClone ) {
+                                               node = jQuery.clone( node, true, true );
+
+                                               // Keep references to cloned scripts for later restoration
+                                               if ( hasScripts ) {
+                                                       // Support: QtWebKit
+                                                       // jQuery.merge because push.apply(_, arraylike) throws
+                                                       jQuery.merge( scripts, getAll( node, "script" ) );
+                                               }
+                                       }
+
+                                       callback.call( this[ i ], node, i );
+                               }
+
+                               if ( hasScripts ) {
+                                       doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+                                       // Reenable scripts
+                                       jQuery.map( scripts, restoreScript );
+
+                                       // Evaluate executable scripts on first document insertion
+                                       for ( i = 0; i < hasScripts; i++ ) {
+                                               node = scripts[ i ];
+                                               if ( rscriptType.test( node.type || "" ) &&
+                                                       !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+                                                       if ( node.src ) {
+                                                               // Optional AJAX dependency, but won't run scripts if not present
+                                                               if ( jQuery._evalUrl ) {
+                                                                       jQuery._evalUrl( node.src );
+                                                               }
+                                                       } else {
+                                                               jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       }
+});
+
+jQuery.each({
+       appendTo: "append",
+       prependTo: "prepend",
+       insertBefore: "before",
+       insertAfter: "after",
+       replaceAll: "replaceWith"
+}, function( name, original ) {
+       jQuery.fn[ name ] = function( selector ) {
+               var elems,
+                       ret = [],
+                       insert = jQuery( selector ),
+                       last = insert.length - 1,
+                       i = 0;
+
+               for ( ; i <= last; i++ ) {
+                       elems = i === last ? this : this.clone( true );
+                       jQuery( insert[ i ] )[ original ]( elems );
+
+                       // Support: QtWebKit
+                       // .get() because push.apply(_, arraylike) throws
+                       push.apply( ret, elems.get() );
+               }
+
+               return this.pushStack( ret );
+       };
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation/_evalUrl.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation/_evalUrl.js
new file mode 100644 (file)
index 0000000..6704749
--- /dev/null
@@ -0,0 +1,18 @@
+define([
+       "../ajax"
+], function( jQuery ) {
+
+jQuery._evalUrl = function( url ) {
+       return jQuery.ajax({
+               url: url,
+               type: "GET",
+               dataType: "script",
+               async: false,
+               global: false,
+               "throws": true
+       });
+};
+
+return jQuery._evalUrl;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation/support.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation/support.js
new file mode 100644 (file)
index 0000000..822a014
--- /dev/null
@@ -0,0 +1,32 @@
+define([
+       "../var/support"
+], function( support ) {
+
+(function() {
+       var fragment = document.createDocumentFragment(),
+               div = fragment.appendChild( document.createElement( "div" ) ),
+               input = document.createElement( "input" );
+
+       // Support: Safari<=5.1
+       // Check state lost if the name is set (#11217)
+       // Support: Windows Web Apps (WWA)
+       // `name` and `type` must use .setAttribute for WWA (#14901)
+       input.setAttribute( "type", "radio" );
+       input.setAttribute( "checked", "checked" );
+       input.setAttribute( "name", "t" );
+
+       div.appendChild( input );
+
+       // Support: Safari<=5.1, Android<4.2
+       // Older WebKit doesn't clone checked state correctly in fragments
+       support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+       // Support: IE<=11+
+       // Make sure textarea (and checkbox) defaultValue is properly cloned
+       div.innerHTML = "<textarea>x</textarea>";
+       support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+})();
+
+return support;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation/var/rcheckableType.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/manipulation/var/rcheckableType.js
new file mode 100644 (file)
index 0000000..c27a15d
--- /dev/null
@@ -0,0 +1,3 @@
+define(function() {
+       return (/^(?:checkbox|radio)$/i);
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/offset.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/offset.js
new file mode 100644 (file)
index 0000000..4c34fd0
--- /dev/null
@@ -0,0 +1,207 @@
+define([
+       "./core",
+       "./var/strundefined",
+       "./core/access",
+       "./css/var/rnumnonpx",
+       "./css/curCSS",
+       "./css/addGetHookIf",
+       "./css/support",
+
+       "./core/init",
+       "./css",
+       "./selector" // contains
+], function( jQuery, strundefined, access, rnumnonpx, curCSS, addGetHookIf, support ) {
+
+var docElem = window.document.documentElement;
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+       return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+       setOffset: function( elem, options, i ) {
+               var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+                       position = jQuery.css( elem, "position" ),
+                       curElem = jQuery( elem ),
+                       props = {};
+
+               // Set position first, in-case top/left are set even on static elem
+               if ( position === "static" ) {
+                       elem.style.position = "relative";
+               }
+
+               curOffset = curElem.offset();
+               curCSSTop = jQuery.css( elem, "top" );
+               curCSSLeft = jQuery.css( elem, "left" );
+               calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+                       ( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
+
+               // Need to be able to calculate position if either
+               // top or left is auto and position is either absolute or fixed
+               if ( calculatePosition ) {
+                       curPosition = curElem.position();
+                       curTop = curPosition.top;
+                       curLeft = curPosition.left;
+
+               } else {
+                       curTop = parseFloat( curCSSTop ) || 0;
+                       curLeft = parseFloat( curCSSLeft ) || 0;
+               }
+
+               if ( jQuery.isFunction( options ) ) {
+                       options = options.call( elem, i, curOffset );
+               }
+
+               if ( options.top != null ) {
+                       props.top = ( options.top - curOffset.top ) + curTop;
+               }
+               if ( options.left != null ) {
+                       props.left = ( options.left - curOffset.left ) + curLeft;
+               }
+
+               if ( "using" in options ) {
+                       options.using.call( elem, props );
+
+               } else {
+                       curElem.css( props );
+               }
+       }
+};
+
+jQuery.fn.extend({
+       offset: function( options ) {
+               if ( arguments.length ) {
+                       return options === undefined ?
+                               this :
+                               this.each(function( i ) {
+                                       jQuery.offset.setOffset( this, options, i );
+                               });
+               }
+
+               var docElem, win,
+                       elem = this[ 0 ],
+                       box = { top: 0, left: 0 },
+                       doc = elem && elem.ownerDocument;
+
+               if ( !doc ) {
+                       return;
+               }
+
+               docElem = doc.documentElement;
+
+               // Make sure it's not a disconnected DOM node
+               if ( !jQuery.contains( docElem, elem ) ) {
+                       return box;
+               }
+
+               // Support: BlackBerry 5, iOS 3 (original iPhone)
+               // If we don't have gBCR, just use 0,0 rather than error
+               if ( typeof elem.getBoundingClientRect !== strundefined ) {
+                       box = elem.getBoundingClientRect();
+               }
+               win = getWindow( doc );
+               return {
+                       top: box.top + win.pageYOffset - docElem.clientTop,
+                       left: box.left + win.pageXOffset - docElem.clientLeft
+               };
+       },
+
+       position: function() {
+               if ( !this[ 0 ] ) {
+                       return;
+               }
+
+               var offsetParent, offset,
+                       elem = this[ 0 ],
+                       parentOffset = { top: 0, left: 0 };
+
+               // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
+               if ( jQuery.css( elem, "position" ) === "fixed" ) {
+                       // Assume getBoundingClientRect is there when computed position is fixed
+                       offset = elem.getBoundingClientRect();
+
+               } else {
+                       // Get *real* offsetParent
+                       offsetParent = this.offsetParent();
+
+                       // Get correct offsets
+                       offset = this.offset();
+                       if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+                               parentOffset = offsetParent.offset();
+                       }
+
+                       // Add offsetParent borders
+                       parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+                       parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+               }
+
+               // Subtract parent offsets and element margins
+               return {
+                       top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+                       left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+               };
+       },
+
+       offsetParent: function() {
+               return this.map(function() {
+                       var offsetParent = this.offsetParent || docElem;
+
+                       while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
+                               offsetParent = offsetParent.offsetParent;
+                       }
+
+                       return offsetParent || docElem;
+               });
+       }
+});
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+       var top = "pageYOffset" === prop;
+
+       jQuery.fn[ method ] = function( val ) {
+               return access( this, function( elem, method, val ) {
+                       var win = getWindow( elem );
+
+                       if ( val === undefined ) {
+                               return win ? win[ prop ] : elem[ method ];
+                       }
+
+                       if ( win ) {
+                               win.scrollTo(
+                                       !top ? val : window.pageXOffset,
+                                       top ? val : window.pageYOffset
+                               );
+
+                       } else {
+                               elem[ method ] = val;
+                       }
+               }, method, val, arguments.length, null );
+       };
+});
+
+// Support: Safari<7+, Chrome<37+
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+       jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+               function( elem, computed ) {
+                       if ( computed ) {
+                               computed = curCSS( elem, prop );
+                               // If curCSS returns percentage, fallback to offset
+                               return rnumnonpx.test( computed ) ?
+                                       jQuery( elem ).position()[ prop ] + "px" :
+                                       computed;
+                       }
+               }
+       );
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/outro.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/outro.js
new file mode 100644 (file)
index 0000000..be4600a
--- /dev/null
@@ -0,0 +1 @@
+}));
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/queue.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/queue.js
new file mode 100644 (file)
index 0000000..199c56d
--- /dev/null
@@ -0,0 +1,142 @@
+define([
+       "./core",
+       "./data/var/data_priv",
+       "./deferred",
+       "./callbacks"
+], function( jQuery, data_priv ) {
+
+jQuery.extend({
+       queue: function( elem, type, data ) {
+               var queue;
+
+               if ( elem ) {
+                       type = ( type || "fx" ) + "queue";
+                       queue = data_priv.get( elem, type );
+
+                       // Speed up dequeue by getting out quickly if this is just a lookup
+                       if ( data ) {
+                               if ( !queue || jQuery.isArray( data ) ) {
+                                       queue = data_priv.access( elem, type, jQuery.makeArray(data) );
+                               } else {
+                                       queue.push( data );
+                               }
+                       }
+                       return queue || [];
+               }
+       },
+
+       dequeue: function( elem, type ) {
+               type = type || "fx";
+
+               var queue = jQuery.queue( elem, type ),
+                       startLength = queue.length,
+                       fn = queue.shift(),
+                       hooks = jQuery._queueHooks( elem, type ),
+                       next = function() {
+                               jQuery.dequeue( elem, type );
+                       };
+
+               // If the fx queue is dequeued, always remove the progress sentinel
+               if ( fn === "inprogress" ) {
+                       fn = queue.shift();
+                       startLength--;
+               }
+
+               if ( fn ) {
+
+                       // Add a progress sentinel to prevent the fx queue from being
+                       // automatically dequeued
+                       if ( type === "fx" ) {
+                               queue.unshift( "inprogress" );
+                       }
+
+                       // Clear up the last queue stop function
+                       delete hooks.stop;
+                       fn.call( elem, next, hooks );
+               }
+
+               if ( !startLength && hooks ) {
+                       hooks.empty.fire();
+               }
+       },
+
+       // Not public - generate a queueHooks object, or return the current one
+       _queueHooks: function( elem, type ) {
+               var key = type + "queueHooks";
+               return data_priv.get( elem, key ) || data_priv.access( elem, key, {
+                       empty: jQuery.Callbacks("once memory").add(function() {
+                               data_priv.remove( elem, [ type + "queue", key ] );
+                       })
+               });
+       }
+});
+
+jQuery.fn.extend({
+       queue: function( type, data ) {
+               var setter = 2;
+
+               if ( typeof type !== "string" ) {
+                       data = type;
+                       type = "fx";
+                       setter--;
+               }
+
+               if ( arguments.length < setter ) {
+                       return jQuery.queue( this[0], type );
+               }
+
+               return data === undefined ?
+                       this :
+                       this.each(function() {
+                               var queue = jQuery.queue( this, type, data );
+
+                               // Ensure a hooks for this queue
+                               jQuery._queueHooks( this, type );
+
+                               if ( type === "fx" && queue[0] !== "inprogress" ) {
+                                       jQuery.dequeue( this, type );
+                               }
+                       });
+       },
+       dequeue: function( type ) {
+               return this.each(function() {
+                       jQuery.dequeue( this, type );
+               });
+       },
+       clearQueue: function( type ) {
+               return this.queue( type || "fx", [] );
+       },
+       // Get a promise resolved when queues of a certain type
+       // are emptied (fx is the type by default)
+       promise: function( type, obj ) {
+               var tmp,
+                       count = 1,
+                       defer = jQuery.Deferred(),
+                       elements = this,
+                       i = this.length,
+                       resolve = function() {
+                               if ( !( --count ) ) {
+                                       defer.resolveWith( elements, [ elements ] );
+                               }
+                       };
+
+               if ( typeof type !== "string" ) {
+                       obj = type;
+                       type = undefined;
+               }
+               type = type || "fx";
+
+               while ( i-- ) {
+                       tmp = data_priv.get( elements[ i ], type + "queueHooks" );
+                       if ( tmp && tmp.empty ) {
+                               count++;
+                               tmp.empty.add( resolve );
+                       }
+               }
+               resolve();
+               return defer.promise( obj );
+       }
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/queue/delay.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/queue/delay.js
new file mode 100644 (file)
index 0000000..4b4498c
--- /dev/null
@@ -0,0 +1,22 @@
+define([
+       "../core",
+       "../queue",
+       "../effects" // Delay is optional because of this dependency
+], function( jQuery ) {
+
+// Based off of the plugin by Clint Helfers, with permission.
+// http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+       time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+       type = type || "fx";
+
+       return this.queue( type, function( next, hooks ) {
+               var timeout = setTimeout( next, time );
+               hooks.stop = function() {
+                       clearTimeout( timeout );
+               };
+       });
+};
+
+return jQuery.fn.delay;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/selector-native.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/selector-native.js
new file mode 100644 (file)
index 0000000..d8163c2
--- /dev/null
@@ -0,0 +1,172 @@
+define([
+       "./core"
+], function( jQuery ) {
+
+/*
+ * Optional (non-Sizzle) selector module for custom builds.
+ *
+ * Note that this DOES NOT SUPPORT many documented jQuery
+ * features in exchange for its smaller size:
+ *
+ * Attribute not equal selector
+ * Positional selectors (:first; :eq(n); :odd; etc.)
+ * Type selectors (:input; :checkbox; :button; etc.)
+ * State-based selectors (:animated; :visible; :hidden; etc.)
+ * :has(selector)
+ * :not(complex selector)
+ * custom selectors via Sizzle extensions
+ * Leading combinators (e.g., $collection.find("> *"))
+ * Reliable functionality on XML fragments
+ * Requiring all parts of a selector to match elements under context
+ *   (e.g., $div.find("div > *") now matches children of $div)
+ * Matching against non-elements
+ * Reliable sorting of disconnected nodes
+ * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
+ *
+ * If any of these are unacceptable tradeoffs, either use Sizzle or
+ * customize this stub for the project's specific needs.
+ */
+
+var docElem = window.document.documentElement,
+       selector_hasDuplicate,
+       matches = docElem.matches ||
+               docElem.webkitMatchesSelector ||
+               docElem.mozMatchesSelector ||
+               docElem.oMatchesSelector ||
+               docElem.msMatchesSelector,
+       selector_sortOrder = function( a, b ) {
+               // Flag for duplicate removal
+               if ( a === b ) {
+                       selector_hasDuplicate = true;
+                       return 0;
+               }
+
+               var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
+
+               if ( compare ) {
+                       // Disconnected nodes
+                       if ( compare & 1 ) {
+
+                               // Choose the first element that is related to our document
+                               if ( a === document || jQuery.contains(document, a) ) {
+                                       return -1;
+                               }
+                               if ( b === document || jQuery.contains(document, b) ) {
+                                       return 1;
+                               }
+
+                               // Maintain original order
+                               return 0;
+                       }
+
+                       return compare & 4 ? -1 : 1;
+               }
+
+               // Not directly comparable, sort on existence of method
+               return a.compareDocumentPosition ? -1 : 1;
+       };
+
+jQuery.extend({
+       find: function( selector, context, results, seed ) {
+               var elem, nodeType,
+                       i = 0;
+
+               results = results || [];
+               context = context || document;
+
+               // Same basic safeguard as Sizzle
+               if ( !selector || typeof selector !== "string" ) {
+                       return results;
+               }
+
+               // Early return if context is not an element or document
+               if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+                       return [];
+               }
+
+               if ( seed ) {
+                       while ( (elem = seed[i++]) ) {
+                               if ( jQuery.find.matchesSelector(elem, selector) ) {
+                                       results.push( elem );
+                               }
+                       }
+               } else {
+                       jQuery.merge( results, context.querySelectorAll(selector) );
+               }
+
+               return results;
+       },
+       unique: function( results ) {
+               var elem,
+                       duplicates = [],
+                       i = 0,
+                       j = 0;
+
+               selector_hasDuplicate = false;
+               results.sort( selector_sortOrder );
+
+               if ( selector_hasDuplicate ) {
+                       while ( (elem = results[i++]) ) {
+                               if ( elem === results[ i ] ) {
+                                       j = duplicates.push( i );
+                               }
+                       }
+                       while ( j-- ) {
+                               results.splice( duplicates[ j ], 1 );
+                       }
+               }
+
+               return results;
+       },
+       text: function( elem ) {
+               var node,
+                       ret = "",
+                       i = 0,
+                       nodeType = elem.nodeType;
+
+               if ( !nodeType ) {
+                       // If no nodeType, this is expected to be an array
+                       while ( (node = elem[i++]) ) {
+                               // Do not traverse comment nodes
+                               ret += jQuery.text( node );
+                       }
+               } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+                       // Use textContent for elements
+                       return elem.textContent;
+               } else if ( nodeType === 3 || nodeType === 4 ) {
+                       return elem.nodeValue;
+               }
+               // Do not include comment or processing instruction nodes
+
+               return ret;
+       },
+       contains: function( a, b ) {
+               var adown = a.nodeType === 9 ? a.documentElement : a,
+                       bup = b && b.parentNode;
+               return a === bup || !!( bup && bup.nodeType === 1 && adown.contains(bup) );
+       },
+       isXMLDoc: function( elem ) {
+               return (elem.ownerDocument || elem).documentElement.nodeName !== "HTML";
+       },
+       expr: {
+               attrHandle: {},
+               match: {
+                       bool: /^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,
+                       needsContext: /^[\x20\t\r\n\f]*[>+~]/
+               }
+       }
+});
+
+jQuery.extend( jQuery.find, {
+       matches: function( expr, elements ) {
+               return jQuery.find( expr, null, null, elements );
+       },
+       matchesSelector: function( elem, expr ) {
+               return matches.call( elem, expr );
+       },
+       attr: function( elem, name ) {
+               return elem.getAttribute( name );
+       }
+});
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/selector-sizzle.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/selector-sizzle.js
new file mode 100644 (file)
index 0000000..7d3926b
--- /dev/null
@@ -0,0 +1,14 @@
+define([
+       "./core",
+       "sizzle"
+], function( jQuery, Sizzle ) {
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/selector.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/selector.js
new file mode 100644 (file)
index 0000000..01e9733
--- /dev/null
@@ -0,0 +1 @@
+define([ "./selector-sizzle" ]);
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/serialize.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/serialize.js
new file mode 100644 (file)
index 0000000..0d6dfec
--- /dev/null
@@ -0,0 +1,111 @@
+define([
+       "./core",
+       "./manipulation/var/rcheckableType",
+       "./core/init",
+       "./traversing", // filter
+       "./attributes/prop"
+], function( jQuery, rcheckableType ) {
+
+var r20 = /%20/g,
+       rbracket = /\[\]$/,
+       rCRLF = /\r?\n/g,
+       rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+       rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+       var name;
+
+       if ( jQuery.isArray( obj ) ) {
+               // Serialize array item.
+               jQuery.each( obj, function( i, v ) {
+                       if ( traditional || rbracket.test( prefix ) ) {
+                               // Treat each array item as a scalar.
+                               add( prefix, v );
+
+                       } else {
+                               // Item is non-scalar (array or object), encode its numeric index.
+                               buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+                       }
+               });
+
+       } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+               // Serialize object item.
+               for ( name in obj ) {
+                       buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+               }
+
+       } else {
+               // Serialize scalar item.
+               add( prefix, obj );
+       }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+       var prefix,
+               s = [],
+               add = function( key, value ) {
+                       // If value is a function, invoke it and return its value
+                       value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+                       s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+               };
+
+       // Set traditional to true for jQuery <= 1.3.2 behavior.
+       if ( traditional === undefined ) {
+               traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+       }
+
+       // If an array was passed in, assume that it is an array of form elements.
+       if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+               // Serialize the form elements
+               jQuery.each( a, function() {
+                       add( this.name, this.value );
+               });
+
+       } else {
+               // If traditional, encode the "old" way (the way 1.3.2 or older
+               // did it), otherwise encode params recursively.
+               for ( prefix in a ) {
+                       buildParams( prefix, a[ prefix ], traditional, add );
+               }
+       }
+
+       // Return the resulting serialization
+       return s.join( "&" ).replace( r20, "+" );
+};
+
+jQuery.fn.extend({
+       serialize: function() {
+               return jQuery.param( this.serializeArray() );
+       },
+       serializeArray: function() {
+               return this.map(function() {
+                       // Can add propHook for "elements" to filter or add form elements
+                       var elements = jQuery.prop( this, "elements" );
+                       return elements ? jQuery.makeArray( elements ) : this;
+               })
+               .filter(function() {
+                       var type = this.type;
+
+                       // Use .is( ":disabled" ) so that fieldset[disabled] works
+                       return this.name && !jQuery( this ).is( ":disabled" ) &&
+                               rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+                               ( this.checked || !rcheckableType.test( type ) );
+               })
+               .map(function( i, elem ) {
+                       var val = jQuery( this ).val();
+
+                       return val == null ?
+                               null :
+                               jQuery.isArray( val ) ?
+                                       jQuery.map( val, function( val ) {
+                                               return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+                                       }) :
+                                       { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+               }).get();
+       }
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/dist/sizzle.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/dist/sizzle.js
new file mode 100644 (file)
index 0000000..89aecbc
--- /dev/null
@@ -0,0 +1,2067 @@
+/*!
+ * Sizzle CSS Selector Engine v2.2.0-pre
+ * http://sizzlejs.com/
+ *
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-12-16
+ */
+(function( window ) {
+
+var i,
+       support,
+       Expr,
+       getText,
+       isXML,
+       tokenize,
+       compile,
+       select,
+       outermostContext,
+       sortInput,
+       hasDuplicate,
+
+       // Local document vars
+       setDocument,
+       document,
+       docElem,
+       documentIsHTML,
+       rbuggyQSA,
+       rbuggyMatches,
+       matches,
+       contains,
+
+       // Instance-specific data
+       expando = "sizzle" + 1 * new Date(),
+       preferredDoc = window.document,
+       dirruns = 0,
+       done = 0,
+       classCache = createCache(),
+       tokenCache = createCache(),
+       compilerCache = createCache(),
+       sortOrder = function( a, b ) {
+               if ( a === b ) {
+                       hasDuplicate = true;
+               }
+               return 0;
+       },
+
+       // General-purpose constants
+       MAX_NEGATIVE = 1 << 31,
+
+       // Instance methods
+       hasOwn = ({}).hasOwnProperty,
+       arr = [],
+       pop = arr.pop,
+       push_native = arr.push,
+       push = arr.push,
+       slice = arr.slice,
+       // Use a stripped-down indexOf as it's faster than native
+       // http://jsperf.com/thor-indexof-vs-for/5
+       indexOf = function( list, elem ) {
+               var i = 0,
+                       len = list.length;
+               for ( ; i < len; i++ ) {
+                       if ( list[i] === elem ) {
+                               return i;
+                       }
+               }
+               return -1;
+       },
+
+       booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+       // Regular expressions
+
+       // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+       whitespace = "[\\x20\\t\\r\\n\\f]",
+       // http://www.w3.org/TR/css3-syntax/#characters
+       characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+       // Loosely modeled on CSS identifier characters
+       // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+       // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+       identifier = characterEncoding.replace( "w", "w#" ),
+
+       // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+       attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
+               // Operator (capture 2)
+               "*([*^$|!~]?=)" + whitespace +
+               // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+               "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+               "*\\]",
+
+       pseudos = ":(" + characterEncoding + ")(?:\\((" +
+               // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+               // 1. quoted (capture 3; capture 4 or capture 5)
+               "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+               // 2. simple (capture 6)
+               "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+               // 3. anything else (capture 2)
+               ".*" +
+               ")\\)|)",
+
+       // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+       rwhitespace = new RegExp( whitespace + "+", "g" ),
+       rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+       rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+       rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+       rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+       rpseudo = new RegExp( pseudos ),
+       ridentifier = new RegExp( "^" + identifier + "$" ),
+
+       matchExpr = {
+               "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+               "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+               "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+               "ATTR": new RegExp( "^" + attributes ),
+               "PSEUDO": new RegExp( "^" + pseudos ),
+               "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+                       "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+                       "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+               "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+               // For use in libraries implementing .is()
+               // We use this for POS matching in `select`
+               "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+                       whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+       },
+
+       rinputs = /^(?:input|select|textarea|button)$/i,
+       rheader = /^h\d$/i,
+
+       rnative = /^[^{]+\{\s*\[native \w/,
+
+       // Easily-parseable/retrievable ID or TAG or CLASS selectors
+       rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+       rsibling = /[+~]/,
+       rescape = /'|\\/g,
+
+       // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+       runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+       funescape = function( _, escaped, escapedWhitespace ) {
+               var high = "0x" + escaped - 0x10000;
+               // NaN means non-codepoint
+               // Support: Firefox<24
+               // Workaround erroneous numeric interpretation of +"0x"
+               return high !== high || escapedWhitespace ?
+                       escaped :
+                       high < 0 ?
+                               // BMP codepoint
+                               String.fromCharCode( high + 0x10000 ) :
+                               // Supplemental Plane codepoint (surrogate pair)
+                               String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+       },
+
+       // Used for iframes
+       // See setDocument()
+       // Removing the function wrapper causes a "Permission Denied"
+       // error in IE
+       unloadHandler = function() {
+               setDocument();
+       };
+
+// Optimize for push.apply( _, NodeList )
+try {
+       push.apply(
+               (arr = slice.call( preferredDoc.childNodes )),
+               preferredDoc.childNodes
+       );
+       // Support: Android<4.0
+       // Detect silently failing push.apply
+       arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+       push = { apply: arr.length ?
+
+               // Leverage slice if possible
+               function( target, els ) {
+                       push_native.apply( target, slice.call(els) );
+               } :
+
+               // Support: IE<9
+               // Otherwise append directly
+               function( target, els ) {
+                       var j = target.length,
+                               i = 0;
+                       // Can't trust NodeList.length
+                       while ( (target[j++] = els[i++]) ) {}
+                       target.length = j - 1;
+               }
+       };
+}
+
+function Sizzle( selector, context, results, seed ) {
+       var match, elem, m, nodeType,
+               // QSA vars
+               i, groups, old, nid, newContext, newSelector;
+
+       if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+               setDocument( context );
+       }
+
+       context = context || document;
+       results = results || [];
+       nodeType = context.nodeType;
+
+       if ( typeof selector !== "string" || !selector ||
+               nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+               return results;
+       }
+
+       if ( !seed && documentIsHTML ) {
+
+               // Try to shortcut find operations when possible (e.g., not under DocumentFragment)
+               if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+                       // Speed-up: Sizzle("#ID")
+                       if ( (m = match[1]) ) {
+                               if ( nodeType === 9 ) {
+                                       elem = context.getElementById( m );
+                                       // Check parentNode to catch when Blackberry 4.6 returns
+                                       // nodes that are no longer in the document (jQuery #6963)
+                                       if ( elem && elem.parentNode ) {
+                                               // Handle the case where IE, Opera, and Webkit return items
+                                               // by name instead of ID
+                                               if ( elem.id === m ) {
+                                                       results.push( elem );
+                                                       return results;
+                                               }
+                                       } else {
+                                               return results;
+                                       }
+                               } else {
+                                       // Context is not a document
+                                       if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+                                               contains( context, elem ) && elem.id === m ) {
+                                               results.push( elem );
+                                               return results;
+                                       }
+                               }
+
+                       // Speed-up: Sizzle("TAG")
+                       } else if ( match[2] ) {
+                               push.apply( results, context.getElementsByTagName( selector ) );
+                               return results;
+
+                       // Speed-up: Sizzle(".CLASS")
+                       } else if ( (m = match[3]) && support.getElementsByClassName ) {
+                               push.apply( results, context.getElementsByClassName( m ) );
+                               return results;
+                       }
+               }
+
+               // QSA path
+               if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+                       nid = old = expando;
+                       newContext = context;
+                       newSelector = nodeType !== 1 && selector;
+
+                       // qSA works strangely on Element-rooted queries
+                       // We can work around this by specifying an extra ID on the root
+                       // and working up from there (Thanks to Andrew Dupont for the technique)
+                       // IE 8 doesn't work on object elements
+                       if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+                               groups = tokenize( selector );
+
+                               if ( (old = context.getAttribute("id")) ) {
+                                       nid = old.replace( rescape, "\\$&" );
+                               } else {
+                                       context.setAttribute( "id", nid );
+                               }
+                               nid = "[id='" + nid + "'] ";
+
+                               i = groups.length;
+                               while ( i-- ) {
+                                       groups[i] = nid + toSelector( groups[i] );
+                               }
+                               newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
+                               newSelector = groups.join(",");
+                       }
+
+                       if ( newSelector ) {
+                               try {
+                                       push.apply( results,
+                                               newContext.querySelectorAll( newSelector )
+                                       );
+                                       return results;
+                               } catch(qsaError) {
+                               } finally {
+                                       if ( !old ) {
+                                               context.removeAttribute("id");
+                                       }
+                               }
+                       }
+               }
+       }
+
+       // All others
+       return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ *     property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *     deleting the oldest entry
+ */
+function createCache() {
+       var keys = [];
+
+       function cache( key, value ) {
+               // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+               if ( keys.push( key + " " ) > Expr.cacheLength ) {
+                       // Only keep the most recent entries
+                       delete cache[ keys.shift() ];
+               }
+               return (cache[ key + " " ] = value);
+       }
+       return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+       fn[ expando ] = true;
+       return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+       var div = document.createElement("div");
+
+       try {
+               return !!fn( div );
+       } catch (e) {
+               return false;
+       } finally {
+               // Remove from its parent by default
+               if ( div.parentNode ) {
+                       div.parentNode.removeChild( div );
+               }
+               // release memory in IE
+               div = null;
+       }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+       var arr = attrs.split("|"),
+               i = attrs.length;
+
+       while ( i-- ) {
+               Expr.attrHandle[ arr[i] ] = handler;
+       }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+       var cur = b && a,
+               diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+                       ( ~b.sourceIndex || MAX_NEGATIVE ) -
+                       ( ~a.sourceIndex || MAX_NEGATIVE );
+
+       // Use IE sourceIndex if available on both nodes
+       if ( diff ) {
+               return diff;
+       }
+
+       // Check if b follows a
+       if ( cur ) {
+               while ( (cur = cur.nextSibling) ) {
+                       if ( cur === b ) {
+                               return -1;
+                       }
+               }
+       }
+
+       return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return name === "input" && elem.type === type;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return (name === "input" || name === "button") && elem.type === type;
+       };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+       return markFunction(function( argument ) {
+               argument = +argument;
+               return markFunction(function( seed, matches ) {
+                       var j,
+                               matchIndexes = fn( [], seed.length, argument ),
+                               i = matchIndexes.length;
+
+                       // Match elements found at the specified indexes
+                       while ( i-- ) {
+                               if ( seed[ (j = matchIndexes[i]) ] ) {
+                                       seed[j] = !(matches[j] = seed[j]);
+                               }
+                       }
+               });
+       });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+       return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+       // documentElement is verified for cases where it doesn't yet exist
+       // (such as loading iframes in IE - #4833)
+       var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+       return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+       var hasCompare, parent,
+               doc = node ? node.ownerDocument || node : preferredDoc;
+
+       // If no document and documentElement is available, return
+       if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+               return document;
+       }
+
+       // Set our document
+       document = doc;
+       docElem = doc.documentElement;
+       parent = doc.defaultView;
+
+       // Support: IE>8
+       // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+       // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+       // IE6-8 do not support the defaultView property so parent will be undefined
+       if ( parent && parent !== parent.top ) {
+               // IE11 does not have attachEvent, so all must suffer
+               if ( parent.addEventListener ) {
+                       parent.addEventListener( "unload", unloadHandler, false );
+               } else if ( parent.attachEvent ) {
+                       parent.attachEvent( "onunload", unloadHandler );
+               }
+       }
+
+       /* Support tests
+       ---------------------------------------------------------------------- */
+       documentIsHTML = !isXML( doc );
+
+       /* Attributes
+       ---------------------------------------------------------------------- */
+
+       // Support: IE<8
+       // Verify that getAttribute really returns attributes and not properties
+       // (excepting IE8 booleans)
+       support.attributes = assert(function( div ) {
+               div.className = "i";
+               return !div.getAttribute("className");
+       });
+
+       /* getElement(s)By*
+       ---------------------------------------------------------------------- */
+
+       // Check if getElementsByTagName("*") returns only elements
+       support.getElementsByTagName = assert(function( div ) {
+               div.appendChild( doc.createComment("") );
+               return !div.getElementsByTagName("*").length;
+       });
+
+       // Support: IE<9
+       support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
+
+       // Support: IE<10
+       // Check if getElementById returns elements by name
+       // The broken getElementById methods don't pick up programatically-set names,
+       // so use a roundabout getElementsByName test
+       support.getById = assert(function( div ) {
+               docElem.appendChild( div ).id = expando;
+               return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+       });
+
+       // ID find and filter
+       if ( support.getById ) {
+               Expr.find["ID"] = function( id, context ) {
+                       if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+                               var m = context.getElementById( id );
+                               // Check parentNode to catch when Blackberry 4.6 returns
+                               // nodes that are no longer in the document #6963
+                               return m && m.parentNode ? [ m ] : [];
+                       }
+               };
+               Expr.filter["ID"] = function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               return elem.getAttribute("id") === attrId;
+                       };
+               };
+       } else {
+               // Support: IE6/7
+               // getElementById is not reliable as a find shortcut
+               delete Expr.find["ID"];
+
+               Expr.filter["ID"] =  function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+                               return node && node.value === attrId;
+                       };
+               };
+       }
+
+       // Tag
+       Expr.find["TAG"] = support.getElementsByTagName ?
+               function( tag, context ) {
+                       if ( typeof context.getElementsByTagName !== "undefined" ) {
+                               return context.getElementsByTagName( tag );
+
+                       // DocumentFragment nodes don't have gEBTN
+                       } else if ( support.qsa ) {
+                               return context.querySelectorAll( tag );
+                       }
+               } :
+
+               function( tag, context ) {
+                       var elem,
+                               tmp = [],
+                               i = 0,
+                               // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+                               results = context.getElementsByTagName( tag );
+
+                       // Filter out possible comments
+                       if ( tag === "*" ) {
+                               while ( (elem = results[i++]) ) {
+                                       if ( elem.nodeType === 1 ) {
+                                               tmp.push( elem );
+                                       }
+                               }
+
+                               return tmp;
+                       }
+                       return results;
+               };
+
+       // Class
+       Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+               if ( documentIsHTML ) {
+                       return context.getElementsByClassName( className );
+               }
+       };
+
+       /* QSA/matchesSelector
+       ---------------------------------------------------------------------- */
+
+       // QSA and matchesSelector support
+
+       // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+       rbuggyMatches = [];
+
+       // qSa(:focus) reports false when true (Chrome 21)
+       // We allow this because of a bug in IE8/9 that throws an error
+       // whenever `document.activeElement` is accessed on an iframe
+       // So, we allow :focus to pass through QSA all the time to avoid the IE error
+       // See http://bugs.jquery.com/ticket/13378
+       rbuggyQSA = [];
+
+       if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+               // Build QSA regex
+               // Regex strategy adopted from Diego Perini
+               assert(function( div ) {
+                       // Select is set to empty string on purpose
+                       // This is to test IE's treatment of not explicitly
+                       // setting a boolean content attribute,
+                       // since its presence should be enough
+                       // http://bugs.jquery.com/ticket/12359
+                       docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
+                               "<select id='" + expando + "-\f]' msallowcapture=''>" +
+                               "<option selected=''></option></select>";
+
+                       // Support: IE8, Opera 11-12.16
+                       // Nothing should be selected when empty strings follow ^= or $= or *=
+                       // The test attribute must be unknown in Opera but "safe" for WinRT
+                       // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+                       if ( div.querySelectorAll("[msallowcapture^='']").length ) {
+                               rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+                       }
+
+                       // Support: IE8
+                       // Boolean attributes and "value" are not treated correctly
+                       if ( !div.querySelectorAll("[selected]").length ) {
+                               rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+                       }
+
+                       // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
+                       if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+                               rbuggyQSA.push("~=");
+                       }
+
+                       // Webkit/Opera - :checked should return selected option elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       // IE8 throws error here and will not see later tests
+                       if ( !div.querySelectorAll(":checked").length ) {
+                               rbuggyQSA.push(":checked");
+                       }
+
+                       // Support: Safari 8+, iOS 8+
+                       // https://bugs.webkit.org/show_bug.cgi?id=136851
+                       // In-page `selector#id sibing-combinator selector` fails
+                       if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
+                               rbuggyQSA.push(".#.+[+~]");
+                       }
+               });
+
+               assert(function( div ) {
+                       // Support: Windows 8 Native Apps
+                       // The type and name attributes are restricted during .innerHTML assignment
+                       var input = doc.createElement("input");
+                       input.setAttribute( "type", "hidden" );
+                       div.appendChild( input ).setAttribute( "name", "D" );
+
+                       // Support: IE8
+                       // Enforce case-sensitivity of name attribute
+                       if ( div.querySelectorAll("[name=d]").length ) {
+                               rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+                       }
+
+                       // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+                       // IE8 throws error here and will not see later tests
+                       if ( !div.querySelectorAll(":enabled").length ) {
+                               rbuggyQSA.push( ":enabled", ":disabled" );
+                       }
+
+                       // Opera 10-11 does not throw on post-comma invalid pseudos
+                       div.querySelectorAll("*,:x");
+                       rbuggyQSA.push(",.*:");
+               });
+       }
+
+       if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+               docElem.webkitMatchesSelector ||
+               docElem.mozMatchesSelector ||
+               docElem.oMatchesSelector ||
+               docElem.msMatchesSelector) )) ) {
+
+               assert(function( div ) {
+                       // Check to see if it's possible to do matchesSelector
+                       // on a disconnected node (IE 9)
+                       support.disconnectedMatch = matches.call( div, "div" );
+
+                       // This should fail with an exception
+                       // Gecko does not error, returns false instead
+                       matches.call( div, "[s!='']:x" );
+                       rbuggyMatches.push( "!=", pseudos );
+               });
+       }
+
+       rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+       rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+       /* Contains
+       ---------------------------------------------------------------------- */
+       hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+       // Element contains another
+       // Purposefully does not implement inclusive descendent
+       // As in, an element does not contain itself
+       contains = hasCompare || rnative.test( docElem.contains ) ?
+               function( a, b ) {
+                       var adown = a.nodeType === 9 ? a.documentElement : a,
+                               bup = b && b.parentNode;
+                       return a === bup || !!( bup && bup.nodeType === 1 && (
+                               adown.contains ?
+                                       adown.contains( bup ) :
+                                       a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+                       ));
+               } :
+               function( a, b ) {
+                       if ( b ) {
+                               while ( (b = b.parentNode) ) {
+                                       if ( b === a ) {
+                                               return true;
+                                       }
+                               }
+                       }
+                       return false;
+               };
+
+       /* Sorting
+       ---------------------------------------------------------------------- */
+
+       // Document order sorting
+       sortOrder = hasCompare ?
+       function( a, b ) {
+
+               // Flag for duplicate removal
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               // Sort on method existence if only one input has compareDocumentPosition
+               var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+               if ( compare ) {
+                       return compare;
+               }
+
+               // Calculate position if both inputs belong to the same document
+               compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+                       a.compareDocumentPosition( b ) :
+
+                       // Otherwise we know they are disconnected
+                       1;
+
+               // Disconnected nodes
+               if ( compare & 1 ||
+                       (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+                       // Choose the first element that is related to our preferred document
+                       if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+                               return -1;
+                       }
+                       if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+                               return 1;
+                       }
+
+                       // Maintain original order
+                       return sortInput ?
+                               ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+                               0;
+               }
+
+               return compare & 4 ? -1 : 1;
+       } :
+       function( a, b ) {
+               // Exit early if the nodes are identical
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               var cur,
+                       i = 0,
+                       aup = a.parentNode,
+                       bup = b.parentNode,
+                       ap = [ a ],
+                       bp = [ b ];
+
+               // Parentless nodes are either documents or disconnected
+               if ( !aup || !bup ) {
+                       return a === doc ? -1 :
+                               b === doc ? 1 :
+                               aup ? -1 :
+                               bup ? 1 :
+                               sortInput ?
+                               ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+                               0;
+
+               // If the nodes are siblings, we can do a quick check
+               } else if ( aup === bup ) {
+                       return siblingCheck( a, b );
+               }
+
+               // Otherwise we need full lists of their ancestors for comparison
+               cur = a;
+               while ( (cur = cur.parentNode) ) {
+                       ap.unshift( cur );
+               }
+               cur = b;
+               while ( (cur = cur.parentNode) ) {
+                       bp.unshift( cur );
+               }
+
+               // Walk down the tree looking for a discrepancy
+               while ( ap[i] === bp[i] ) {
+                       i++;
+               }
+
+               return i ?
+                       // Do a sibling check if the nodes have a common ancestor
+                       siblingCheck( ap[i], bp[i] ) :
+
+                       // Otherwise nodes in our document sort first
+                       ap[i] === preferredDoc ? -1 :
+                       bp[i] === preferredDoc ? 1 :
+                       0;
+       };
+
+       return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+       return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       // Make sure that attribute selectors are quoted
+       expr = expr.replace( rattributeQuotes, "='$1']" );
+
+       if ( support.matchesSelector && documentIsHTML &&
+               ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+               ( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+               try {
+                       var ret = matches.call( elem, expr );
+
+                       // IE 9's matchesSelector returns false on disconnected nodes
+                       if ( ret || support.disconnectedMatch ||
+                                       // As well, disconnected nodes are said to be in a document
+                                       // fragment in IE 9
+                                       elem.document && elem.document.nodeType !== 11 ) {
+                               return ret;
+                       }
+               } catch (e) {}
+       }
+
+       return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+       // Set document vars if needed
+       if ( ( context.ownerDocument || context ) !== document ) {
+               setDocument( context );
+       }
+       return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       var fn = Expr.attrHandle[ name.toLowerCase() ],
+               // Don't get fooled by Object.prototype properties (jQuery #13807)
+               val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+                       fn( elem, name, !documentIsHTML ) :
+                       undefined;
+
+       return val !== undefined ?
+               val :
+               support.attributes || !documentIsHTML ?
+                       elem.getAttribute( name ) :
+                       (val = elem.getAttributeNode(name)) && val.specified ?
+                               val.value :
+                               null;
+};
+
+Sizzle.error = function( msg ) {
+       throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+       var elem,
+               duplicates = [],
+               j = 0,
+               i = 0;
+
+       // Unless we *know* we can detect duplicates, assume their presence
+       hasDuplicate = !support.detectDuplicates;
+       sortInput = !support.sortStable && results.slice( 0 );
+       results.sort( sortOrder );
+
+       if ( hasDuplicate ) {
+               while ( (elem = results[i++]) ) {
+                       if ( elem === results[ i ] ) {
+                               j = duplicates.push( i );
+                       }
+               }
+               while ( j-- ) {
+                       results.splice( duplicates[ j ], 1 );
+               }
+       }
+
+       // Clear input after sorting to release objects
+       // See https://github.com/jquery/sizzle/pull/225
+       sortInput = null;
+
+       return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+       var node,
+               ret = "",
+               i = 0,
+               nodeType = elem.nodeType;
+
+       if ( !nodeType ) {
+               // If no nodeType, this is expected to be an array
+               while ( (node = elem[i++]) ) {
+                       // Do not traverse comment nodes
+                       ret += getText( node );
+               }
+       } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+               // Use textContent for elements
+               // innerText usage removed for consistency of new lines (jQuery #11153)
+               if ( typeof elem.textContent === "string" ) {
+                       return elem.textContent;
+               } else {
+                       // Traverse its children
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               ret += getText( elem );
+                       }
+               }
+       } else if ( nodeType === 3 || nodeType === 4 ) {
+               return elem.nodeValue;
+       }
+       // Do not include comment or processing instruction nodes
+
+       return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+       // Can be adjusted by the user
+       cacheLength: 50,
+
+       createPseudo: markFunction,
+
+       match: matchExpr,
+
+       attrHandle: {},
+
+       find: {},
+
+       relative: {
+               ">": { dir: "parentNode", first: true },
+               " ": { dir: "parentNode" },
+               "+": { dir: "previousSibling", first: true },
+               "~": { dir: "previousSibling" }
+       },
+
+       preFilter: {
+               "ATTR": function( match ) {
+                       match[1] = match[1].replace( runescape, funescape );
+
+                       // Move the given value to match[3] whether quoted or unquoted
+                       match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+                       if ( match[2] === "~=" ) {
+                               match[3] = " " + match[3] + " ";
+                       }
+
+                       return match.slice( 0, 4 );
+               },
+
+               "CHILD": function( match ) {
+                       /* matches from matchExpr["CHILD"]
+                               1 type (only|nth|...)
+                               2 what (child|of-type)
+                               3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+                               4 xn-component of xn+y argument ([+-]?\d*n|)
+                               5 sign of xn-component
+                               6 x of xn-component
+                               7 sign of y-component
+                               8 y of y-component
+                       */
+                       match[1] = match[1].toLowerCase();
+
+                       if ( match[1].slice( 0, 3 ) === "nth" ) {
+                               // nth-* requires argument
+                               if ( !match[3] ) {
+                                       Sizzle.error( match[0] );
+                               }
+
+                               // numeric x and y parameters for Expr.filter.CHILD
+                               // remember that false/true cast respectively to 0/1
+                               match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+                               match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+                       // other types prohibit arguments
+                       } else if ( match[3] ) {
+                               Sizzle.error( match[0] );
+                       }
+
+                       return match;
+               },
+
+               "PSEUDO": function( match ) {
+                       var excess,
+                               unquoted = !match[6] && match[2];
+
+                       if ( matchExpr["CHILD"].test( match[0] ) ) {
+                               return null;
+                       }
+
+                       // Accept quoted arguments as-is
+                       if ( match[3] ) {
+                               match[2] = match[4] || match[5] || "";
+
+                       // Strip excess characters from unquoted arguments
+                       } else if ( unquoted && rpseudo.test( unquoted ) &&
+                               // Get excess from tokenize (recursively)
+                               (excess = tokenize( unquoted, true )) &&
+                               // advance to the next closing parenthesis
+                               (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+                               // excess is a negative index
+                               match[0] = match[0].slice( 0, excess );
+                               match[2] = unquoted.slice( 0, excess );
+                       }
+
+                       // Return only captures needed by the pseudo filter method (type and argument)
+                       return match.slice( 0, 3 );
+               }
+       },
+
+       filter: {
+
+               "TAG": function( nodeNameSelector ) {
+                       var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+                       return nodeNameSelector === "*" ?
+                               function() { return true; } :
+                               function( elem ) {
+                                       return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+                               };
+               },
+
+               "CLASS": function( className ) {
+                       var pattern = classCache[ className + " " ];
+
+                       return pattern ||
+                               (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+                               classCache( className, function( elem ) {
+                                       return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+                               });
+               },
+
+               "ATTR": function( name, operator, check ) {
+                       return function( elem ) {
+                               var result = Sizzle.attr( elem, name );
+
+                               if ( result == null ) {
+                                       return operator === "!=";
+                               }
+                               if ( !operator ) {
+                                       return true;
+                               }
+
+                               result += "";
+
+                               return operator === "=" ? result === check :
+                                       operator === "!=" ? result !== check :
+                                       operator === "^=" ? check && result.indexOf( check ) === 0 :
+                                       operator === "*=" ? check && result.indexOf( check ) > -1 :
+                                       operator === "$=" ? check && result.slice( -check.length ) === check :
+                                       operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+                                       operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+                                       false;
+                       };
+               },
+
+               "CHILD": function( type, what, argument, first, last ) {
+                       var simple = type.slice( 0, 3 ) !== "nth",
+                               forward = type.slice( -4 ) !== "last",
+                               ofType = what === "of-type";
+
+                       return first === 1 && last === 0 ?
+
+                               // Shortcut for :nth-*(n)
+                               function( elem ) {
+                                       return !!elem.parentNode;
+                               } :
+
+                               function( elem, context, xml ) {
+                                       var cache, outerCache, node, diff, nodeIndex, start,
+                                               dir = simple !== forward ? "nextSibling" : "previousSibling",
+                                               parent = elem.parentNode,
+                                               name = ofType && elem.nodeName.toLowerCase(),
+                                               useCache = !xml && !ofType;
+
+                                       if ( parent ) {
+
+                                               // :(first|last|only)-(child|of-type)
+                                               if ( simple ) {
+                                                       while ( dir ) {
+                                                               node = elem;
+                                                               while ( (node = node[ dir ]) ) {
+                                                                       if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+                                                                               return false;
+                                                                       }
+                                                               }
+                                                               // Reverse direction for :only-* (if we haven't yet done so)
+                                                               start = dir = type === "only" && !start && "nextSibling";
+                                                       }
+                                                       return true;
+                                               }
+
+                                               start = [ forward ? parent.firstChild : parent.lastChild ];
+
+                                               // non-xml :nth-child(...) stores cache data on `parent`
+                                               if ( forward && useCache ) {
+                                                       // Seek `elem` from a previously-cached index
+                                                       outerCache = parent[ expando ] || (parent[ expando ] = {});
+                                                       cache = outerCache[ type ] || [];
+                                                       nodeIndex = cache[0] === dirruns && cache[1];
+                                                       diff = cache[0] === dirruns && cache[2];
+                                                       node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+                                                               // Fallback to seeking `elem` from the start
+                                                               (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                               // When found, cache indexes on `parent` and break
+                                                               if ( node.nodeType === 1 && ++diff && node === elem ) {
+                                                                       outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+                                                                       break;
+                                                               }
+                                                       }
+
+                                               // Use previously-cached element index if available
+                                               } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+                                                       diff = cache[1];
+
+                                               // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+                                               } else {
+                                                       // Use the same loop as above to seek `elem` from the start
+                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
+                                                               (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                               if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+                                                                       // Cache the index of each encountered element
+                                                                       if ( useCache ) {
+                                                                               (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+                                                                       }
+
+                                                                       if ( node === elem ) {
+                                                                               break;
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+
+                                               // Incorporate the offset, then check against cycle size
+                                               diff -= last;
+                                               return diff === first || ( diff % first === 0 && diff / first >= 0 );
+                                       }
+                               };
+               },
+
+               "PSEUDO": function( pseudo, argument ) {
+                       // pseudo-class names are case-insensitive
+                       // http://www.w3.org/TR/selectors/#pseudo-classes
+                       // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+                       // Remember that setFilters inherits from pseudos
+                       var args,
+                               fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+                                       Sizzle.error( "unsupported pseudo: " + pseudo );
+
+                       // The user may use createPseudo to indicate that
+                       // arguments are needed to create the filter function
+                       // just as Sizzle does
+                       if ( fn[ expando ] ) {
+                               return fn( argument );
+                       }
+
+                       // But maintain support for old signatures
+                       if ( fn.length > 1 ) {
+                               args = [ pseudo, pseudo, "", argument ];
+                               return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+                                       markFunction(function( seed, matches ) {
+                                               var idx,
+                                                       matched = fn( seed, argument ),
+                                                       i = matched.length;
+                                               while ( i-- ) {
+                                                       idx = indexOf( seed, matched[i] );
+                                                       seed[ idx ] = !( matches[ idx ] = matched[i] );
+                                               }
+                                       }) :
+                                       function( elem ) {
+                                               return fn( elem, 0, args );
+                                       };
+                       }
+
+                       return fn;
+               }
+       },
+
+       pseudos: {
+               // Potentially complex pseudos
+               "not": markFunction(function( selector ) {
+                       // Trim the selector passed to compile
+                       // to avoid treating leading and trailing
+                       // spaces as combinators
+                       var input = [],
+                               results = [],
+                               matcher = compile( selector.replace( rtrim, "$1" ) );
+
+                       return matcher[ expando ] ?
+                               markFunction(function( seed, matches, context, xml ) {
+                                       var elem,
+                                               unmatched = matcher( seed, null, xml, [] ),
+                                               i = seed.length;
+
+                                       // Match elements unmatched by `matcher`
+                                       while ( i-- ) {
+                                               if ( (elem = unmatched[i]) ) {
+                                                       seed[i] = !(matches[i] = elem);
+                                               }
+                                       }
+                               }) :
+                               function( elem, context, xml ) {
+                                       input[0] = elem;
+                                       matcher( input, null, xml, results );
+                                       // Don't keep the element (issue #299)
+                                       input[0] = null;
+                                       return !results.pop();
+                               };
+               }),
+
+               "has": markFunction(function( selector ) {
+                       return function( elem ) {
+                               return Sizzle( selector, elem ).length > 0;
+                       };
+               }),
+
+               "contains": markFunction(function( text ) {
+                       text = text.replace( runescape, funescape );
+                       return function( elem ) {
+                               return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+                       };
+               }),
+
+               // "Whether an element is represented by a :lang() selector
+               // is based solely on the element's language value
+               // being equal to the identifier C,
+               // or beginning with the identifier C immediately followed by "-".
+               // The matching of C against the element's language value is performed case-insensitively.
+               // The identifier C does not have to be a valid language name."
+               // http://www.w3.org/TR/selectors/#lang-pseudo
+               "lang": markFunction( function( lang ) {
+                       // lang value must be a valid identifier
+                       if ( !ridentifier.test(lang || "") ) {
+                               Sizzle.error( "unsupported lang: " + lang );
+                       }
+                       lang = lang.replace( runescape, funescape ).toLowerCase();
+                       return function( elem ) {
+                               var elemLang;
+                               do {
+                                       if ( (elemLang = documentIsHTML ?
+                                               elem.lang :
+                                               elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+                                               elemLang = elemLang.toLowerCase();
+                                               return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+                                       }
+                               } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+                               return false;
+                       };
+               }),
+
+               // Miscellaneous
+               "target": function( elem ) {
+                       var hash = window.location && window.location.hash;
+                       return hash && hash.slice( 1 ) === elem.id;
+               },
+
+               "root": function( elem ) {
+                       return elem === docElem;
+               },
+
+               "focus": function( elem ) {
+                       return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+               },
+
+               // Boolean properties
+               "enabled": function( elem ) {
+                       return elem.disabled === false;
+               },
+
+               "disabled": function( elem ) {
+                       return elem.disabled === true;
+               },
+
+               "checked": function( elem ) {
+                       // In CSS3, :checked should return both checked and selected elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       var nodeName = elem.nodeName.toLowerCase();
+                       return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+               },
+
+               "selected": function( elem ) {
+                       // Accessing this property makes selected-by-default
+                       // options in Safari work properly
+                       if ( elem.parentNode ) {
+                               elem.parentNode.selectedIndex;
+                       }
+
+                       return elem.selected === true;
+               },
+
+               // Contents
+               "empty": function( elem ) {
+                       // http://www.w3.org/TR/selectors/#empty-pseudo
+                       // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+                       //   but not by others (comment: 8; processing instruction: 7; etc.)
+                       // nodeType < 6 works because attributes (2) do not appear as children
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               if ( elem.nodeType < 6 ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               },
+
+               "parent": function( elem ) {
+                       return !Expr.pseudos["empty"]( elem );
+               },
+
+               // Element/input types
+               "header": function( elem ) {
+                       return rheader.test( elem.nodeName );
+               },
+
+               "input": function( elem ) {
+                       return rinputs.test( elem.nodeName );
+               },
+
+               "button": function( elem ) {
+                       var name = elem.nodeName.toLowerCase();
+                       return name === "input" && elem.type === "button" || name === "button";
+               },
+
+               "text": function( elem ) {
+                       var attr;
+                       return elem.nodeName.toLowerCase() === "input" &&
+                               elem.type === "text" &&
+
+                               // Support: IE<8
+                               // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+                               ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+               },
+
+               // Position-in-collection
+               "first": createPositionalPseudo(function() {
+                       return [ 0 ];
+               }),
+
+               "last": createPositionalPseudo(function( matchIndexes, length ) {
+                       return [ length - 1 ];
+               }),
+
+               "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       return [ argument < 0 ? argument + length : argument ];
+               }),
+
+               "even": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 0;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "odd": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 1;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; --i >= 0; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; ++i < length; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               })
+       }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+       Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+       Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+       var matched, match, tokens, type,
+               soFar, groups, preFilters,
+               cached = tokenCache[ selector + " " ];
+
+       if ( cached ) {
+               return parseOnly ? 0 : cached.slice( 0 );
+       }
+
+       soFar = selector;
+       groups = [];
+       preFilters = Expr.preFilter;
+
+       while ( soFar ) {
+
+               // Comma and first run
+               if ( !matched || (match = rcomma.exec( soFar )) ) {
+                       if ( match ) {
+                               // Don't consume trailing commas as valid
+                               soFar = soFar.slice( match[0].length ) || soFar;
+                       }
+                       groups.push( (tokens = []) );
+               }
+
+               matched = false;
+
+               // Combinators
+               if ( (match = rcombinators.exec( soFar )) ) {
+                       matched = match.shift();
+                       tokens.push({
+                               value: matched,
+                               // Cast descendant combinators to space
+                               type: match[0].replace( rtrim, " " )
+                       });
+                       soFar = soFar.slice( matched.length );
+               }
+
+               // Filters
+               for ( type in Expr.filter ) {
+                       if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+                               (match = preFilters[ type ]( match ))) ) {
+                               matched = match.shift();
+                               tokens.push({
+                                       value: matched,
+                                       type: type,
+                                       matches: match
+                               });
+                               soFar = soFar.slice( matched.length );
+                       }
+               }
+
+               if ( !matched ) {
+                       break;
+               }
+       }
+
+       // Return the length of the invalid excess
+       // if we're just parsing
+       // Otherwise, throw an error or return tokens
+       return parseOnly ?
+               soFar.length :
+               soFar ?
+                       Sizzle.error( selector ) :
+                       // Cache the tokens
+                       tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+       var i = 0,
+               len = tokens.length,
+               selector = "";
+       for ( ; i < len; i++ ) {
+               selector += tokens[i].value;
+       }
+       return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+       var dir = combinator.dir,
+               checkNonElements = base && dir === "parentNode",
+               doneName = done++;
+
+       return combinator.first ?
+               // Check against closest ancestor/preceding element
+               function( elem, context, xml ) {
+                       while ( (elem = elem[ dir ]) ) {
+                               if ( elem.nodeType === 1 || checkNonElements ) {
+                                       return matcher( elem, context, xml );
+                               }
+                       }
+               } :
+
+               // Check against all ancestor/preceding elements
+               function( elem, context, xml ) {
+                       var oldCache, outerCache,
+                               newCache = [ dirruns, doneName ];
+
+                       // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+                       if ( xml ) {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               if ( matcher( elem, context, xml ) ) {
+                                                       return true;
+                                               }
+                                       }
+                               }
+                       } else {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               outerCache = elem[ expando ] || (elem[ expando ] = {});
+                                               if ( (oldCache = outerCache[ dir ]) &&
+                                                       oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+                                                       // Assign to newCache so results back-propagate to previous elements
+                                                       return (newCache[ 2 ] = oldCache[ 2 ]);
+                                               } else {
+                                                       // Reuse newcache so results back-propagate to previous elements
+                                                       outerCache[ dir ] = newCache;
+
+                                                       // A match means we're done; a fail means we have to keep checking
+                                                       if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+                                                               return true;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               };
+}
+
+function elementMatcher( matchers ) {
+       return matchers.length > 1 ?
+               function( elem, context, xml ) {
+                       var i = matchers.length;
+                       while ( i-- ) {
+                               if ( !matchers[i]( elem, context, xml ) ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               } :
+               matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+       var i = 0,
+               len = contexts.length;
+       for ( ; i < len; i++ ) {
+               Sizzle( selector, contexts[i], results );
+       }
+       return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+       var elem,
+               newUnmatched = [],
+               i = 0,
+               len = unmatched.length,
+               mapped = map != null;
+
+       for ( ; i < len; i++ ) {
+               if ( (elem = unmatched[i]) ) {
+                       if ( !filter || filter( elem, context, xml ) ) {
+                               newUnmatched.push( elem );
+                               if ( mapped ) {
+                                       map.push( i );
+                               }
+                       }
+               }
+       }
+
+       return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+       if ( postFilter && !postFilter[ expando ] ) {
+               postFilter = setMatcher( postFilter );
+       }
+       if ( postFinder && !postFinder[ expando ] ) {
+               postFinder = setMatcher( postFinder, postSelector );
+       }
+       return markFunction(function( seed, results, context, xml ) {
+               var temp, i, elem,
+                       preMap = [],
+                       postMap = [],
+                       preexisting = results.length,
+
+                       // Get initial elements from seed or context
+                       elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+                       // Prefilter to get matcher input, preserving a map for seed-results synchronization
+                       matcherIn = preFilter && ( seed || !selector ) ?
+                               condense( elems, preMap, preFilter, context, xml ) :
+                               elems,
+
+                       matcherOut = matcher ?
+                               // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+                               postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+                                       // ...intermediate processing is necessary
+                                       [] :
+
+                                       // ...otherwise use results directly
+                                       results :
+                               matcherIn;
+
+               // Find primary matches
+               if ( matcher ) {
+                       matcher( matcherIn, matcherOut, context, xml );
+               }
+
+               // Apply postFilter
+               if ( postFilter ) {
+                       temp = condense( matcherOut, postMap );
+                       postFilter( temp, [], context, xml );
+
+                       // Un-match failing elements by moving them back to matcherIn
+                       i = temp.length;
+                       while ( i-- ) {
+                               if ( (elem = temp[i]) ) {
+                                       matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+                               }
+                       }
+               }
+
+               if ( seed ) {
+                       if ( postFinder || preFilter ) {
+                               if ( postFinder ) {
+                                       // Get the final matcherOut by condensing this intermediate into postFinder contexts
+                                       temp = [];
+                                       i = matcherOut.length;
+                                       while ( i-- ) {
+                                               if ( (elem = matcherOut[i]) ) {
+                                                       // Restore matcherIn since elem is not yet a final match
+                                                       temp.push( (matcherIn[i] = elem) );
+                                               }
+                                       }
+                                       postFinder( null, (matcherOut = []), temp, xml );
+                               }
+
+                               // Move matched elements from seed to results to keep them synchronized
+                               i = matcherOut.length;
+                               while ( i-- ) {
+                                       if ( (elem = matcherOut[i]) &&
+                                               (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+                                               seed[temp] = !(results[temp] = elem);
+                                       }
+                               }
+                       }
+
+               // Add elements to results, through postFinder if defined
+               } else {
+                       matcherOut = condense(
+                               matcherOut === results ?
+                                       matcherOut.splice( preexisting, matcherOut.length ) :
+                                       matcherOut
+                       );
+                       if ( postFinder ) {
+                               postFinder( null, results, matcherOut, xml );
+                       } else {
+                               push.apply( results, matcherOut );
+                       }
+               }
+       });
+}
+
+function matcherFromTokens( tokens ) {
+       var checkContext, matcher, j,
+               len = tokens.length,
+               leadingRelative = Expr.relative[ tokens[0].type ],
+               implicitRelative = leadingRelative || Expr.relative[" "],
+               i = leadingRelative ? 1 : 0,
+
+               // The foundational matcher ensures that elements are reachable from top-level context(s)
+               matchContext = addCombinator( function( elem ) {
+                       return elem === checkContext;
+               }, implicitRelative, true ),
+               matchAnyContext = addCombinator( function( elem ) {
+                       return indexOf( checkContext, elem ) > -1;
+               }, implicitRelative, true ),
+               matchers = [ function( elem, context, xml ) {
+                       var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+                               (checkContext = context).nodeType ?
+                                       matchContext( elem, context, xml ) :
+                                       matchAnyContext( elem, context, xml ) );
+                       // Avoid hanging onto element (issue #299)
+                       checkContext = null;
+                       return ret;
+               } ];
+
+       for ( ; i < len; i++ ) {
+               if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+                       matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+               } else {
+                       matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+                       // Return special upon seeing a positional matcher
+                       if ( matcher[ expando ] ) {
+                               // Find the next relative operator (if any) for proper handling
+                               j = ++i;
+                               for ( ; j < len; j++ ) {
+                                       if ( Expr.relative[ tokens[j].type ] ) {
+                                               break;
+                                       }
+                               }
+                               return setMatcher(
+                                       i > 1 && elementMatcher( matchers ),
+                                       i > 1 && toSelector(
+                                               // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+                                               tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+                                       ).replace( rtrim, "$1" ),
+                                       matcher,
+                                       i < j && matcherFromTokens( tokens.slice( i, j ) ),
+                                       j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+                                       j < len && toSelector( tokens )
+                               );
+                       }
+                       matchers.push( matcher );
+               }
+       }
+
+       return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+       var bySet = setMatchers.length > 0,
+               byElement = elementMatchers.length > 0,
+               superMatcher = function( seed, context, xml, results, outermost ) {
+                       var elem, j, matcher,
+                               matchedCount = 0,
+                               i = "0",
+                               unmatched = seed && [],
+                               setMatched = [],
+                               contextBackup = outermostContext,
+                               // We must always have either seed elements or outermost context
+                               elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+                               // Use integer dirruns iff this is the outermost matcher
+                               dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+                               len = elems.length;
+
+                       if ( outermost ) {
+                               outermostContext = context !== document && context;
+                       }
+
+                       // Add elements passing elementMatchers directly to results
+                       // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+                       // Support: IE<9, Safari
+                       // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+                       for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+                               if ( byElement && elem ) {
+                                       j = 0;
+                                       while ( (matcher = elementMatchers[j++]) ) {
+                                               if ( matcher( elem, context, xml ) ) {
+                                                       results.push( elem );
+                                                       break;
+                                               }
+                                       }
+                                       if ( outermost ) {
+                                               dirruns = dirrunsUnique;
+                                       }
+                               }
+
+                               // Track unmatched elements for set filters
+                               if ( bySet ) {
+                                       // They will have gone through all possible matchers
+                                       if ( (elem = !matcher && elem) ) {
+                                               matchedCount--;
+                                       }
+
+                                       // Lengthen the array for every element, matched or not
+                                       if ( seed ) {
+                                               unmatched.push( elem );
+                                       }
+                               }
+                       }
+
+                       // Apply set filters to unmatched elements
+                       matchedCount += i;
+                       if ( bySet && i !== matchedCount ) {
+                               j = 0;
+                               while ( (matcher = setMatchers[j++]) ) {
+                                       matcher( unmatched, setMatched, context, xml );
+                               }
+
+                               if ( seed ) {
+                                       // Reintegrate element matches to eliminate the need for sorting
+                                       if ( matchedCount > 0 ) {
+                                               while ( i-- ) {
+                                                       if ( !(unmatched[i] || setMatched[i]) ) {
+                                                               setMatched[i] = pop.call( results );
+                                                       }
+                                               }
+                                       }
+
+                                       // Discard index placeholder values to get only actual matches
+                                       setMatched = condense( setMatched );
+                               }
+
+                               // Add matches to results
+                               push.apply( results, setMatched );
+
+                               // Seedless set matches succeeding multiple successful matchers stipulate sorting
+                               if ( outermost && !seed && setMatched.length > 0 &&
+                                       ( matchedCount + setMatchers.length ) > 1 ) {
+
+                                       Sizzle.uniqueSort( results );
+                               }
+                       }
+
+                       // Override manipulation of globals by nested matchers
+                       if ( outermost ) {
+                               dirruns = dirrunsUnique;
+                               outermostContext = contextBackup;
+                       }
+
+                       return unmatched;
+               };
+
+       return bySet ?
+               markFunction( superMatcher ) :
+               superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+       var i,
+               setMatchers = [],
+               elementMatchers = [],
+               cached = compilerCache[ selector + " " ];
+
+       if ( !cached ) {
+               // Generate a function of recursive functions that can be used to check each element
+               if ( !match ) {
+                       match = tokenize( selector );
+               }
+               i = match.length;
+               while ( i-- ) {
+                       cached = matcherFromTokens( match[i] );
+                       if ( cached[ expando ] ) {
+                               setMatchers.push( cached );
+                       } else {
+                               elementMatchers.push( cached );
+                       }
+               }
+
+               // Cache the compiled function
+               cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+               // Save selector and tokenization
+               cached.selector = selector;
+       }
+       return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+       var i, tokens, token, type, find,
+               compiled = typeof selector === "function" && selector,
+               match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+       results = results || [];
+
+       // Try to minimize operations if there is no seed and only one group
+       if ( match.length === 1 ) {
+
+               // Take a shortcut and set the context if the root selector is an ID
+               tokens = match[0] = match[0].slice( 0 );
+               if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+                               support.getById && context.nodeType === 9 && documentIsHTML &&
+                               Expr.relative[ tokens[1].type ] ) {
+
+                       context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+                       if ( !context ) {
+                               return results;
+
+                       // Precompiled matchers will still verify ancestry, so step up a level
+                       } else if ( compiled ) {
+                               context = context.parentNode;
+                       }
+
+                       selector = selector.slice( tokens.shift().value.length );
+               }
+
+               // Fetch a seed set for right-to-left matching
+               i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+               while ( i-- ) {
+                       token = tokens[i];
+
+                       // Abort if we hit a combinator
+                       if ( Expr.relative[ (type = token.type) ] ) {
+                               break;
+                       }
+                       if ( (find = Expr.find[ type ]) ) {
+                               // Search, expanding context for leading sibling combinators
+                               if ( (seed = find(
+                                       token.matches[0].replace( runescape, funescape ),
+                                       rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+                               )) ) {
+
+                                       // If seed is empty or no tokens remain, we can return early
+                                       tokens.splice( i, 1 );
+                                       selector = seed.length && toSelector( tokens );
+                                       if ( !selector ) {
+                                               push.apply( results, seed );
+                                               return results;
+                                       }
+
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       // Compile and execute a filtering function if one is not provided
+       // Provide `match` to avoid retokenization if we modified the selector above
+       ( compiled || compile( selector, match ) )(
+               seed,
+               context,
+               !documentIsHTML,
+               results,
+               rsibling.test( selector ) && testContext( context.parentNode ) || context
+       );
+       return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+       // Should return 1, but returns 4 (following)
+       return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+       div.innerHTML = "<a href='#'></a>";
+       return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+       addHandle( "type|href|height|width", function( elem, name, isXML ) {
+               if ( !isXML ) {
+                       return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+               }
+       });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+       div.innerHTML = "<input/>";
+       div.firstChild.setAttribute( "value", "" );
+       return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+       addHandle( "value", function( elem, name, isXML ) {
+               if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+                       return elem.defaultValue;
+               }
+       });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+       return div.getAttribute("disabled") == null;
+}) ) {
+       addHandle( booleans, function( elem, name, isXML ) {
+               var val;
+               if ( !isXML ) {
+                       return elem[ name ] === true ? name.toLowerCase() :
+                                       (val = elem.getAttributeNode( name )) && val.specified ?
+                                       val.value :
+                               null;
+               }
+       });
+}
+
+// EXPOSE
+if ( typeof define === "function" && define.amd ) {
+       define(function() { return Sizzle; });
+// Sizzle requires that there be a global window in Common-JS like environments
+} else if ( typeof module !== "undefined" && module.exports ) {
+       module.exports = Sizzle;
+} else {
+       window.Sizzle = Sizzle;
+}
+// EXPOSE
+
+})( window );
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/dist/sizzle.min.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/dist/sizzle.min.js
new file mode 100644 (file)
index 0000000..cf4d1a6
--- /dev/null
@@ -0,0 +1,3 @@
+/*! Sizzle v2.2.0-pre | (c) 2008, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),"function"==typeof define&&define.amd?define(function(){return gb}):"undefined"!=typeof module&&module.exports?module.exports=gb:a.Sizzle=gb}(window);
+//# sourceMappingURL=sizzle.min.map
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/dist/sizzle.min.map b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/dist/sizzle.min.map
new file mode 100644 (file)
index 0000000..e39754e
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"file":"sizzle.min.js","sources":["sizzle.js"],"names":["window","i","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","expando","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","hasOwn","hasOwnProperty","arr","pop","push_native","push","slice","indexOf","list","elem","len","length","booleans","whitespace","characterEncoding","identifier","replace","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","apply","call","childNodes","nodeType","e","target","els","j","Sizzle","selector","context","results","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","parentNode","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","toLowerCase","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","value","cacheLength","shift","markFunction","fn","assert","div","createElement","removeChild","addHandle","attrs","handler","split","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","type","name","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","ret","attr","val","undefined","specified","error","msg","Error","uniqueSort","duplicates","detectDuplicates","sortStable","sort","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","last","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","eq","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","prototype","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","concat","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","div1","defaultValue","define","amd","module","exports"],"mappings":";CAUA,SAAWA,GAEX,GAAIC,GACHC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EAAU,SAAW,EAAI,GAAIC,MAC7BC,EAAetB,EAAOa,SACtBU,EAAU,EACVC,EAAO,EACPC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAY,SAAUC,EAAGC,GAIxB,MAHKD,KAAMC,IACVpB,GAAe,GAET,GAIRqB,EAAe,GAAK,GAGpBC,KAAcC,eACdC,KACAC,EAAMD,EAAIC,IACVC,EAAcF,EAAIG,KAClBA,EAAOH,EAAIG,KACXC,EAAQJ,EAAII,MAGZC,EAAU,SAAUC,EAAMC,GAGzB,IAFA,GAAIzC,GAAI,EACP0C,EAAMF,EAAKG,OACAD,EAAJ1C,EAASA,IAChB,GAAKwC,EAAKxC,KAAOyC,EAChB,MAAOzC,EAGT,OAAO,IAGR4C,EAAW,6HAKXC,EAAa,sBAEbC,EAAoB,mCAKpBC,EAAaD,EAAkBE,QAAS,IAAK,MAG7CC,EAAa,MAAQJ,EAAa,KAAOC,EAAoB,OAASD,EAErE,gBAAkBA,EAElB,2DAA6DE,EAAa,OAASF,EACnF,OAEDK,EAAU,KAAOJ,EAAoB,wFAKPG,EAAa,eAM3CE,EAAc,GAAIC,QAAQP,EAAa,IAAK,KAC5CQ,EAAQ,GAAID,QAAQ,IAAMP,EAAa,8BAAgCA,EAAa,KAAM,KAE1FS,EAAS,GAAIF,QAAQ,IAAMP,EAAa,KAAOA,EAAa,KAC5DU,EAAe,GAAIH,QAAQ,IAAMP,EAAa,WAAaA,EAAa,IAAMA,EAAa,KAE3FW,EAAmB,GAAIJ,QAAQ,IAAMP,EAAa,iBAAmBA,EAAa,OAAQ,KAE1FY,EAAU,GAAIL,QAAQF,GACtBQ,EAAc,GAAIN,QAAQ,IAAML,EAAa,KAE7CY,GACCC,GAAM,GAAIR,QAAQ,MAAQN,EAAoB,KAC9Ce,MAAS,GAAIT,QAAQ,QAAUN,EAAoB,KACnDgB,IAAO,GAAIV,QAAQ,KAAON,EAAkBE,QAAS,IAAK,MAAS,KACnEe,KAAQ,GAAIX,QAAQ,IAAMH,GAC1Be,OAAU,GAAIZ,QAAQ,IAAMF,GAC5Be,MAAS,GAAIb,QAAQ,yDAA2DP,EAC/E,+BAAiCA,EAAa,cAAgBA,EAC9D,aAAeA,EAAa,SAAU,KACvCqB,KAAQ,GAAId,QAAQ,OAASR,EAAW,KAAM,KAG9CuB,aAAgB,GAAIf,QAAQ,IAAMP,EAAa,mDAC9CA,EAAa,mBAAqBA,EAAa,mBAAoB,MAGrEuB,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,GAAW,OACXC,GAAU,QAGVC,GAAY,GAAItB,QAAQ,qBAAuBP,EAAa,MAAQA,EAAa,OAAQ,MACzF8B,GAAY,SAAUC,EAAGC,EAASC,GACjC,GAAIC,GAAO,KAAOF,EAAU,KAI5B,OAAOE,KAASA,GAAQD,EACvBD,EACO,EAAPE,EAECC,OAAOC,aAAcF,EAAO,OAE5BC,OAAOC,aAAcF,GAAQ,GAAK,MAAe,KAAPA,EAAe,QAO5DG,GAAgB,WACfvE,IAIF,KACC0B,EAAK8C,MACHjD,EAAMI,EAAM8C,KAAM/D,EAAagE,YAChChE,EAAagE,YAIdnD,EAAKb,EAAagE,WAAW1C,QAAS2C,SACrC,MAAQC,IACTlD,GAAS8C,MAAOjD,EAAIS,OAGnB,SAAU6C,EAAQC,GACjBrD,EAAY+C,MAAOK,EAAQlD,EAAM8C,KAAKK,KAKvC,SAAUD,EAAQC,GACjB,GAAIC,GAAIF,EAAO7C,OACd3C,EAAI,CAEL,OAASwF,EAAOE,KAAOD,EAAIzF,MAC3BwF,EAAO7C,OAAS+C,EAAI,IAKvB,QAASC,IAAQC,EAAUC,EAASC,EAASC,GAC5C,GAAIC,GAAOvD,EAAMwD,EAAGX,EAEnBtF,EAAGkG,EAAQC,EAAKC,EAAKC,EAAYC,CAUlC,KAROT,EAAUA,EAAQU,eAAiBV,EAAUxE,KAAmBT,GACtED,EAAakF,GAGdA,EAAUA,GAAWjF,EACrBkF,EAAUA,MACVR,EAAWO,EAAQP,SAEM,gBAAbM,KAA0BA,GACxB,IAAbN,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,MAAOQ,EAGR,KAAMC,GAAQjF,EAAiB,CAG9B,GAAkB,KAAbwE,IAAoBU,EAAQzB,EAAWiC,KAAMZ,IAEjD,GAAMK,EAAID,EAAM,IACf,GAAkB,IAAbV,EAAiB,CAIrB,GAHA7C,EAAOoD,EAAQY,eAAgBR,IAG1BxD,IAAQA,EAAKiE,WAQjB,MAAOZ,EALP,IAAKrD,EAAKkE,KAAOV,EAEhB,MADAH,GAAQzD,KAAMI,GACPqD,MAOT,IAAKD,EAAQU,gBAAkB9D,EAAOoD,EAAQU,cAAcE,eAAgBR,KAC3E/E,EAAU2E,EAASpD,IAAUA,EAAKkE,KAAOV,EAEzC,MADAH,GAAQzD,KAAMI,GACPqD,MAKH,CAAA,GAAKE,EAAM,GAEjB,MADA3D,GAAK8C,MAAOW,EAASD,EAAQe,qBAAsBhB,IAC5CE,CAGD,KAAMG,EAAID,EAAM,KAAO/F,EAAQ4G,uBAErC,MADAxE,GAAK8C,MAAOW,EAASD,EAAQgB,uBAAwBZ,IAC9CH,EAKT,GAAK7F,EAAQ6G,OAAS/F,IAAcA,EAAUgG,KAAMnB,IAAc,CASjE,GARAQ,EAAMD,EAAMhF,EACZkF,EAAaR,EACbS,EAA2B,IAAbhB,GAAkBM,EAMd,IAAbN,GAAqD,WAAnCO,EAAQmB,SAASC,cAA6B,CACpEf,EAAS7F,EAAUuF,IAEbO,EAAMN,EAAQqB,aAAa,OAChCd,EAAMD,EAAInD,QAASyB,GAAS,QAE5BoB,EAAQsB,aAAc,KAAMf,GAE7BA,EAAM,QAAUA,EAAM,MAEtBpG,EAAIkG,EAAOvD,MACX,OAAQ3C,IACPkG,EAAOlG,GAAKoG,EAAMgB,GAAYlB,EAAOlG,GAEtCqG,GAAa7B,GAASuC,KAAMnB,IAAcyB,GAAaxB,EAAQa,aAAgBb,EAC/ES,EAAcJ,EAAOoB,KAAK,KAG3B,GAAKhB,EACJ,IAIC,MAHAjE,GAAK8C,MAAOW,EACXO,EAAWkB,iBAAkBjB,IAEvBR,EACN,MAAM0B,IACN,QACKrB,GACLN,EAAQ4B,gBAAgB,QAQ7B,MAAOlH,GAAQqF,EAAS5C,QAASK,EAAO,MAAQwC,EAASC,EAASC,GASnE,QAAStE,MACR,GAAIiG,KAEJ,SAASC,GAAOC,EAAKC,GAMpB,MAJKH,GAAKrF,KAAMuF,EAAM,KAAQ1H,EAAK4H,mBAE3BH,GAAOD,EAAKK,SAEZJ,EAAOC,EAAM,KAAQC,EAE9B,MAAOF,GAOR,QAASK,IAAcC,GAEtB,MADAA,GAAI9G,IAAY,EACT8G,EAOR,QAASC,IAAQD,GAChB,GAAIE,GAAMvH,EAASwH,cAAc,MAEjC,KACC,QAASH,EAAIE,GACZ,MAAO5C,GACR,OAAO,EACN,QAEI4C,EAAIzB,YACRyB,EAAIzB,WAAW2B,YAAaF,GAG7BA,EAAM,MASR,QAASG,IAAWC,EAAOC,GAC1B,GAAItG,GAAMqG,EAAME,MAAM,KACrBzI,EAAIuI,EAAM5F,MAEX,OAAQ3C,IACPE,EAAKwI,WAAYxG,EAAIlC,IAAOwI,EAU9B,QAASG,IAAc9G,EAAGC,GACzB,GAAI8G,GAAM9G,GAAKD,EACdgH,EAAOD,GAAsB,IAAf/G,EAAEyD,UAAiC,IAAfxD,EAAEwD,YAChCxD,EAAEgH,aAAe/G,KACjBF,EAAEiH,aAAe/G,EAGtB,IAAK8G,EACJ,MAAOA,EAIR,IAAKD,EACJ,MAASA,EAAMA,EAAIG,YAClB,GAAKH,IAAQ9G,EACZ,MAAO,EAKV,OAAOD,GAAI,EAAI,GAOhB,QAASmH,IAAmBC,GAC3B,MAAO,UAAUxG,GAChB,GAAIyG,GAAOzG,EAAKuE,SAASC,aACzB,OAAgB,UAATiC,GAAoBzG,EAAKwG,OAASA,GAQ3C,QAASE,IAAoBF,GAC5B,MAAO,UAAUxG,GAChB,GAAIyG,GAAOzG,EAAKuE,SAASC,aACzB,QAAiB,UAATiC,GAA6B,WAATA,IAAsBzG,EAAKwG,OAASA,GAQlE,QAASG,IAAwBnB,GAChC,MAAOD,IAAa,SAAUqB,GAE7B,MADAA,IAAYA,EACLrB,GAAa,SAAUjC,EAAM9E,GACnC,GAAIyE,GACH4D,EAAerB,KAAQlC,EAAKpD,OAAQ0G,GACpCrJ,EAAIsJ,EAAa3G,MAGlB,OAAQ3C,IACF+F,EAAOL,EAAI4D,EAAatJ,MAC5B+F,EAAKL,KAAOzE,EAAQyE,GAAKK,EAAKL,SAYnC,QAAS2B,IAAaxB,GACrB,MAAOA,IAAmD,mBAAjCA,GAAQe,sBAAwCf,EAI1E5F,EAAU0F,GAAO1F,WAOjBG,EAAQuF,GAAOvF,MAAQ,SAAUqC,GAGhC,GAAI8G,GAAkB9G,IAASA,EAAK8D,eAAiB9D,GAAM8G,eAC3D,OAAOA,GAA+C,SAA7BA,EAAgBvC,UAAsB,GAQhErG,EAAcgF,GAAOhF,YAAc,SAAU6I,GAC5C,GAAIC,GAAYC,EACfC,EAAMH,EAAOA,EAAKjD,eAAiBiD,EAAOnI,CAG3C,OAAKsI,KAAQ/I,GAA6B,IAAjB+I,EAAIrE,UAAmBqE,EAAIJ,iBAKpD3I,EAAW+I,EACX9I,EAAU8I,EAAIJ,gBACdG,EAASC,EAAIC,YAMRF,GAAUA,IAAWA,EAAOG,MAE3BH,EAAOI,iBACXJ,EAAOI,iBAAkB,SAAU5E,IAAe,GACvCwE,EAAOK,aAClBL,EAAOK,YAAa,WAAY7E,KAMlCpE,GAAkBV,EAAOuJ,GAQzB1J,EAAQgD,WAAaiF,GAAO,SAAUC,GAErC,MADAA,GAAI6B,UAAY,KACR7B,EAAIjB,aAAa,eAO1BjH,EAAQ2G,qBAAuBsB,GAAO,SAAUC,GAE/C,MADAA,GAAI8B,YAAaN,EAAIO,cAAc,MAC3B/B,EAAIvB,qBAAqB,KAAKjE,SAIvC1C,EAAQ4G,uBAAyBvC,EAAQyC,KAAM4C,EAAI9C,wBAMnD5G,EAAQkK,QAAUjC,GAAO,SAAUC,GAElC,MADAtH,GAAQoJ,YAAa9B,GAAMxB,GAAKxF,GACxBwI,EAAIS,oBAAsBT,EAAIS,kBAAmBjJ,GAAUwB,SAI/D1C,EAAQkK,SACZjK,EAAKmK,KAAS,GAAI,SAAU1D,EAAId,GAC/B,GAAuC,mBAA3BA,GAAQY,gBAAkC3F,EAAiB,CACtE,GAAImF,GAAIJ,EAAQY,eAAgBE,EAGhC,OAAOV,IAAKA,EAAES,YAAeT,QAG/B/F,EAAKoK,OAAW,GAAI,SAAU3D,GAC7B,GAAI4D,GAAS5D,EAAG3D,QAAS0B,GAAWC,GACpC,OAAO,UAAUlC,GAChB,MAAOA,GAAKyE,aAAa,QAAUqD,YAM9BrK,GAAKmK,KAAS,GAErBnK,EAAKoK,OAAW,GAAK,SAAU3D,GAC9B,GAAI4D,GAAS5D,EAAG3D,QAAS0B,GAAWC,GACpC,OAAO,UAAUlC,GAChB,GAAI+G,GAAwC,mBAA1B/G,GAAK+H,kBAAoC/H,EAAK+H,iBAAiB,KACjF,OAAOhB,IAAQA,EAAK3B,QAAU0C,KAMjCrK,EAAKmK,KAAU,IAAIpK,EAAQ2G,qBAC1B,SAAU6D,EAAK5E,GACd,MAA6C,mBAAjCA,GAAQe,qBACZf,EAAQe,qBAAsB6D,GAG1BxK,EAAQ6G,IACZjB,EAAQ0B,iBAAkBkD,GAD3B,QAKR,SAAUA,EAAK5E,GACd,GAAIpD,GACHiI,KACA1K,EAAI,EAEJ8F,EAAUD,EAAQe,qBAAsB6D,EAGzC,IAAa,MAARA,EAAc,CAClB,MAAShI,EAAOqD,EAAQ9F,KACA,IAAlByC,EAAK6C,UACToF,EAAIrI,KAAMI,EAIZ,OAAOiI,GAER,MAAO5E,IAIT5F,EAAKmK,KAAY,MAAIpK,EAAQ4G,wBAA0B,SAAUmD,EAAWnE,GAC3E,MAAK/E,GACG+E,EAAQgB,uBAAwBmD,GADxC,QAWDhJ,KAOAD,MAEMd,EAAQ6G,IAAMxC,EAAQyC,KAAM4C,EAAIpC,qBAGrCW,GAAO,SAAUC,GAMhBtH,EAAQoJ,YAAa9B,GAAMwC,UAAY,UAAYxJ,EAAU,qBAC3CA,EAAU,iEAOvBgH,EAAIZ,iBAAiB,wBAAwB5E,QACjD5B,EAAUsB,KAAM,SAAWQ,EAAa,gBAKnCsF,EAAIZ,iBAAiB,cAAc5E,QACxC5B,EAAUsB,KAAM,MAAQQ,EAAa,aAAeD,EAAW,KAI1DuF,EAAIZ,iBAAkB,QAAUpG,EAAU,MAAOwB,QACtD5B,EAAUsB,KAAK,MAMV8F,EAAIZ,iBAAiB,YAAY5E,QACtC5B,EAAUsB,KAAK,YAMV8F,EAAIZ,iBAAkB,KAAOpG,EAAU,MAAOwB,QACnD5B,EAAUsB,KAAK,cAIjB6F,GAAO,SAAUC,GAGhB,GAAIyC,GAAQjB,EAAIvB,cAAc,QAC9BwC,GAAMzD,aAAc,OAAQ,UAC5BgB,EAAI8B,YAAaW,GAAQzD,aAAc,OAAQ,KAI1CgB,EAAIZ,iBAAiB,YAAY5E,QACrC5B,EAAUsB,KAAM,OAASQ,EAAa,eAKjCsF,EAAIZ,iBAAiB,YAAY5E,QACtC5B,EAAUsB,KAAM,WAAY,aAI7B8F,EAAIZ,iBAAiB,QACrBxG,EAAUsB,KAAK,YAIXpC,EAAQ4K,gBAAkBvG,EAAQyC,KAAO9F,EAAUJ,EAAQI,SAChEJ,EAAQiK,uBACRjK,EAAQkK,oBACRlK,EAAQmK,kBACRnK,EAAQoK,qBAER/C,GAAO,SAAUC,GAGhBlI,EAAQiL,kBAAoBjK,EAAQmE,KAAM+C,EAAK,OAI/ClH,EAAQmE,KAAM+C,EAAK,aACnBnH,EAAcqB,KAAM,KAAMa,KAI5BnC,EAAYA,EAAU4B,QAAU,GAAIS,QAAQrC,EAAUuG,KAAK,MAC3DtG,EAAgBA,EAAc2B,QAAU,GAAIS,QAAQpC,EAAcsG,KAAK,MAIvEmC,EAAanF,EAAQyC,KAAMlG,EAAQsK,yBAKnCjK,EAAWuI,GAAcnF,EAAQyC,KAAMlG,EAAQK,UAC9C,SAAUW,EAAGC,GACZ,GAAIsJ,GAAuB,IAAfvJ,EAAEyD,SAAiBzD,EAAE0H,gBAAkB1H,EAClDwJ,EAAMvJ,GAAKA,EAAE4E,UACd,OAAO7E,KAAMwJ,MAAWA,GAAwB,IAAjBA,EAAI/F,YAClC8F,EAAMlK,SACLkK,EAAMlK,SAAUmK,GAChBxJ,EAAEsJ,yBAA8D,GAAnCtJ,EAAEsJ,wBAAyBE,MAG3D,SAAUxJ,EAAGC,GACZ,GAAKA,EACJ,MAASA,EAAIA,EAAE4E,WACd,GAAK5E,IAAMD,EACV,OAAO,CAIV,QAAO,GAOTD,EAAY6H,EACZ,SAAU5H,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,MADApB,IAAe,EACR,CAIR,IAAI4K,IAAWzJ,EAAEsJ,yBAA2BrJ,EAAEqJ,uBAC9C,OAAKG,GACGA,GAIRA,GAAYzJ,EAAE0E,eAAiB1E,MAAUC,EAAEyE,eAAiBzE,GAC3DD,EAAEsJ,wBAAyBrJ,GAG3B,EAGc,EAAVwJ,IACFrL,EAAQsL,cAAgBzJ,EAAEqJ,wBAAyBtJ,KAAQyJ,EAGxDzJ,IAAM8H,GAAO9H,EAAE0E,gBAAkBlF,GAAgBH,EAASG,EAAcQ,GACrE,GAEHC,IAAM6H,GAAO7H,EAAEyE,gBAAkBlF,GAAgBH,EAASG,EAAcS,GACrE,EAIDrB,EACJ8B,EAAS9B,EAAWoB,GAAMU,EAAS9B,EAAWqB,GAChD,EAGe,EAAVwJ,EAAc,GAAK,IAE3B,SAAUzJ,EAAGC,GAEZ,GAAKD,IAAMC,EAEV,MADApB,IAAe,EACR,CAGR,IAAIkI,GACH5I,EAAI,EACJwL,EAAM3J,EAAE6E,WACR2E,EAAMvJ,EAAE4E,WACR+E,GAAO5J,GACP6J,GAAO5J,EAGR,KAAM0J,IAAQH,EACb,MAAOxJ,KAAM8H,EAAM,GAClB7H,IAAM6H,EAAM,EACZ6B,EAAM,GACNH,EAAM,EACN5K,EACE8B,EAAS9B,EAAWoB,GAAMU,EAAS9B,EAAWqB,GAChD,CAGK,IAAK0J,IAAQH,EACnB,MAAO1C,IAAc9G,EAAGC,EAIzB8G,GAAM/G,CACN,OAAS+G,EAAMA,EAAIlC,WAClB+E,EAAGE,QAAS/C,EAEbA,GAAM9G,CACN,OAAS8G,EAAMA,EAAIlC,WAClBgF,EAAGC,QAAS/C,EAIb,OAAQ6C,EAAGzL,KAAO0L,EAAG1L,GACpBA,GAGD,OAAOA,GAEN2I,GAAc8C,EAAGzL,GAAI0L,EAAG1L,IAGxByL,EAAGzL,KAAOqB,EAAe,GACzBqK,EAAG1L,KAAOqB,EAAe,EACzB,GAGKsI,GA1WC/I,GA6WT+E,GAAO1E,QAAU,SAAU2K,EAAMC,GAChC,MAAOlG,IAAQiG,EAAM,KAAM,KAAMC,IAGlClG,GAAOkF,gBAAkB,SAAUpI,EAAMmJ,GASxC,IAPOnJ,EAAK8D,eAAiB9D,KAAW7B,GACvCD,EAAa8B,GAIdmJ,EAAOA,EAAK5I,QAASQ,EAAkB,aAElCvD,EAAQ4K,kBAAmB/J,GAC5BE,GAAkBA,EAAc+F,KAAM6E,IACtC7K,GAAkBA,EAAUgG,KAAM6E,IAErC,IACC,GAAIE,GAAM7K,EAAQmE,KAAM3C,EAAMmJ,EAG9B,IAAKE,GAAO7L,EAAQiL,mBAGlBzI,EAAK7B,UAAuC,KAA3B6B,EAAK7B,SAAS0E,SAChC,MAAOwG,GAEP,MAAOvG,IAGV,MAAOI,IAAQiG,EAAMhL,EAAU,MAAQ6B,IAASE,OAAS,GAG1DgD,GAAOzE,SAAW,SAAU2E,EAASpD,GAKpC,OAHOoD,EAAQU,eAAiBV,KAAcjF,GAC7CD,EAAakF,GAEP3E,EAAU2E,EAASpD,IAG3BkD,GAAOoG,KAAO,SAAUtJ,EAAMyG,IAEtBzG,EAAK8D,eAAiB9D,KAAW7B,GACvCD,EAAa8B,EAGd,IAAIwF,GAAK/H,EAAKwI,WAAYQ,EAAKjC,eAE9B+E,EAAM/D,GAAMjG,EAAOoD,KAAMlF,EAAKwI,WAAYQ,EAAKjC,eAC9CgB,EAAIxF,EAAMyG,GAAOpI,GACjBmL,MAEF,OAAeA,UAARD,EACNA,EACA/L,EAAQgD,aAAenC,EACtB2B,EAAKyE,aAAcgC,IAClB8C,EAAMvJ,EAAK+H,iBAAiBtB,KAAU8C,EAAIE,UAC1CF,EAAInE,MACJ,MAGJlC,GAAOwG,MAAQ,SAAUC,GACxB,KAAM,IAAIC,OAAO,0CAA4CD,IAO9DzG,GAAO2G,WAAa,SAAUxG,GAC7B,GAAIrD,GACH8J,KACA7G,EAAI,EACJ1F,EAAI,CAOL,IAJAU,GAAgBT,EAAQuM,iBACxB/L,GAAaR,EAAQwM,YAAc3G,EAAQxD,MAAO,GAClDwD,EAAQ4G,KAAM9K,GAETlB,EAAe,CACnB,MAAS+B,EAAOqD,EAAQ9F,KAClByC,IAASqD,EAAS9F,KACtB0F,EAAI6G,EAAWlK,KAAMrC,GAGvB,OAAQ0F,IACPI,EAAQ6G,OAAQJ,EAAY7G,GAAK,GAQnC,MAFAjF,GAAY,KAELqF,GAOR3F,EAAUwF,GAAOxF,QAAU,SAAUsC,GACpC,GAAI+G,GACHsC,EAAM,GACN9L,EAAI,EACJsF,EAAW7C,EAAK6C,QAEjB,IAAMA,GAMC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAGjE,GAAiC,gBAArB7C,GAAKmK,YAChB,MAAOnK,GAAKmK,WAGZ,KAAMnK,EAAOA,EAAKoK,WAAYpK,EAAMA,EAAOA,EAAKsG,YAC/C+C,GAAO3L,EAASsC,OAGZ,IAAkB,IAAb6C,GAA+B,IAAbA,EAC7B,MAAO7C,GAAKqK,cAhBZ,OAAStD,EAAO/G,EAAKzC,KAEpB8L,GAAO3L,EAASqJ,EAkBlB,OAAOsC,IAGR5L,EAAOyF,GAAOoH,WAGbjF,YAAa,GAEbkF,aAAchF,GAEdhC,MAAOrC,EAEP+E,cAEA2B,QAEA4C,UACCC,KAAOC,IAAK,aAAcC,OAAO,GACjCC,KAAOF,IAAK,cACZG,KAAOH,IAAK,kBAAmBC,OAAO,GACtCG,KAAOJ,IAAK,oBAGbK,WACCzJ,KAAQ,SAAUiC,GAUjB,MATAA,GAAM,GAAKA,EAAM,GAAGhD,QAAS0B,GAAWC,IAGxCqB,EAAM,IAAOA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAM,IAAKhD,QAAS0B,GAAWC,IAExD,OAAbqB,EAAM,KACVA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAGtBA,EAAM1D,MAAO,EAAG,IAGxB2B,MAAS,SAAU+B,GA6BlB,MAlBAA,GAAM,GAAKA,EAAM,GAAGiB,cAEY,QAA3BjB,EAAM,GAAG1D,MAAO,EAAG,IAEjB0D,EAAM,IACXL,GAAOwG,MAAOnG,EAAM,IAKrBA,EAAM,KAAQA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAmB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACzFA,EAAM,KAAUA,EAAM,GAAKA,EAAM,IAAqB,QAAbA,EAAM,KAGpCA,EAAM,IACjBL,GAAOwG,MAAOnG,EAAM,IAGdA,GAGRhC,OAAU,SAAUgC,GACnB,GAAIyH,GACHC,GAAY1H,EAAM,IAAMA,EAAM,EAE/B,OAAKrC,GAAiB,MAAEoD,KAAMf,EAAM,IAC5B,MAIHA,EAAM,GACVA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAGxB0H,GAAYjK,EAAQsD,KAAM2G,KAEpCD,EAASpN,EAAUqN,GAAU,MAE7BD,EAASC,EAASnL,QAAS,IAAKmL,EAAS/K,OAAS8K,GAAWC,EAAS/K,UAGvEqD,EAAM,GAAKA,EAAM,GAAG1D,MAAO,EAAGmL,GAC9BzH,EAAM,GAAK0H,EAASpL,MAAO,EAAGmL,IAIxBzH,EAAM1D,MAAO,EAAG,MAIzBgI,QAECxG,IAAO,SAAU6J,GAChB,GAAI3G,GAAW2G,EAAiB3K,QAAS0B,GAAWC,IAAYsC,aAChE,OAA4B,MAArB0G,EACN,WAAa,OAAO,GACpB,SAAUlL,GACT,MAAOA,GAAKuE,UAAYvE,EAAKuE,SAASC,gBAAkBD,IAI3DnD,MAAS,SAAUmG,GAClB,GAAI4D,GAAUpM,EAAYwI,EAAY,IAEtC,OAAO4D,KACLA,EAAU,GAAIxK,QAAQ,MAAQP,EAAa,IAAMmH,EAAY,IAAMnH,EAAa,SACjFrB,EAAYwI,EAAW,SAAUvH,GAChC,MAAOmL,GAAQ7G,KAAgC,gBAAnBtE,GAAKuH,WAA0BvH,EAAKuH,WAA0C,mBAAtBvH,GAAKyE,cAAgCzE,EAAKyE,aAAa,UAAY,OAI1JnD,KAAQ,SAAUmF,EAAM2E,EAAUC,GACjC,MAAO,UAAUrL,GAChB,GAAIsL,GAASpI,GAAOoG,KAAMtJ,EAAMyG,EAEhC,OAAe,OAAV6E,EACgB,OAAbF,EAEFA,GAINE,GAAU,GAEU,MAAbF,EAAmBE,IAAWD,EACvB,OAAbD,EAAoBE,IAAWD,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BC,EAAOxL,QAASuL,GAChC,OAAbD,EAAoBC,GAASC,EAAOxL,QAASuL,GAAU,GAC1C,OAAbD,EAAoBC,GAASC,EAAOzL,OAAQwL,EAAMnL,UAAamL,EAClD,OAAbD,GAAsB,IAAME,EAAO/K,QAASG,EAAa,KAAQ,KAAMZ,QAASuL,GAAU,GAC7E,OAAbD,EAAoBE,IAAWD,GAASC,EAAOzL,MAAO,EAAGwL,EAAMnL,OAAS,KAAQmL,EAAQ,KACxF,IAZO,IAgBV7J,MAAS,SAAUgF,EAAM+E,EAAM3E,EAAU+D,EAAOa,GAC/C,GAAIC,GAAgC,QAAvBjF,EAAK3G,MAAO,EAAG,GAC3B6L,EAA+B,SAArBlF,EAAK3G,MAAO,IACtB8L,EAAkB,YAATJ,CAEV,OAAiB,KAAVZ,GAAwB,IAATa,EAGrB,SAAUxL,GACT,QAASA,EAAKiE,YAGf,SAAUjE,EAAMoD,EAASwI,GACxB,GAAI1G,GAAO2G,EAAY9E,EAAMX,EAAM0F,EAAWC,EAC7CrB,EAAMe,IAAWC,EAAU,cAAgB,kBAC3CzE,EAASjH,EAAKiE,WACdwC,EAAOkF,GAAU3L,EAAKuE,SAASC,cAC/BwH,GAAYJ,IAAQD,CAErB,IAAK1E,EAAS,CAGb,GAAKwE,EAAS,CACb,MAAQf,EAAM,CACb3D,EAAO/G,CACP,OAAS+G,EAAOA,EAAM2D,GACrB,GAAKiB,EAAS5E,EAAKxC,SAASC,gBAAkBiC,EAAyB,IAAlBM,EAAKlE,SACzD,OAAO,CAITkJ,GAAQrB,EAAe,SAATlE,IAAoBuF,GAAS,cAE5C,OAAO,EAMR,GAHAA,GAAUL,EAAUzE,EAAOmD,WAAanD,EAAOgF,WAG1CP,GAAWM,EAAW,CAE1BH,EAAa5E,EAAQvI,KAAcuI,EAAQvI,OAC3CwG,EAAQ2G,EAAYrF,OACpBsF,EAAY5G,EAAM,KAAOrG,GAAWqG,EAAM,GAC1CkB,EAAOlB,EAAM,KAAOrG,GAAWqG,EAAM,GACrC6B,EAAO+E,GAAa7E,EAAOrE,WAAYkJ,EAEvC,OAAS/E,IAAS+E,GAAa/E,GAAQA,EAAM2D,KAG3CtE,EAAO0F,EAAY,IAAMC,EAAMrM,MAGhC,GAAuB,IAAlBqH,EAAKlE,YAAoBuD,GAAQW,IAAS/G,EAAO,CACrD6L,EAAYrF,IAAW3H,EAASiN,EAAW1F,EAC3C,YAKI,IAAK4F,IAAa9G,GAASlF,EAAMtB,KAAcsB,EAAMtB,QAAkB8H,KAAWtB,EAAM,KAAOrG,EACrGuH,EAAOlB,EAAM,OAKb,OAAS6B,IAAS+E,GAAa/E,GAAQA,EAAM2D,KAC3CtE,EAAO0F,EAAY,IAAMC,EAAMrM,MAEhC,IAAOiM,EAAS5E,EAAKxC,SAASC,gBAAkBiC,EAAyB,IAAlBM,EAAKlE,aAAsBuD,IAE5E4F,KACHjF,EAAMrI,KAAcqI,EAAMrI,QAAkB8H,IAAW3H,EAASuH,IAG7DW,IAAS/G,GACb,KAQJ,OADAoG,IAAQoF,EACDpF,IAASuE,GAAWvE,EAAOuE,IAAU,GAAKvE,EAAOuE,GAAS,KAKrEpJ,OAAU,SAAU2K,EAAQtF,GAK3B,GAAIuF,GACH3G,EAAK/H,EAAKgD,QAASyL,IAAYzO,EAAK2O,WAAYF,EAAO1H,gBACtDtB,GAAOwG,MAAO,uBAAyBwC,EAKzC,OAAK1G,GAAI9G,GACD8G,EAAIoB,GAIPpB,EAAGtF,OAAS,GAChBiM,GAASD,EAAQA,EAAQ,GAAItF,GACtBnJ,EAAK2O,WAAW5M,eAAgB0M,EAAO1H,eAC7Ce,GAAa,SAAUjC,EAAM9E,GAC5B,GAAI6N,GACHC,EAAU9G,EAAIlC,EAAMsD,GACpBrJ,EAAI+O,EAAQpM,MACb,OAAQ3C,IACP8O,EAAMvM,EAASwD,EAAMgJ,EAAQ/O,IAC7B+F,EAAM+I,KAAW7N,EAAS6N,GAAQC,EAAQ/O,MAG5C,SAAUyC,GACT,MAAOwF,GAAIxF,EAAM,EAAGmM,KAIhB3G,IAIT/E,SAEC8L,IAAOhH,GAAa,SAAUpC,GAI7B,GAAIgF,MACH9E,KACAmJ,EAAU3O,EAASsF,EAAS5C,QAASK,EAAO,MAE7C,OAAO4L,GAAS9N,GACf6G,GAAa,SAAUjC,EAAM9E,EAAS4E,EAASwI,GAC9C,GAAI5L,GACHyM,EAAYD,EAASlJ,EAAM,KAAMsI,MACjCrO,EAAI+F,EAAKpD,MAGV,OAAQ3C,KACDyC,EAAOyM,EAAUlP,MACtB+F,EAAK/F,KAAOiB,EAAQjB,GAAKyC,MAI5B,SAAUA,EAAMoD,EAASwI,GAKxB,MAJAzD,GAAM,GAAKnI,EACXwM,EAASrE,EAAO,KAAMyD,EAAKvI,GAE3B8E,EAAM,GAAK,MACH9E,EAAQ3D,SAInBgN,IAAOnH,GAAa,SAAUpC,GAC7B,MAAO,UAAUnD,GAChB,MAAOkD,IAAQC,EAAUnD,GAAOE,OAAS,KAI3CzB,SAAY8G,GAAa,SAAUoH,GAElC,MADAA,GAAOA,EAAKpM,QAAS0B,GAAWC,IACzB,SAAUlC,GAChB,OAASA,EAAKmK,aAAenK,EAAK4M,WAAalP,EAASsC,IAASF,QAAS6M,GAAS,MAWrFE,KAAQtH,GAAc,SAAUsH,GAM/B,MAJM5L,GAAYqD,KAAKuI,GAAQ,KAC9B3J,GAAOwG,MAAO,qBAAuBmD,GAEtCA,EAAOA,EAAKtM,QAAS0B,GAAWC,IAAYsC,cACrC,SAAUxE,GAChB,GAAI8M,EACJ,GACC,IAAMA,EAAWzO,EAChB2B,EAAK6M,KACL7M,EAAKyE,aAAa,aAAezE,EAAKyE,aAAa,QAGnD,MADAqI,GAAWA,EAAStI,cACbsI,IAAaD,GAA2C,IAAnCC,EAAShN,QAAS+M,EAAO,YAE5C7M,EAAOA,EAAKiE,aAAiC,IAAlBjE,EAAK6C,SAC3C,QAAO,KAKTE,OAAU,SAAU/C,GACnB,GAAI+M,GAAOzP,EAAO0P,UAAY1P,EAAO0P,SAASD,IAC9C,OAAOA,IAAQA,EAAKlN,MAAO,KAAQG,EAAKkE,IAGzC+I,KAAQ,SAAUjN,GACjB,MAAOA,KAAS5B,GAGjB8O,MAAS,SAAUlN,GAClB,MAAOA,KAAS7B,EAASgP,iBAAmBhP,EAASiP,UAAYjP,EAASiP,gBAAkBpN,EAAKwG,MAAQxG,EAAKqN,OAASrN,EAAKsN,WAI7HC,QAAW,SAAUvN,GACpB,MAAOA,GAAKwN,YAAa,GAG1BA,SAAY,SAAUxN,GACrB,MAAOA,GAAKwN,YAAa,GAG1BC,QAAW,SAAUzN,GAGpB,GAAIuE,GAAWvE,EAAKuE,SAASC,aAC7B,OAAqB,UAAbD,KAA0BvE,EAAKyN,SAA0B,WAAblJ,KAA2BvE,EAAK0N,UAGrFA,SAAY,SAAU1N,GAOrB,MAJKA,GAAKiE,YACTjE,EAAKiE,WAAW0J,cAGV3N,EAAK0N,YAAa,GAI1BE,MAAS,SAAU5N,GAKlB,IAAMA,EAAOA,EAAKoK,WAAYpK,EAAMA,EAAOA,EAAKsG,YAC/C,GAAKtG,EAAK6C,SAAW,EACpB,OAAO,CAGT,QAAO,GAGRoE,OAAU,SAAUjH,GACnB,OAAQvC,EAAKgD,QAAe,MAAGT,IAIhC6N,OAAU,SAAU7N,GACnB,MAAO4B,GAAQ0C,KAAMtE,EAAKuE,WAG3B4D,MAAS,SAAUnI,GAClB,MAAO2B,GAAQ2C,KAAMtE,EAAKuE,WAG3BuJ,OAAU,SAAU9N,GACnB,GAAIyG,GAAOzG,EAAKuE,SAASC,aACzB,OAAgB,UAATiC,GAAkC,WAAdzG,EAAKwG,MAA8B,WAATC,GAGtDkG,KAAQ,SAAU3M,GACjB,GAAIsJ,EACJ,OAAuC,UAAhCtJ,EAAKuE,SAASC,eACN,SAAdxE,EAAKwG,OAImC,OAArC8C,EAAOtJ,EAAKyE,aAAa,UAA2C,SAAvB6E,EAAK9E,gBAIvDmG,MAAShE,GAAuB,WAC/B,OAAS,KAGV6E,KAAQ7E,GAAuB,SAAUE,EAAc3G,GACtD,OAASA,EAAS,KAGnB6N,GAAMpH,GAAuB,SAAUE,EAAc3G,EAAQ0G,GAC5D,OAAoB,EAAXA,EAAeA,EAAW1G,EAAS0G,KAG7CoH,KAAQrH,GAAuB,SAAUE,EAAc3G,GAEtD,IADA,GAAI3C,GAAI,EACI2C,EAAJ3C,EAAYA,GAAK,EACxBsJ,EAAajH,KAAMrC,EAEpB,OAAOsJ,KAGRoH,IAAOtH,GAAuB,SAAUE,EAAc3G,GAErD,IADA,GAAI3C,GAAI,EACI2C,EAAJ3C,EAAYA,GAAK,EACxBsJ,EAAajH,KAAMrC,EAEpB,OAAOsJ,KAGRqH,GAAMvH,GAAuB,SAAUE,EAAc3G,EAAQ0G,GAE5D,IADA,GAAIrJ,GAAe,EAAXqJ,EAAeA,EAAW1G,EAAS0G,IACjCrJ,GAAK,GACdsJ,EAAajH,KAAMrC,EAEpB,OAAOsJ,KAGRsH,GAAMxH,GAAuB,SAAUE,EAAc3G,EAAQ0G,GAE5D,IADA,GAAIrJ,GAAe,EAAXqJ,EAAeA,EAAW1G,EAAS0G,IACjCrJ,EAAI2C,GACb2G,EAAajH,KAAMrC,EAEpB,OAAOsJ,OAKVpJ,EAAKgD,QAAa,IAAIhD,EAAKgD,QAAY,EAGvC,KAAMlD,KAAO6Q,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5E/Q,EAAKgD,QAASlD,GAAMgJ,GAAmBhJ,EAExC,KAAMA,KAAOkR,QAAQ,EAAMC,OAAO,GACjCjR,EAAKgD,QAASlD,GAAMmJ,GAAoBnJ,EAIzC,SAAS6O,OACTA,GAAWuC,UAAYlR,EAAKmR,QAAUnR,EAAKgD,QAC3ChD,EAAK2O,WAAa,GAAIA,IAEtBxO,EAAWsF,GAAOtF,SAAW,SAAUuF,EAAU0L,GAChD,GAAIvC,GAAS/I,EAAOuL,EAAQtI,EAC3BuI,EAAOtL,EAAQuL,EACfC,EAAShQ,EAAYkE,EAAW,IAEjC,IAAK8L,EACJ,MAAOJ,GAAY,EAAII,EAAOpP,MAAO,EAGtCkP,GAAQ5L,EACRM,KACAuL,EAAavR,EAAKsN,SAElB,OAAQgE,EAAQ,GAGTzC,IAAY/I,EAAQ1C,EAAOkD,KAAMgL,OACjCxL,IAEJwL,EAAQA,EAAMlP,MAAO0D,EAAM,GAAGrD,SAAY6O,GAE3CtL,EAAO7D,KAAOkP,OAGfxC,GAAU,GAGJ/I,EAAQzC,EAAaiD,KAAMgL,MAChCzC,EAAU/I,EAAM+B,QAChBwJ,EAAOlP,MACNwF,MAAOkH,EAEP9F,KAAMjD,EAAM,GAAGhD,QAASK,EAAO,OAEhCmO,EAAQA,EAAMlP,MAAOyM,EAAQpM,QAI9B,KAAMsG,IAAQ/I,GAAKoK,SACZtE,EAAQrC,EAAWsF,GAAOzC,KAAMgL,KAAcC,EAAYxI,MAC9DjD,EAAQyL,EAAYxI,GAAQjD,MAC7B+I,EAAU/I,EAAM+B,QAChBwJ,EAAOlP,MACNwF,MAAOkH,EACP9F,KAAMA,EACNhI,QAAS+E,IAEVwL,EAAQA,EAAMlP,MAAOyM,EAAQpM,QAI/B,KAAMoM,EACL,MAOF,MAAOuC,GACNE,EAAM7O,OACN6O,EACC7L,GAAOwG,MAAOvG,GAEdlE,EAAYkE,EAAUM,GAAS5D,MAAO,GAGzC,SAAS8E,IAAYmK,GAIpB,IAHA,GAAIvR,GAAI,EACP0C,EAAM6O,EAAO5O,OACbiD,EAAW,GACAlD,EAAJ1C,EAASA,IAChB4F,GAAY2L,EAAOvR,GAAG6H,KAEvB,OAAOjC,GAGR,QAAS+L,IAAe1C,EAAS2C,EAAYC,GAC5C,GAAI1E,GAAMyE,EAAWzE,IACpB2E,EAAmBD,GAAgB,eAAR1E,EAC3B4E,EAAWxQ,GAEZ,OAAOqQ,GAAWxE,MAEjB,SAAU3K,EAAMoD,EAASwI,GACxB,MAAS5L,EAAOA,EAAM0K,GACrB,GAAuB,IAAlB1K,EAAK6C,UAAkBwM,EAC3B,MAAO7C,GAASxM,EAAMoD,EAASwI,IAMlC,SAAU5L,EAAMoD,EAASwI,GACxB,GAAI2D,GAAU1D,EACb2D,GAAa3Q,EAASyQ,EAGvB,IAAK1D,GACJ,MAAS5L,EAAOA,EAAM0K,GACrB,IAAuB,IAAlB1K,EAAK6C,UAAkBwM,IACtB7C,EAASxM,EAAMoD,EAASwI,GAC5B,OAAO,MAKV,OAAS5L,EAAOA,EAAM0K,GACrB,GAAuB,IAAlB1K,EAAK6C,UAAkBwM,EAAmB,CAE9C,GADAxD,EAAa7L,EAAMtB,KAAcsB,EAAMtB,QACjC6Q,EAAW1D,EAAYnB,KAC5B6E,EAAU,KAAQ1Q,GAAW0Q,EAAU,KAAQD,EAG/C,MAAQE,GAAU,GAAMD,EAAU,EAMlC,IAHA1D,EAAYnB,GAAQ8E,EAGdA,EAAU,GAAMhD,EAASxM,EAAMoD,EAASwI,GAC7C,OAAO,IASf,QAAS6D,IAAgBC,GACxB,MAAOA,GAASxP,OAAS,EACxB,SAAUF,EAAMoD,EAASwI,GACxB,GAAIrO,GAAImS,EAASxP,MACjB,OAAQ3C,IACP,IAAMmS,EAASnS,GAAIyC,EAAMoD,EAASwI,GACjC,OAAO,CAGT,QAAO,GAER8D,EAAS,GAGX,QAASC,IAAkBxM,EAAUyM,EAAUvM,GAG9C,IAFA,GAAI9F,GAAI,EACP0C,EAAM2P,EAAS1P,OACJD,EAAJ1C,EAASA,IAChB2F,GAAQC,EAAUyM,EAASrS,GAAI8F,EAEhC,OAAOA,GAGR,QAASwM,IAAUpD,EAAWqD,EAAKjI,EAAQzE,EAASwI,GAOnD,IANA,GAAI5L,GACH+P,KACAxS,EAAI,EACJ0C,EAAMwM,EAAUvM,OAChB8P,EAAgB,MAAPF,EAEE7P,EAAJ1C,EAASA,KACVyC,EAAOyM,EAAUlP,OAChBsK,GAAUA,EAAQ7H,EAAMoD,EAASwI,MACtCmE,EAAanQ,KAAMI,GACdgQ,GACJF,EAAIlQ,KAAMrC,GAMd,OAAOwS,GAGR,QAASE,IAAYlF,EAAW5H,EAAUqJ,EAAS0D,EAAYC,EAAYC,GAO1E,MANKF,KAAeA,EAAYxR,KAC/BwR,EAAaD,GAAYC,IAErBC,IAAeA,EAAYzR,KAC/ByR,EAAaF,GAAYE,EAAYC,IAE/B7K,GAAa,SAAUjC,EAAMD,EAASD,EAASwI,GACrD,GAAIyE,GAAM9S,EAAGyC,EACZsQ,KACAC,KACAC,EAAcnN,EAAQnD,OAGtBuQ,EAAQnN,GAAQqM,GAAkBxM,GAAY,IAAKC,EAAQP,UAAaO,GAAYA,MAGpFsN,GAAY3F,IAAezH,GAASH,EAEnCsN,EADAZ,GAAUY,EAAOH,EAAQvF,EAAW3H,EAASwI,GAG9C+E,EAAanE,EAEZ2D,IAAgB7M,EAAOyH,EAAYyF,GAAeN,MAMjD7M,EACDqN,CAQF,IALKlE,GACJA,EAASkE,EAAWC,EAAYvN,EAASwI,GAIrCsE,EAAa,CACjBG,EAAOR,GAAUc,EAAYJ,GAC7BL,EAAYG,KAAUjN,EAASwI,GAG/BrO,EAAI8S,EAAKnQ,MACT,OAAQ3C,KACDyC,EAAOqQ,EAAK9S,MACjBoT,EAAYJ,EAAQhT,MAASmT,EAAWH,EAAQhT,IAAOyC,IAK1D,GAAKsD,GACJ,GAAK6M,GAAcpF,EAAY,CAC9B,GAAKoF,EAAa,CAEjBE,KACA9S,EAAIoT,EAAWzQ,MACf,OAAQ3C,KACDyC,EAAO2Q,EAAWpT,KAEvB8S,EAAKzQ,KAAO8Q,EAAUnT,GAAKyC,EAG7BmQ,GAAY,KAAOQ,KAAkBN,EAAMzE,GAI5CrO,EAAIoT,EAAWzQ,MACf,OAAQ3C,KACDyC,EAAO2Q,EAAWpT,MACtB8S,EAAOF,EAAarQ,EAASwD,EAAMtD,GAASsQ,EAAO/S,IAAM,KAE1D+F,EAAK+M,KAAUhN,EAAQgN,GAAQrQ,SAOlC2Q,GAAad,GACZc,IAAetN,EACdsN,EAAWzG,OAAQsG,EAAaG,EAAWzQ,QAC3CyQ,GAEGR,EACJA,EAAY,KAAM9M,EAASsN,EAAY/E,GAEvChM,EAAK8C,MAAOW,EAASsN,KAMzB,QAASC,IAAmB9B,GAwB3B,IAvBA,GAAI+B,GAAcrE,EAASvJ,EAC1BhD,EAAM6O,EAAO5O,OACb4Q,EAAkBrT,EAAK+M,SAAUsE,EAAO,GAAGtI,MAC3CuK,EAAmBD,GAAmBrT,EAAK+M,SAAS,KACpDjN,EAAIuT,EAAkB,EAAI,EAG1BE,EAAe9B,GAAe,SAAUlP,GACvC,MAAOA,KAAS6Q,GACdE,GAAkB,GACrBE,EAAkB/B,GAAe,SAAUlP,GAC1C,MAAOF,GAAS+Q,EAAc7Q,GAAS,IACrC+Q,GAAkB,GACrBrB,GAAa,SAAU1P,EAAMoD,EAASwI,GACrC,GAAIvC,IAASyH,IAAqBlF,GAAOxI,IAAYrF,MACnD8S,EAAezN,GAASP,SACxBmO,EAAchR,EAAMoD,EAASwI,GAC7BqF,EAAiBjR,EAAMoD,EAASwI,GAGlC,OADAiF,GAAe,KACRxH,IAGGpJ,EAAJ1C,EAASA,IAChB,GAAMiP,EAAU/O,EAAK+M,SAAUsE,EAAOvR,GAAGiJ,MACxCkJ,GAAaR,GAAcO,GAAgBC,GAAYlD,QACjD,CAIN,GAHAA,EAAU/O,EAAKoK,OAAQiH,EAAOvR,GAAGiJ,MAAO9D,MAAO,KAAMoM,EAAOvR,GAAGiB,SAG1DgO,EAAS9N,GAAY,CAGzB,IADAuE,IAAM1F,EACM0C,EAAJgD,EAASA,IAChB,GAAKxF,EAAK+M,SAAUsE,EAAO7L,GAAGuD,MAC7B,KAGF,OAAOyJ,IACN1S,EAAI,GAAKkS,GAAgBC,GACzBnS,EAAI,GAAKoH,GAERmK,EAAOjP,MAAO,EAAGtC,EAAI,GAAI2T,QAAS9L,MAAgC,MAAzB0J,EAAQvR,EAAI,GAAIiJ,KAAe,IAAM,MAC7EjG,QAASK,EAAO,MAClB4L,EACIvJ,EAAJ1F,GAASqT,GAAmB9B,EAAOjP,MAAOtC,EAAG0F,IACzChD,EAAJgD,GAAW2N,GAAoB9B,EAASA,EAAOjP,MAAOoD,IAClDhD,EAAJgD,GAAW0B,GAAYmK,IAGzBY,EAAS9P,KAAM4M,GAIjB,MAAOiD,IAAgBC,GAGxB,QAASyB,IAA0BC,EAAiBC,GACnD,GAAIC,GAAQD,EAAYnR,OAAS,EAChCqR,EAAYH,EAAgBlR,OAAS,EACrCsR,EAAe,SAAUlO,EAAMF,EAASwI,EAAKvI,EAASoO,GACrD,GAAIzR,GAAMiD,EAAGuJ,EACZkF,EAAe,EACfnU,EAAI,IACJkP,EAAYnJ,MACZqO,KACAC,EAAgB7T,EAEhB0S,EAAQnN,GAAQiO,GAAa9T,EAAKmK,KAAU,IAAG,IAAK6J,GAEpDI,EAAiBhT,GAA4B,MAAjB+S,EAAwB,EAAIE,KAAKC,UAAY,GACzE9R,EAAMwQ,EAAMvQ,MAUb,KARKuR,IACJ1T,EAAmBqF,IAAYjF,GAAYiF,GAOpC7F,IAAM0C,GAA4B,OAApBD,EAAOyQ,EAAMlT,IAAaA,IAAM,CACrD,GAAKgU,GAAavR,EAAO,CACxBiD,EAAI,CACJ,OAASuJ,EAAU4E,EAAgBnO,KAClC,GAAKuJ,EAASxM,EAAMoD,EAASwI,GAAQ,CACpCvI,EAAQzD,KAAMI,EACd,OAGGyR,IACJ5S,EAAUgT,GAKPP,KAEEtR,GAAQwM,GAAWxM,IACxB0R,IAIIpO,GACJmJ,EAAU7M,KAAMI,IAOnB,GADA0R,GAAgBnU,EACX+T,GAAS/T,IAAMmU,EAAe,CAClCzO,EAAI,CACJ,OAASuJ,EAAU6E,EAAYpO,KAC9BuJ,EAASC,EAAWkF,EAAYvO,EAASwI,EAG1C,IAAKtI,EAAO,CAEX,GAAKoO,EAAe,EACnB,MAAQnU,IACAkP,EAAUlP,IAAMoU,EAAWpU,KACjCoU,EAAWpU,GAAKmC,EAAIiD,KAAMU,GAM7BsO,GAAa9B,GAAU8B,GAIxB/R,EAAK8C,MAAOW,EAASsO,GAGhBF,IAAcnO,GAAQqO,EAAWzR,OAAS,GAC5CwR,EAAeL,EAAYnR,OAAW,GAExCgD,GAAO2G,WAAYxG,GAUrB,MALKoO,KACJ5S,EAAUgT,EACV9T,EAAmB6T,GAGbnF,EAGT,OAAO6E,GACN/L,GAAciM,GACdA,EAGF3T,EAAUqF,GAAOrF,QAAU,SAAUsF,EAAUI,GAC9C,GAAIhG,GACH8T,KACAD,KACAnC,EAAS/P,EAAeiE,EAAW,IAEpC,KAAM8L,EAAS,CAER1L,IACLA,EAAQ3F,EAAUuF,IAEnB5F,EAAIgG,EAAMrD,MACV,OAAQ3C,IACP0R,EAAS2B,GAAmBrN,EAAMhG,IAC7B0R,EAAQvQ,GACZ2S,EAAYzR,KAAMqP,GAElBmC,EAAgBxR,KAAMqP,EAKxBA,GAAS/P,EAAeiE,EAAUgO,GAA0BC,EAAiBC,IAG7EpC,EAAO9L,SAAWA,EAEnB,MAAO8L,IAYRnR,EAASoF,GAAOpF,OAAS,SAAUqF,EAAUC,EAASC,EAASC,GAC9D,GAAI/F,GAAGuR,EAAQkD,EAAOxL,EAAMoB,EAC3BqK,EAA+B,kBAAb9O,IAA2BA,EAC7CI,GAASD,GAAQ1F,EAAWuF,EAAW8O,EAAS9O,UAAYA,EAK7D,IAHAE,EAAUA,MAGY,IAAjBE,EAAMrD,OAAe,CAIzB,GADA4O,EAASvL,EAAM,GAAKA,EAAM,GAAG1D,MAAO,GAC/BiP,EAAO5O,OAAS,GAAkC,QAA5B8R,EAAQlD,EAAO,IAAItI,MAC5ChJ,EAAQkK,SAAgC,IAArBtE,EAAQP,UAAkBxE,GAC7CZ,EAAK+M,SAAUsE,EAAO,GAAGtI,MAAS,CAGnC,GADApD,GAAY3F,EAAKmK,KAAS,GAAGoK,EAAMxT,QAAQ,GAAG+B,QAAQ0B,GAAWC,IAAYkB,QAAkB,IACzFA,EACL,MAAOC,EAGI4O,KACX7O,EAAUA,EAAQa,YAGnBd,EAAWA,EAAStD,MAAOiP,EAAOxJ,QAAQF,MAAMlF,QAIjD3C,EAAI2D,EAAwB,aAAEoD,KAAMnB,GAAa,EAAI2L,EAAO5O,MAC5D,OAAQ3C,IAAM,CAIb,GAHAyU,EAAQlD,EAAOvR,GAGVE,EAAK+M,SAAWhE,EAAOwL,EAAMxL,MACjC,KAED,KAAMoB,EAAOnK,EAAKmK,KAAMpB,MAEjBlD,EAAOsE,EACZoK,EAAMxT,QAAQ,GAAG+B,QAAS0B,GAAWC,IACrCH,GAASuC,KAAMwK,EAAO,GAAGtI,OAAU5B,GAAaxB,EAAQa,aAAgBb,IACpE,CAKJ,GAFA0L,EAAO5E,OAAQ3M,EAAG,GAClB4F,EAAWG,EAAKpD,QAAUyE,GAAYmK,IAChC3L,EAEL,MADAvD,GAAK8C,MAAOW,EAASC,GACdD,CAGR,SAeJ,OAPE4O,GAAYpU,EAASsF,EAAUI,IAChCD,EACAF,GACC/E,EACDgF,EACAtB,GAASuC,KAAMnB,IAAcyB,GAAaxB,EAAQa,aAAgBb,GAE5DC,GAMR7F,EAAQwM,WAAatL,EAAQsH,MAAM,IAAIiE,KAAM9K,GAAY0F,KAAK,MAAQnG,EAItElB,EAAQuM,mBAAqB9L,EAG7BC,IAIAV,EAAQsL,aAAerD,GAAO,SAAUyM,GAEvC,MAAuE,GAAhEA,EAAKxJ,wBAAyBvK,EAASwH,cAAc,UAMvDF,GAAO,SAAUC,GAEtB,MADAA,GAAIwC,UAAY,mBAC+B,MAAxCxC,EAAI0E,WAAW3F,aAAa,WAEnCoB,GAAW,yBAA0B,SAAU7F,EAAMyG,EAAM9I,GAC1D,MAAMA,GAAN,OACQqC,EAAKyE,aAAcgC,EAA6B,SAAvBA,EAAKjC,cAA2B,EAAI,KAOjEhH,EAAQgD,YAAeiF,GAAO,SAAUC,GAG7C,MAFAA,GAAIwC,UAAY,WAChBxC,EAAI0E,WAAW1F,aAAc,QAAS,IACY,KAA3CgB,EAAI0E,WAAW3F,aAAc,YAEpCoB,GAAW,QAAS,SAAU7F,EAAMyG,EAAM9I,GACzC,MAAMA,IAAyC,UAAhCqC,EAAKuE,SAASC,cAA7B,OACQxE,EAAKmS,eAOT1M,GAAO,SAAUC,GACtB,MAAuC,OAAhCA,EAAIjB,aAAa,eAExBoB,GAAW1F,EAAU,SAAUH,EAAMyG,EAAM9I,GAC1C,GAAI4L,EACJ,OAAM5L,GAAN,OACQqC,EAAMyG,MAAW,EAAOA,EAAKjC,eACjC+E,EAAMvJ,EAAK+H,iBAAkBtB,KAAW8C,EAAIE,UAC7CF,EAAInE,MACL,OAMmB,kBAAXgN,SAAyBA,OAAOC,IAC3CD,OAAO,WAAa,MAAOlP,MAEE,mBAAXoP,SAA0BA,OAAOC,QACnDD,OAAOC,QAAUrP,GAEjB5F,EAAO4F,OAASA,IAIb5F"}
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/empty.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/empty.js
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/mixed_sort.html b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/mixed_sort.html
new file mode 100644 (file)
index 0000000..162e355
--- /dev/null
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+       <script>var QUnit = parent.QUnit</script>
+       <script src="testinit.js"></script>
+       <script src="../../dist/sizzle.js"></script>
+</head>
+<body>
+       <script>
+               var doc = parent.document,
+                       unframed = [ doc.getElementById( "qunit-fixture" ), doc.body, doc.documentElement ],
+                       framed = Sizzle( "*" );
+
+               window.parent.iframeCallback(
+                       Sizzle.uniqueSort( unframed.concat( framed ) ),
+                       framed.concat( unframed.reverse() ),
+                       "Mixed array was sorted correctly"
+               );
+       </script>
+</body>
+</html>
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/testinit.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/data/testinit.js
new file mode 100644 (file)
index 0000000..1c49c7a
--- /dev/null
@@ -0,0 +1,136 @@
+var fireNative,
+       jQuery = this.jQuery || "jQuery", // For testing .noConflict()
+       $ = this.$ || "$",
+       originaljQuery = jQuery,
+       original$ = $;
+
+(function() {
+       // Config parameter to force basic code paths
+       QUnit.config.urlConfig.push({
+               id: "basic",
+               label: "Bypass optimizations",
+               tooltip: "Force use of the most basic code by disabling native querySelectorAll; contains; compareDocumentPosition"
+       });
+       if ( QUnit.urlParams.basic ) {
+               document.querySelectorAll = null;
+               document.documentElement.contains = null;
+               document.documentElement.compareDocumentPosition = null;
+               // Return array of length two to pass assertion
+               // But support should be false as its not native
+               document.getElementsByClassName = function() { return [ 0, 1 ]; };
+       }
+})();
+
+/**
+ * Returns an array of elements with the given IDs
+ * @example q("main", "foo", "bar")
+ * @result [<div id="main">, <span id="foo">, <input id="bar">]
+ */
+function q() {
+       var r = [],
+               i = 0;
+
+       for ( ; i < arguments.length; i++ ) {
+               r.push( document.getElementById( arguments[i] ) );
+       }
+       return r;
+}
+
+/**
+ * Asserts that a select matches the given IDs
+ * @param {String} a - Assertion name
+ * @param {String} b - Sizzle selector
+ * @param {String} c - Array of ids to construct what is expected
+ * @example t("Check for something", "//[a]", ["foo", "baar"]);
+ * @result returns true if "//[a]" return two elements with the IDs 'foo' and 'baar'
+ */
+function t( a, b, c ) {
+       var f = Sizzle(b),
+               s = "",
+               i = 0;
+
+       for ( ; i < f.length; i++ ) {
+               s += ( s && "," ) + '"' + f[ i ].id + '"';
+       }
+
+       deepEqual(f, q.apply( q, c ), a + " (" + b + ")");
+}
+
+/**
+ * Add random number to url to stop caching
+ *
+ * @example url("data/test.html")
+ * @result "data/test.html?10538358428943"
+ *
+ * @example url("data/test.php?foo=bar")
+ * @result "data/test.php?foo=bar&10538358345554"
+ */
+function url( value ) {
+       return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random()*100000);
+}
+
+var createWithFriesXML = function() {
+       var string = '<?xml version="1.0" encoding="UTF-8"?> \
+       <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" \
+               xmlns:xsd="http://www.w3.org/2001/XMLSchema" \
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> \
+               <soap:Body> \
+                       <jsconf xmlns="http://www.example.com/ns1"> \
+                               <response xmlns:ab="http://www.example.com/ns2"> \
+                                       <meta> \
+                                               <component id="seite1" class="component"> \
+                                                       <properties xmlns:cd="http://www.example.com/ns3"> \
+                                                               <property name="prop1"> \
+                                                                       <thing /> \
+                                                                       <value>1</value> \
+                                                               </property> \
+                                                               <property name="prop2"> \
+                                                                       <thing att="something" /> \
+                                                               </property> \
+                                                               <foo_bar>foo</foo_bar> \
+                                                       </properties> \
+                                               </component> \
+                                       </meta> \
+                               </response> \
+                       </jsconf> \
+               </soap:Body> \
+       </soap:Envelope>';
+
+       return jQuery.parseXML( string );
+};
+
+fireNative = document.createEvent ?
+       function( node, type ) {
+               var event = document.createEvent("HTMLEvents");
+               event.initEvent( type, true, true );
+               node.dispatchEvent( event );
+       } :
+       function( node, type ) {
+               var event = document.createEventObject();
+               node.fireEvent( "on" + type, event );
+       };
+
+function testIframeWithCallback( title, fileName, func ) {
+       test( title, function() {
+               var iframe;
+
+               stop();
+               window.iframeCallback = function() {
+                       var self = this,
+                               args = arguments;
+                       setTimeout(function() {
+                               window.iframeCallback = undefined;
+                               iframe.remove();
+                               func.apply( self, args );
+                               func = function() {};
+                               start();
+                       }, 0 );
+               };
+               iframe = jQuery( "<div/>" ).css({ position: "absolute", width: "500px", left: "-600px" })
+                       .append( jQuery( "<iframe/>" ).attr( "src", url( "./data/" + fileName ) ) )
+                       .appendTo( "#qunit-fixture" );
+       });
+};
+window.iframeCallback = undefined;
+
+function moduleTeardown() {}
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/index.html b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/index.html
new file mode 100644 (file)
index 0000000..402e867
--- /dev/null
@@ -0,0 +1,242 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr" id="html">
+<head>
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+       <title>Sizzle Test Suite</title>
+       <link rel="Stylesheet" media="screen" href="libs/qunit/qunit.css" />
+       <script type="text/javascript" src="libs/qunit/qunit.js"></script>
+       <script type="text/javascript" src="data/testinit.js"></script>
+       <script type="text/javascript" src="jquery.js"></script>
+       <script type="text/javascript" src="../dist/sizzle.js"></script>
+       <script type="text/javascript" src="unit/selector.js"></script>
+       <script type="text/javascript" src="unit/utilities.js"></script>
+       <script type="text/javascript" src="unit/extending.js"></script>
+</head>
+
+<body id="body">
+       <div id="qunit"></div>
+
+       <!-- Test HTML -->
+       <dl id="dl" style="position:absolute;top:-32767px;left:-32767px;width:1px">
+       <div id="qunit-fixture">
+               <p id="firstp">See <a id="simon1" href="http://simon.incutio.com/archive/2003/03/25/#getElementsBySelector" rel="bookmark">this blog entry</a> for more information.</p>
+               <p id="ap">
+                       Here are some [links] in a normal paragraph: <a id="google" href="http://www.google.com/" title="Google!">Google</a>,
+                       <a id="groups" href="http://groups.google.com/" class="GROUPS">Google Groups (Link)</a>.
+                       This link has <code id="code1"><a href="http://smin" id="anchor1">class="blog"</a></code>:
+                       <a href="http://diveintomark.org/" class="blog" hreflang="en" id="mark">diveintomark</a>
+
+               </p>
+               <div id="foo">
+                       <p id="sndp">Everything inside the red border is inside a div with <code>id="foo"</code>.</p>
+                       <p lang="en" id="en">This is a normal link: <a id="yahoo" href="http://www.yahoo.com/" class="blogTest">Yahoo</a></p>
+                       <p id="sap">This link has <code><a href="#2" id="anchor2">class="blog"</a></code>: <a href="http://simon.incutio.com/" class="blog link" id="simon">Simon Willison's Weblog</a></p>
+
+               </div>
+               <div id="nothiddendiv" style="height:1px;background:white;" class="nothiddendiv">
+                       <div id="nothiddendivchild"></div>
+               </div>
+               <span id="name+value"></span>
+               <p id="first">Try them out:</p>
+               <ul id="firstUL"></ul>
+               <ol id="empty"><!-- comment --></ol>
+               <form id="form" action="formaction">
+                       <label for="action" id="label-for">Action:</label>
+                       <input type="text" name="action" value="Test" id="text1" maxlength="30"/>
+                       <input type="text" name="text2" value="Test" id="text2" disabled="disabled"/>
+                       <input type="radio" name="radio1" id="radio1" value="on"/>
+
+                       <input type="radio" name="radio2" id="radio2" checked="checked"/>
+                       <input type="checkbox" name="check" id="check1" checked="checked"/>
+                       <input type="checkbox" id="check2" value="on"/>
+
+                       <input type="hidden" name="hidden" id="hidden1"/>
+                       <input type="text" style="display:none;" name="foo[bar]" id="hidden2"/>
+
+                       <input type="text" id="name" name="name" value="name" />
+                       <input type="search" id="search" name="search" value="search" />
+
+                       <button id="button" name="button" type="button">Button</button>
+
+                       <textarea id="area1" maxlength="30">foobar</textarea>
+
+                       <select name="select1" id="select1">
+                               <option id="option1a" class="emptyopt" value="">Nothing</option>
+                               <option id="option1b" value="1">1</option>
+                               <option id="option1c" value="2">2</option>
+                               <option id="option1d" value="3">3</option>
+                       </select>
+                       <select name="select2" id="select2">
+                               <option id="option2a" class="emptyopt" value="">Nothing</option>
+                               <option id="option2b" value="1">1</option>
+                               <option id="option2c" value="2">2</option>
+                               <option id="option2d" selected="selected" value="3">3</option>
+                       </select>
+                       <select name="select3" id="select3" multiple="multiple">
+                               <option id="option3a" class="emptyopt" value="">Nothing</option>
+                               <option id="option3b" selected="selected" value="1">1</option>
+                               <option id="option3c" selected="selected" value="2">2</option>
+                               <option id="option3d" value="3">3</option>
+                               <option id="option3e">no value</option>
+                       </select>
+                       <select name="select4" id="select4" multiple="multiple">
+                               <optgroup disabled="disabled">
+                                       <option id="option4a" class="emptyopt" value="">Nothing</option>
+                                       <option id="option4b" disabled="disabled" selected="selected" value="1">1</option>
+                                       <option id="option4c" selected="selected" value="2">2</option>
+                               </optgroup>
+                               <option selected="selected" disabled="disabled" id="option4d" value="3">3</option>
+                               <option id="option4e">no value</option>
+                       </select>
+                       <select name="select5" id="select5">
+                               <option id="option5a" value="3">1</option>
+                               <option id="option5b" value="2">2</option>
+                               <option id="option5c" value="1">3</option>
+                       </select>
+
+                       <object id="object1" codebase="stupid">
+                               <param name="p1" value="x1" />
+                               <param name="p2" value="x2" />
+                       </object>
+
+                       <span id="台北Táiběi"></span>
+                       <span id="台北" lang="中文"></span>
+                       <span id="utf8class1" class="台北Táiběi 台北"></span>
+                       <span id="utf8class2" class="台北"></span>
+                       <span id="foo:bar" class="foo:bar"><span id="foo_descendent"></span></span>
+                       <span id="test.foo[5]bar" class="test.foo[5]bar"></span>
+
+                       <foo_bar id="foobar">test element</foo_bar>
+               </form>
+               <b id="floatTest">Float test.</b>
+               <iframe id="iframe" name="iframe"></iframe>
+               <form id="lengthtest">
+                       <input type="text" id="length" name="test"/>
+                       <input type="text" id="idTest" name="id"/>
+               </form>
+               <table id="table"></table>
+
+               <form id="name-tests">
+                       <!-- Inputs with a grouped name attribute. -->
+                       <input name="types[]" id="types_all" type="checkbox" value="all" />
+                       <input name="types[]" id="types_anime" type="checkbox" value="anime" />
+                       <input name="types[]" id="types_movie" type="checkbox" value="movie" />
+               </form>
+
+               <form id="testForm" action="#" method="get">
+                       <textarea name="T3" rows="2" cols="15">?
+Z</textarea>
+                       <input type="hidden" name="H1" value="x" />
+                       <input type="hidden" name="H2" />
+                       <input name="PWD" type="password" value="" />
+                       <input name="T1" type="text" />
+                       <input name="T2" type="text" value="YES" readonly="readonly" />
+                       <input type="checkbox" name="C1" value="1" />
+                       <input type="checkbox" name="C2" />
+                       <input type="radio" name="R1" value="1" />
+                       <input type="radio" name="R1" value="2" />
+                       <input type="text" name="My Name" value="me" />
+                       <input type="reset" name="reset" value="NO" />
+                       <select name="S1">
+                               <option value="abc">ABC</option>
+                               <option value="abc">ABC</option>
+                               <option value="abc">ABC</option>
+                       </select>
+                       <select name="S2" multiple="multiple" size="3">
+                               <option value="abc">ABC</option>
+                               <option value="abc">ABC</option>
+                               <option value="abc">ABC</option>
+                       </select>
+                       <select name="S3">
+                               <option selected="selected">YES</option>
+                       </select>
+                       <select name="S4">
+                               <option value="" selected="selected">NO</option>
+                       </select>
+                       <input type="submit" name="sub1" value="NO" />
+                       <input type="submit" name="sub2" value="NO" />
+                       <input type="image" name="sub3" value="NO" />
+                       <button name="sub4" type="submit" value="NO">NO</button>
+                       <input name="D1" type="text" value="NO" disabled="disabled" />
+                       <input type="checkbox" checked="checked" disabled="disabled" name="D2" value="NO" />
+                       <input type="radio" name="D3" value="NO" checked="checked" disabled="disabled" />
+                       <select name="D4" disabled="disabled">
+                               <option selected="selected" value="NO">NO</option>
+                       </select>
+                       <input id="list-test" type="text" />
+                       <datalist id="datalist">
+                               <option value="option"></option>
+                       </datalist>
+               </form>
+               <div id="moretests">
+                       <form>
+                               <div id="checkedtest" style="display:none;">
+                                       <input type="radio" name="checkedtestradios" checked="checked"/>
+                                       <input type="radio" name="checkedtestradios" value="on"/>
+                                       <input type="checkbox" name="checkedtestcheckboxes" checked="checked"/>
+                                       <input type="checkbox" name="checkedtestcheckboxes" />
+                               </div>
+                       </form>
+                       <div id="nonnodes"><span>hi</span> there <!-- mon ami --></div>
+                       <div id="t2037">
+                               <div><div class="hidden">hidden</div></div>
+                       </div>
+                       <div id="t6652">
+                               <div></div>
+                       </div>
+                       <div id="t12087">
+                               <input type="hidden" id="el12087" data-comma="0,1"/>
+                       </div>
+                       <div id="no-clone-exception"><object><embed></embed></object></div>
+                       <div id="names-group">
+                               <span id="name-is-example" name="example"></span>
+                               <span id="name-is-div" name="div"></span>
+                       </div>
+                       <script id="script-no-src"></script>
+                       <script id="script-src" src="data/empty.js"></script>
+                       <div id="id-name-tests">
+                               <a id="tName1ID" name="tName1"><span></span></a>
+                               <a id="tName2ID" name="tName2"><span></span></a>
+                               <div id="tName1"><span id="tName1-span">C</span></div>
+                       </div>
+               </div>
+
+               <div id="tabindex-tests">
+                       <ol id="listWithTabIndex" tabindex="5">
+                               <li id="foodWithNegativeTabIndex" tabindex="-1">Rice</li>
+                               <li id="foodNoTabIndex">Beans</li>
+                               <li>Blinis</li>
+                               <li>Tofu</li>
+                       </ol>
+
+                       <div id="divWithNoTabIndex">I'm hungry. I should...</div>
+                       <span>...</span><a href="#" id="linkWithNoTabIndex">Eat lots of food</a><span>...</span> |
+                       <span>...</span><a href="#" id="linkWithTabIndex" tabindex="2">Eat a little food</a><span>...</span> |
+                       <span>...</span><a href="#" id="linkWithNegativeTabIndex" tabindex="-1">Eat no food</a><span>...</span>
+                       <span>...</span><a id="linkWithNoHrefWithNoTabIndex">Eat a burger</a><span>...</span>
+                       <span>...</span><a id="linkWithNoHrefWithTabIndex" tabindex="1">Eat some funyuns</a><span>...</span>
+                       <span>...</span><a id="linkWithNoHrefWithNegativeTabIndex" tabindex="-1">Eat some funyuns</a><span>...</span>
+               </div>
+
+               <div id="liveHandlerOrder">
+                       <span id="liveSpan1"><a href="#" id="liveLink1"></a></span>
+                       <span id="liveSpan2"><a href="#" id="liveLink2"></a></span>
+               </div>
+
+               <div id="siblingTest">
+                       <em id="siblingfirst">1</em>
+                       <em id="siblingnext">2</em>
+                       <em id="siblingthird">
+                               <em id="siblingchild">
+                                       <em id="siblinggrandchild">
+                                               <em id="siblinggreatgrandchild"></em>
+                                       </em>
+                               </em>
+                       </em>
+                       <span id="siblingspan"></span>
+               </div>​
+       </div>
+       </dl>
+       <br id="last"/>
+</body>
+</html>
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/jquery.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/jquery.js
new file mode 100644 (file)
index 0000000..86a3305
--- /dev/null
@@ -0,0 +1,9597 @@
+/*!
+ * jQuery JavaScript Library v1.9.1
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-2-4
+ */
+(function( window, undefined ) {
+
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//"use strict";
+var
+       // The deferred used on DOM ready
+       readyList,
+
+       // A central reference to the root jQuery(document)
+       rootjQuery,
+
+       // Support: IE<9
+       // For `typeof node.method` instead of `node.method !== undefined`
+       core_strundefined = typeof undefined,
+
+       // Use the correct document accordingly with window argument (sandbox)
+       document = window.document,
+       location = window.location,
+
+       // Map over jQuery in case of overwrite
+       _jQuery = window.jQuery,
+
+       // Map over the $ in case of overwrite
+       _$ = window.$,
+
+       // [[Class]] -> type pairs
+       class2type = {},
+
+       // List of deleted data cache ids, so we can reuse them
+       core_deletedIds = [],
+
+       core_version = "1.9.1",
+
+       // Save a reference to some core methods
+       core_concat = core_deletedIds.concat,
+       core_push = core_deletedIds.push,
+       core_slice = core_deletedIds.slice,
+       core_indexOf = core_deletedIds.indexOf,
+       core_toString = class2type.toString,
+       core_hasOwn = class2type.hasOwnProperty,
+       core_trim = core_version.trim,
+
+       // Define a local copy of jQuery
+       jQuery = function( selector, context ) {
+               // The jQuery object is actually just the init constructor 'enhanced'
+               return new jQuery.fn.init( selector, context, rootjQuery );
+       },
+
+       // Used for matching numbers
+       core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
+
+       // Used for splitting on whitespace
+       core_rnotwhite = /\S+/g,
+
+       // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
+       rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+       // A simple way to check for HTML strings
+       // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+       // Strict HTML recognition (#11290: must start with <)
+       rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+       // Match a standalone tag
+       rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
+
+       // JSON RegExp
+       rvalidchars = /^[\],:{}\s]*$/,
+       rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+       rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
+       rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
+
+       // Matches dashed string for camelizing
+       rmsPrefix = /^-ms-/,
+       rdashAlpha = /-([\da-z])/gi,
+
+       // Used by jQuery.camelCase as callback to replace()
+       fcamelCase = function( all, letter ) {
+               return letter.toUpperCase();
+       },
+
+       // The ready event handler
+       completed = function( event ) {
+
+               // readyState === "complete" is good enough for us to call the dom ready in oldIE
+               if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
+                       detach();
+                       jQuery.ready();
+               }
+       },
+       // Clean-up method for dom ready events
+       detach = function() {
+               if ( document.addEventListener ) {
+                       document.removeEventListener( "DOMContentLoaded", completed, false );
+                       window.removeEventListener( "load", completed, false );
+
+               } else {
+                       document.detachEvent( "onreadystatechange", completed );
+                       window.detachEvent( "onload", completed );
+               }
+       };
+
+jQuery.fn = jQuery.prototype = {
+       // The current version of jQuery being used
+       jquery: core_version,
+
+       constructor: jQuery,
+       init: function( selector, context, rootjQuery ) {
+               var match, elem;
+
+               // HANDLE: $(""), $(null), $(undefined), $(false)
+               if ( !selector ) {
+                       return this;
+               }
+
+               // Handle HTML strings
+               if ( typeof selector === "string" ) {
+                       if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+                               // Assume that strings that start and end with <> are HTML and skip the regex check
+                               match = [ null, selector, null ];
+
+                       } else {
+                               match = rquickExpr.exec( selector );
+                       }
+
+                       // Match html or make sure no context is specified for #id
+                       if ( match && (match[1] || !context) ) {
+
+                               // HANDLE: $(html) -> $(array)
+                               if ( match[1] ) {
+                                       context = context instanceof jQuery ? context[0] : context;
+
+                                       // scripts is true for back-compat
+                                       jQuery.merge( this, jQuery.parseHTML(
+                                               match[1],
+                                               context && context.nodeType ? context.ownerDocument || context : document,
+                                               true
+                                       ) );
+
+                                       // HANDLE: $(html, props)
+                                       if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+                                               for ( match in context ) {
+                                                       // Properties of context are called as methods if possible
+                                                       if ( jQuery.isFunction( this[ match ] ) ) {
+                                                               this[ match ]( context[ match ] );
+
+                                                       // ...and otherwise set as attributes
+                                                       } else {
+                                                               this.attr( match, context[ match ] );
+                                                       }
+                                               }
+                                       }
+
+                                       return this;
+
+                               // HANDLE: $(#id)
+                               } else {
+                                       elem = document.getElementById( match[2] );
+
+                                       // Check parentNode to catch when Blackberry 4.6 returns
+                                       // nodes that are no longer in the document #6963
+                                       if ( elem && elem.parentNode ) {
+                                               // Handle the case where IE and Opera return items
+                                               // by name instead of ID
+                                               if ( elem.id !== match[2] ) {
+                                                       return rootjQuery.find( selector );
+                                               }
+
+                                               // Otherwise, we inject the element directly into the jQuery object
+                                               this.length = 1;
+                                               this[0] = elem;
+                                       }
+
+                                       this.context = document;
+                                       this.selector = selector;
+                                       return this;
+                               }
+
+                       // HANDLE: $(expr, $(...))
+                       } else if ( !context || context.jquery ) {
+                               return ( context || rootjQuery ).find( selector );
+
+                       // HANDLE: $(expr, context)
+                       // (which is just equivalent to: $(context).find(expr)
+                       } else {
+                               return this.constructor( context ).find( selector );
+                       }
+
+               // HANDLE: $(DOMElement)
+               } else if ( selector.nodeType ) {
+                       this.context = this[0] = selector;
+                       this.length = 1;
+                       return this;
+
+               // HANDLE: $(function)
+               // Shortcut for document ready
+               } else if ( jQuery.isFunction( selector ) ) {
+                       return rootjQuery.ready( selector );
+               }
+
+               if ( selector.selector !== undefined ) {
+                       this.selector = selector.selector;
+                       this.context = selector.context;
+               }
+
+               return jQuery.makeArray( selector, this );
+       },
+
+       // Start with an empty selector
+       selector: "",
+
+       // The default length of a jQuery object is 0
+       length: 0,
+
+       // The number of elements contained in the matched element set
+       size: function() {
+               return this.length;
+       },
+
+       toArray: function() {
+               return core_slice.call( this );
+       },
+
+       // Get the Nth element in the matched element set OR
+       // Get the whole matched element set as a clean array
+       get: function( num ) {
+               return num == null ?
+
+                       // Return a 'clean' array
+                       this.toArray() :
+
+                       // Return just the object
+                       ( num < 0 ? this[ this.length + num ] : this[ num ] );
+       },
+
+       // Take an array of elements and push it onto the stack
+       // (returning the new matched element set)
+       pushStack: function( elems ) {
+
+               // Build a new jQuery matched element set
+               var ret = jQuery.merge( this.constructor(), elems );
+
+               // Add the old object onto the stack (as a reference)
+               ret.prevObject = this;
+               ret.context = this.context;
+
+               // Return the newly-formed element set
+               return ret;
+       },
+
+       // Execute a callback for every element in the matched set.
+       // (You can seed the arguments with an array of args, but this is
+       // only used internally.)
+       each: function( callback, args ) {
+               return jQuery.each( this, callback, args );
+       },
+
+       ready: function( fn ) {
+               // Add the callback
+               jQuery.ready.promise().done( fn );
+
+               return this;
+       },
+
+       slice: function() {
+               return this.pushStack( core_slice.apply( this, arguments ) );
+       },
+
+       first: function() {
+               return this.eq( 0 );
+       },
+
+       last: function() {
+               return this.eq( -1 );
+       },
+
+       eq: function( i ) {
+               var len = this.length,
+                       j = +i + ( i < 0 ? len : 0 );
+               return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+       },
+
+       map: function( callback ) {
+               return this.pushStack( jQuery.map(this, function( elem, i ) {
+                       return callback.call( elem, i, elem );
+               }));
+       },
+
+       end: function() {
+               return this.prevObject || this.constructor(null);
+       },
+
+       // For internal use only.
+       // Behaves like an Array's method, not like a jQuery method.
+       push: core_push,
+       sort: [].sort,
+       splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+       var src, copyIsArray, copy, name, options, 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;
+       }
+
+       // Handle case when target is a string or something (possible in deep copy)
+       if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+               target = {};
+       }
+
+       // extend jQuery itself if only one argument is passed
+       if ( length === i ) {
+               target = this;
+               --i;
+       }
+
+       for ( ; i < length; i++ ) {
+               // Only deal with non-null/undefined values
+               if ( (options = arguments[ i ]) != 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 && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+                                       if ( copyIsArray ) {
+                                               copyIsArray = false;
+                                               clone = src && jQuery.isArray(src) ? src : [];
+
+                                       } else {
+                                               clone = src && jQuery.isPlainObject(src) ? src : {};
+                                       }
+
+                                       // Never move original objects, clone them
+                                       target[ name ] = jQuery.extend( deep, clone, copy );
+
+                               // Don't bring in undefined values
+                               } else if ( copy !== undefined ) {
+                                       target[ name ] = copy;
+                               }
+                       }
+               }
+       }
+
+       // Return the modified object
+       return target;
+};
+
+jQuery.extend({
+       noConflict: function( deep ) {
+               if ( window.$ === jQuery ) {
+                       window.$ = _$;
+               }
+
+               if ( deep && window.jQuery === jQuery ) {
+                       window.jQuery = _jQuery;
+               }
+
+               return jQuery;
+       },
+
+       // Is the DOM ready to be used? Set to true once it occurs.
+       isReady: false,
+
+       // A counter to track how many items to wait for before
+       // the ready event fires. See #6781
+       readyWait: 1,
+
+       // Hold (or release) the ready event
+       holdReady: function( hold ) {
+               if ( hold ) {
+                       jQuery.readyWait++;
+               } else {
+                       jQuery.ready( true );
+               }
+       },
+
+       // Handle when the DOM is ready
+       ready: function( wait ) {
+
+               // Abort if there are pending holds or we're already ready
+               if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+                       return;
+               }
+
+               // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+               if ( !document.body ) {
+                       return setTimeout( jQuery.ready );
+               }
+
+               // Remember that the DOM is ready
+               jQuery.isReady = true;
+
+               // If a normal DOM Ready event fired, decrement, and wait if need be
+               if ( wait !== true && --jQuery.readyWait > 0 ) {
+                       return;
+               }
+
+               // If there are functions bound, to execute
+               readyList.resolveWith( document, [ jQuery ] );
+
+               // Trigger any bound ready events
+               if ( jQuery.fn.trigger ) {
+                       jQuery( document ).trigger("ready").off("ready");
+               }
+       },
+
+       // See test/unit/core.js for details concerning isFunction.
+       // Since version 1.3, DOM methods and functions like alert
+       // aren't supported. They return false on IE (#2968).
+       isFunction: function( obj ) {
+               return jQuery.type(obj) === "function";
+       },
+
+       isArray: Array.isArray || function( obj ) {
+               return jQuery.type(obj) === "array";
+       },
+
+       isWindow: function( obj ) {
+               return obj != null && obj == obj.window;
+       },
+
+       isNumeric: function( obj ) {
+               return !isNaN( parseFloat(obj) ) && isFinite( obj );
+       },
+
+       type: function( obj ) {
+               if ( obj == null ) {
+                       return String( obj );
+               }
+               return typeof obj === "object" || typeof obj === "function" ?
+                       class2type[ core_toString.call(obj) ] || "object" :
+                       typeof obj;
+       },
+
+       isPlainObject: function( obj ) {
+               // Must be an Object.
+               // Because of IE, we also have to check the presence of the constructor property.
+               // Make sure that DOM nodes and window objects don't pass through, as well
+               if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+                       return false;
+               }
+
+               try {
+                       // Not own constructor property must be Object
+                       if ( obj.constructor &&
+                               !core_hasOwn.call(obj, "constructor") &&
+                               !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+                               return false;
+                       }
+               } catch ( e ) {
+                       // IE8,9 Will throw exceptions on certain host objects #9897
+                       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 || core_hasOwn.call( obj, key );
+       },
+
+       isEmptyObject: function( obj ) {
+               var name;
+               for ( name in obj ) {
+                       return false;
+               }
+               return true;
+       },
+
+       error: function( msg ) {
+               throw new Error( msg );
+       },
+
+       // data: string of html
+       // context (optional): If specified, the fragment will be created in this context, defaults to document
+       // keepScripts (optional): If true, will include scripts passed in the html string
+       parseHTML: function( data, context, keepScripts ) {
+               if ( !data || typeof data !== "string" ) {
+                       return null;
+               }
+               if ( typeof context === "boolean" ) {
+                       keepScripts = context;
+                       context = false;
+               }
+               context = context || document;
+
+               var parsed = rsingleTag.exec( data ),
+                       scripts = !keepScripts && [];
+
+               // Single tag
+               if ( parsed ) {
+                       return [ context.createElement( parsed[1] ) ];
+               }
+
+               parsed = jQuery.buildFragment( [ data ], context, scripts );
+               if ( scripts ) {
+                       jQuery( scripts ).remove();
+               }
+               return jQuery.merge( [], parsed.childNodes );
+       },
+
+       parseJSON: function( data ) {
+               // Attempt to parse using the native JSON parser first
+               if ( window.JSON && window.JSON.parse ) {
+                       return window.JSON.parse( data );
+               }
+
+               if ( data === null ) {
+                       return data;
+               }
+
+               if ( typeof data === "string" ) {
+
+                       // Make sure leading/trailing whitespace is removed (IE can't handle it)
+                       data = jQuery.trim( data );
+
+                       if ( data ) {
+                               // Make sure the incoming data is actual JSON
+                               // Logic borrowed from http://json.org/json2.js
+                               if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+                                       .replace( rvalidtokens, "]" )
+                                       .replace( rvalidbraces, "")) ) {
+
+                                       return ( new Function( "return " + data ) )();
+                               }
+                       }
+               }
+
+               jQuery.error( "Invalid JSON: " + data );
+       },
+
+       // Cross-browser xml parsing
+       parseXML: function( data ) {
+               var xml, tmp;
+               if ( !data || typeof data !== "string" ) {
+                       return null;
+               }
+               try {
+                       if ( window.DOMParser ) { // Standard
+                               tmp = new DOMParser();
+                               xml = tmp.parseFromString( data , "text/xml" );
+                       } else { // IE
+                               xml = new ActiveXObject( "Microsoft.XMLDOM" );
+                               xml.async = "false";
+                               xml.loadXML( data );
+                       }
+               } catch( e ) {
+                       xml = undefined;
+               }
+               if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+                       jQuery.error( "Invalid XML: " + data );
+               }
+               return xml;
+       },
+
+       noop: function() {},
+
+       // Evaluates a script in a global context
+       // Workarounds based on findings by Jim Driscoll
+       // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+       globalEval: function( data ) {
+               if ( data && jQuery.trim( data ) ) {
+                       // We use execScript on Internet Explorer
+                       // We use an anonymous function so that context is window
+                       // rather than jQuery in Firefox
+                       ( window.execScript || function( data ) {
+                               window[ "eval" ].call( window, data );
+                       } )( data );
+               }
+       },
+
+       // Convert dashed to camelCase; used by the css and data modules
+       // Microsoft forgot to hump their vendor prefix (#9572)
+       camelCase: function( string ) {
+               return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+       },
+
+       nodeName: function( elem, name ) {
+               return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+       },
+
+       // args is for internal usage only
+       each: function( obj, callback, args ) {
+               var value,
+                       i = 0,
+                       length = obj.length,
+                       isArray = isArraylike( obj );
+
+               if ( args ) {
+                       if ( isArray ) {
+                               for ( ; i < length; i++ ) {
+                                       value = callback.apply( obj[ i ], args );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       } else {
+                               for ( i in obj ) {
+                                       value = callback.apply( obj[ i ], args );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       }
+
+               // A special, fast, case for the most common use of each
+               } else {
+                       if ( isArray ) {
+                               for ( ; i < length; i++ ) {
+                                       value = callback.call( obj[ i ], i, obj[ i ] );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       } else {
+                               for ( i in obj ) {
+                                       value = callback.call( obj[ i ], i, obj[ i ] );
+
+                                       if ( value === false ) {
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return obj;
+       },
+
+       // Use native String.trim function wherever possible
+       trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
+               function( text ) {
+                       return text == null ?
+                               "" :
+                               core_trim.call( text );
+               } :
+
+               // Otherwise use our own trimming functionality
+               function( text ) {
+                       return text == null ?
+                               "" :
+                               ( text + "" ).replace( rtrim, "" );
+               },
+
+       // results is for internal usage only
+       makeArray: function( arr, results ) {
+               var ret = results || [];
+
+               if ( arr != null ) {
+                       if ( isArraylike( Object(arr) ) ) {
+                               jQuery.merge( ret,
+                                       typeof arr === "string" ?
+                                       [ arr ] : arr
+                               );
+                       } else {
+                               core_push.call( ret, arr );
+                       }
+               }
+
+               return ret;
+       },
+
+       inArray: function( elem, arr, i ) {
+               var len;
+
+               if ( arr ) {
+                       if ( core_indexOf ) {
+                               return core_indexOf.call( arr, elem, i );
+                       }
+
+                       len = arr.length;
+                       i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+                       for ( ; i < len; i++ ) {
+                               // Skip accessing in sparse arrays
+                               if ( i in arr && arr[ i ] === elem ) {
+                                       return i;
+                               }
+                       }
+               }
+
+               return -1;
+       },
+
+       merge: function( first, second ) {
+               var l = second.length,
+                       i = first.length,
+                       j = 0;
+
+               if ( typeof l === "number" ) {
+                       for ( ; j < l; j++ ) {
+                               first[ i++ ] = second[ j ];
+                       }
+               } else {
+                       while ( second[j] !== undefined ) {
+                               first[ i++ ] = second[ j++ ];
+                       }
+               }
+
+               first.length = i;
+
+               return first;
+       },
+
+       grep: function( elems, callback, inv ) {
+               var retVal,
+                       ret = [],
+                       i = 0,
+                       length = elems.length;
+               inv = !!inv;
+
+               // Go through the array, only saving the items
+               // that pass the validator function
+               for ( ; i < length; i++ ) {
+                       retVal = !!callback( elems[ i ], i );
+                       if ( inv !== retVal ) {
+                               ret.push( elems[ i ] );
+                       }
+               }
+
+               return ret;
+       },
+
+       // arg is for internal usage only
+       map: function( elems, callback, arg ) {
+               var value,
+                       i = 0,
+                       length = elems.length,
+                       isArray = isArraylike( elems ),
+                       ret = [];
+
+               // Go through the array, translating each of the items to their
+               if ( isArray ) {
+                       for ( ; i < length; i++ ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret[ ret.length ] = value;
+                               }
+                       }
+
+               // Go through every key on the object,
+               } else {
+                       for ( i in elems ) {
+                               value = callback( elems[ i ], i, arg );
+
+                               if ( value != null ) {
+                                       ret[ ret.length ] = value;
+                               }
+                       }
+               }
+
+               // Flatten any nested arrays
+               return core_concat.apply( [], ret );
+       },
+
+       // A global GUID counter for objects
+       guid: 1,
+
+       // Bind a function to a context, optionally partially applying any
+       // arguments.
+       proxy: function( fn, context ) {
+               var args, proxy, tmp;
+
+               if ( typeof context === "string" ) {
+                       tmp = fn[ context ];
+                       context = fn;
+                       fn = tmp;
+               }
+
+               // Quick check to determine if target is callable, in the spec
+               // this throws a TypeError, but we will just return undefined.
+               if ( !jQuery.isFunction( fn ) ) {
+                       return undefined;
+               }
+
+               // Simulated bind
+               args = core_slice.call( arguments, 2 );
+               proxy = function() {
+                       return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
+               };
+
+               // Set the guid of unique handler to the same of original handler, so it can be removed
+               proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+               return proxy;
+       },
+
+       // Multifunctional method to get and set values of a collection
+       // The value/s can optionally be executed if it's a function
+       access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
+               var i = 0,
+                       length = elems.length,
+                       bulk = key == null;
+
+               // Sets many values
+               if ( jQuery.type( key ) === "object" ) {
+                       chainable = true;
+                       for ( i in key ) {
+                               jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+                       }
+
+               // Sets one value
+               } else if ( value !== undefined ) {
+                       chainable = true;
+
+                       if ( !jQuery.isFunction( value ) ) {
+                               raw = true;
+                       }
+
+                       if ( bulk ) {
+                               // Bulk operations run against the entire set
+                               if ( raw ) {
+                                       fn.call( elems, value );
+                                       fn = null;
+
+                               // ...except when executing function values
+                               } else {
+                                       bulk = fn;
+                                       fn = function( elem, key, value ) {
+                                               return bulk.call( jQuery( elem ), value );
+                                       };
+                               }
+                       }
+
+                       if ( fn ) {
+                               for ( ; i < length; i++ ) {
+                                       fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+                               }
+                       }
+               }
+
+               return chainable ?
+                       elems :
+
+                       // Gets
+                       bulk ?
+                               fn.call( elems ) :
+                               length ? fn( elems[0], key ) : emptyGet;
+       },
+
+       now: function() {
+               return ( new Date() ).getTime();
+       }
+});
+
+jQuery.ready.promise = function( obj ) {
+       if ( !readyList ) {
+
+               readyList = jQuery.Deferred();
+
+               // Catch cases where $(document).ready() is called after the browser event has already occurred.
+               // we once tried to use readyState "interactive" here, but it caused issues like the one
+               // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+               if ( document.readyState === "complete" ) {
+                       // Handle it asynchronously to allow scripts the opportunity to delay ready
+                       setTimeout( jQuery.ready );
+
+               // Standards-based browsers support DOMContentLoaded
+               } else if ( document.addEventListener ) {
+                       // Use the handy event callback
+                       document.addEventListener( "DOMContentLoaded", completed, false );
+
+                       // A fallback to window.onload, that will always work
+                       window.addEventListener( "load", completed, false );
+
+               // If IE event model is used
+               } else {
+                       // Ensure firing before onload, maybe late but safe also for iframes
+                       document.attachEvent( "onreadystatechange", completed );
+
+                       // A fallback to window.onload, that will always work
+                       window.attachEvent( "onload", completed );
+
+                       // If IE and not a frame
+                       // continually check to see if the document is ready
+                       var top = false;
+
+                       try {
+                               top = window.frameElement == null && document.documentElement;
+                       } catch(e) {}
+
+                       if ( top && top.doScroll ) {
+                               (function doScrollCheck() {
+                                       if ( !jQuery.isReady ) {
+
+                                               try {
+                                                       // Use the trick by Diego Perini
+                                                       // http://javascript.nwbox.com/IEContentLoaded/
+                                                       top.doScroll("left");
+                                               } catch(e) {
+                                                       return setTimeout( doScrollCheck, 50 );
+                                               }
+
+                                               // detach all dom ready events
+                                               detach();
+
+                                               // and execute any waiting functions
+                                               jQuery.ready();
+                                       }
+                               })();
+                       }
+               }
+       }
+       return readyList.promise( obj );
+};
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+       class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+       var length = obj.length,
+               type = jQuery.type( obj );
+
+       if ( jQuery.isWindow( obj ) ) {
+               return false;
+       }
+
+       if ( obj.nodeType === 1 && length ) {
+               return true;
+       }
+
+       return type === "array" || type !== "function" &&
+               ( length === 0 ||
+               typeof length === "number" && length > 0 && ( length - 1 ) in obj );
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+       var object = optionsCache[ options ] = {};
+       jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
+               object[ flag ] = true;
+       });
+       return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *     options: an optional list of space-separated options that will change how
+ *                     the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *     once:                   will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *     memory:                 will keep track of previous values and will call any callback added
+ *                                     after the list has been fired right away with the latest "memorized"
+ *                                     values (like a Deferred)
+ *
+ *     unique:                 will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *     stopOnFalse:    interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+       // Convert options from String-formatted to Object-formatted if needed
+       // (we check in cache first)
+       options = typeof options === "string" ?
+               ( optionsCache[ options ] || createOptions( options ) ) :
+               jQuery.extend( {}, options );
+
+       var // Flag to know if list is currently firing
+               firing,
+               // Last fire value (for non-forgettable lists)
+               memory,
+               // Flag to know if list was already fired
+               fired,
+               // End of the loop when firing
+               firingLength,
+               // Index of currently firing callback (modified by remove if needed)
+               firingIndex,
+               // First callback to fire (used internally by add and fireWith)
+               firingStart,
+               // Actual callback list
+               list = [],
+               // Stack of fire calls for repeatable lists
+               stack = !options.once && [],
+               // Fire callbacks
+               fire = function( data ) {
+                       memory = options.memory && data;
+                       fired = true;
+                       firingIndex = firingStart || 0;
+                       firingStart = 0;
+                       firingLength = list.length;
+                       firing = true;
+                       for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+                               if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+                                       memory = false; // To prevent further calls using add
+                                       break;
+                               }
+                       }
+                       firing = false;
+                       if ( list ) {
+                               if ( stack ) {
+                                       if ( stack.length ) {
+                                               fire( stack.shift() );
+                                       }
+                               } else if ( memory ) {
+                                       list = [];
+                               } else {
+                                       self.disable();
+                               }
+                       }
+               },
+               // Actual Callbacks object
+               self = {
+                       // Add a callback or a collection of callbacks to the list
+                       add: function() {
+                               if ( list ) {
+                                       // First, we save the current length
+                                       var start = list.length;
+                                       (function add( args ) {
+                                               jQuery.each( args, function( _, arg ) {
+                                                       var type = jQuery.type( arg );
+                                                       if ( type === "function" ) {
+                                                               if ( !options.unique || !self.has( arg ) ) {
+                                                                       list.push( arg );
+                                                               }
+                                                       } else if ( arg && arg.length && type !== "string" ) {
+                                                               // Inspect recursively
+                                                               add( arg );
+                                                       }
+                                               });
+                                       })( arguments );
+                                       // Do we need to add the callbacks to the
+                                       // current firing batch?
+                                       if ( firing ) {
+                                               firingLength = list.length;
+                                       // With memory, if we're not firing then
+                                       // we should call right away
+                                       } else if ( memory ) {
+                                               firingStart = start;
+                                               fire( memory );
+                                       }
+                               }
+                               return this;
+                       },
+                       // Remove a callback from the list
+                       remove: function() {
+                               if ( list ) {
+                                       jQuery.each( arguments, function( _, arg ) {
+                                               var index;
+                                               while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+                                                       list.splice( index, 1 );
+                                                       // Handle firing indexes
+                                                       if ( firing ) {
+                                                               if ( index <= firingLength ) {
+                                                                       firingLength--;
+                                                               }
+                                                               if ( index <= firingIndex ) {
+                                                                       firingIndex--;
+                                                               }
+                                                       }
+                                               }
+                                       });
+                               }
+                               return this;
+                       },
+                       // Check if a given callback is in the list.
+                       // If no argument is given, return whether or not list has callbacks attached.
+                       has: function( fn ) {
+                               return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+                       },
+                       // Remove all callbacks from the list
+                       empty: function() {
+                               list = [];
+                               return this;
+                       },
+                       // Have the list do nothing anymore
+                       disable: function() {
+                               list = stack = memory = undefined;
+                               return this;
+                       },
+                       // Is it disabled?
+                       disabled: function() {
+                               return !list;
+                       },
+                       // Lock the list in its current state
+                       lock: function() {
+                               stack = undefined;
+                               if ( !memory ) {
+                                       self.disable();
+                               }
+                               return this;
+                       },
+                       // Is it locked?
+                       locked: function() {
+                               return !stack;
+                       },
+                       // Call all callbacks with the given context and arguments
+                       fireWith: function( context, args ) {
+                               args = args || [];
+                               args = [ context, args.slice ? args.slice() : args ];
+                               if ( list && ( !fired || stack ) ) {
+                                       if ( firing ) {
+                                               stack.push( args );
+                                       } else {
+                                               fire( args );
+                                       }
+                               }
+                               return this;
+                       },
+                       // Call all the callbacks with the given arguments
+                       fire: function() {
+                               self.fireWith( this, arguments );
+                               return this;
+                       },
+                       // To know if the callbacks have already been called at least once
+                       fired: function() {
+                               return !!fired;
+                       }
+               };
+
+       return self;
+};
+jQuery.extend({
+
+       Deferred: function( func ) {
+               var tuples = [
+                               // action, add listener, listener list, final state
+                               [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+                               [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+                               [ "notify", "progress", jQuery.Callbacks("memory") ]
+                       ],
+                       state = "pending",
+                       promise = {
+                               state: function() {
+                                       return state;
+                               },
+                               always: function() {
+                                       deferred.done( arguments ).fail( arguments );
+                                       return this;
+                               },
+                               then: function( /* fnDone, fnFail, fnProgress */ ) {
+                                       var fns = arguments;
+                                       return jQuery.Deferred(function( newDefer ) {
+                                               jQuery.each( tuples, function( i, tuple ) {
+                                                       var action = tuple[ 0 ],
+                                                               fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+                                                       // deferred[ done | fail | progress ] for forwarding actions to newDefer
+                                                       deferred[ tuple[1] ](function() {
+                                                               var returned = fn && fn.apply( this, arguments );
+                                                               if ( returned && jQuery.isFunction( returned.promise ) ) {
+                                                                       returned.promise()
+                                                                               .done( newDefer.resolve )
+                                                                               .fail( newDefer.reject )
+                                                                               .progress( newDefer.notify );
+                                                               } else {
+                                                                       newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+                                                               }
+                                                       });
+                                               });
+                                               fns = null;
+                                       }).promise();
+                               },
+                               // Get a promise for this deferred
+                               // If obj is provided, the promise aspect is added to the object
+                               promise: function( obj ) {
+                                       return obj != null ? jQuery.extend( obj, promise ) : promise;
+                               }
+                       },
+                       deferred = {};
+
+               // Keep pipe for back-compat
+               promise.pipe = promise.then;
+
+               // Add list-specific methods
+               jQuery.each( tuples, function( i, tuple ) {
+                       var list = tuple[ 2 ],
+                               stateString = tuple[ 3 ];
+
+                       // promise[ done | fail | progress ] = list.add
+                       promise[ tuple[1] ] = list.add;
+
+                       // Handle state
+                       if ( stateString ) {
+                               list.add(function() {
+                                       // state = [ resolved | rejected ]
+                                       state = stateString;
+
+                               // [ reject_list | resolve_list ].disable; progress_list.lock
+                               }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+                       }
+
+                       // deferred[ resolve | reject | notify ]
+                       deferred[ tuple[0] ] = function() {
+                               deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+                               return this;
+                       };
+                       deferred[ tuple[0] + "With" ] = list.fireWith;
+               });
+
+               // Make the deferred a promise
+               promise.promise( deferred );
+
+               // Call given func if any
+               if ( func ) {
+                       func.call( deferred, deferred );
+               }
+
+               // All done!
+               return deferred;
+       },
+
+       // Deferred helper
+       when: function( subordinate /* , ..., subordinateN */ ) {
+               var i = 0,
+                       resolveValues = core_slice.call( arguments ),
+                       length = resolveValues.length,
+
+                       // the count of uncompleted subordinates
+                       remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+                       // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+                       deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+                       // Update function for both resolve and progress values
+                       updateFunc = function( i, contexts, values ) {
+                               return function( value ) {
+                                       contexts[ i ] = this;
+                                       values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
+                                       if( values === progressValues ) {
+                                               deferred.notifyWith( contexts, values );
+                                       } else if ( !( --remaining ) ) {
+                                               deferred.resolveWith( contexts, values );
+                                       }
+                               };
+                       },
+
+                       progressValues, progressContexts, resolveContexts;
+
+               // add listeners to Deferred subordinates; treat others as resolved
+               if ( length > 1 ) {
+                       progressValues = new Array( length );
+                       progressContexts = new Array( length );
+                       resolveContexts = new Array( length );
+                       for ( ; i < length; i++ ) {
+                               if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+                                       resolveValues[ i ].promise()
+                                               .done( updateFunc( i, resolveContexts, resolveValues ) )
+                                               .fail( deferred.reject )
+                                               .progress( updateFunc( i, progressContexts, progressValues ) );
+                               } else {
+                                       --remaining;
+                               }
+                       }
+               }
+
+               // if we're not waiting on anything, resolve the master
+               if ( !remaining ) {
+                       deferred.resolveWith( resolveContexts, resolveValues );
+               }
+
+               return deferred.promise();
+       }
+});
+jQuery.support = (function() {
+
+       var support, all, a,
+               input, select, fragment,
+               opt, eventName, isSupported, i,
+               div = document.createElement("div");
+
+       // Setup
+       div.setAttribute( "className", "t" );
+       div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
+
+       // Support tests won't run in some limited or non-browser environments
+       all = div.getElementsByTagName("*");
+       a = div.getElementsByTagName("a")[ 0 ];
+       if ( !all || !a || !all.length ) {
+               return {};
+       }
+
+       // First batch of tests
+       select = document.createElement("select");
+       opt = select.appendChild( document.createElement("option") );
+       input = div.getElementsByTagName("input")[ 0 ];
+
+       a.style.cssText = "top:1px;float:left;opacity:.5";
+       support = {
+               // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+               getSetAttribute: div.className !== "t",
+
+               // IE strips leading whitespace when .innerHTML is used
+               leadingWhitespace: div.firstChild.nodeType === 3,
+
+               // Make sure that tbody elements aren't automatically inserted
+               // IE will insert them into empty tables
+               tbody: !div.getElementsByTagName("tbody").length,
+
+               // Make sure that link elements get serialized correctly by innerHTML
+               // This requires a wrapper element in IE
+               htmlSerialize: !!div.getElementsByTagName("link").length,
+
+               // Get the style information from getAttribute
+               // (IE uses .cssText instead)
+               style: /top/.test( a.getAttribute("style") ),
+
+               // Make sure that URLs aren't manipulated
+               // (IE normalizes it by default)
+               hrefNormalized: a.getAttribute("href") === "/a",
+
+               // Make sure that element opacity exists
+               // (IE uses filter instead)
+               // Use a regex to work around a WebKit issue. See #5145
+               opacity: /^0.5/.test( a.style.opacity ),
+
+               // Verify style float existence
+               // (IE uses styleFloat instead of cssFloat)
+               cssFloat: !!a.style.cssFloat,
+
+               // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
+               checkOn: !!input.value,
+
+               // Make sure that a selected-by-default option has a working selected property.
+               // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+               optSelected: opt.selected,
+
+               // Tests for enctype support on a form (#6743)
+               enctype: !!document.createElement("form").enctype,
+
+               // Makes sure cloning an html5 element does not cause problems
+               // Where outerHTML is undefined, this still works
+               html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
+
+               // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
+               boxModel: document.compatMode === "CSS1Compat",
+
+               // Will be defined later
+               deleteExpando: true,
+               noCloneEvent: true,
+               inlineBlockNeedsLayout: false,
+               shrinkWrapBlocks: false,
+               reliableMarginRight: true,
+               boxSizingReliable: true,
+               pixelPosition: false
+       };
+
+       // Make sure checked status is properly cloned
+       input.checked = true;
+       support.noCloneChecked = input.cloneNode( true ).checked;
+
+       // Make sure that the options inside disabled selects aren't marked as disabled
+       // (WebKit marks them as disabled)
+       select.disabled = true;
+       support.optDisabled = !opt.disabled;
+
+       // Support: IE<9
+       try {
+               delete div.test;
+       } catch( e ) {
+               support.deleteExpando = false;
+       }
+
+       // Check if we can trust getAttribute("value")
+       input = document.createElement("input");
+       input.setAttribute( "value", "" );
+       support.input = input.getAttribute( "value" ) === "";
+
+       // Check if an input maintains its value after becoming a radio
+       input.value = "t";
+       input.setAttribute( "type", "radio" );
+       support.radioValue = input.value === "t";
+
+       // #11217 - WebKit loses check when the name is after the checked attribute
+       input.setAttribute( "checked", "t" );
+       input.setAttribute( "name", "t" );
+
+       fragment = document.createDocumentFragment();
+       fragment.appendChild( input );
+
+       // Check if a disconnected checkbox will retain its checked
+       // value of true after appended to the DOM (IE6/7)
+       support.appendChecked = input.checked;
+
+       // WebKit doesn't clone checked state correctly in fragments
+       support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+       // Support: IE<9
+       // Opera does not clone events (and typeof div.attachEvent === undefined).
+       // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
+       if ( div.attachEvent ) {
+               div.attachEvent( "onclick", function() {
+                       support.noCloneEvent = false;
+               });
+
+               div.cloneNode( true ).click();
+       }
+
+       // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
+       // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php
+       for ( i in { submit: true, change: true, focusin: true }) {
+               div.setAttribute( eventName = "on" + i, "t" );
+
+               support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
+       }
+
+       div.style.backgroundClip = "content-box";
+       div.cloneNode( true ).style.backgroundClip = "";
+       support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+       // Run tests that need a body at doc ready
+       jQuery(function() {
+               var container, marginDiv, tds,
+                       divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
+                       body = document.getElementsByTagName("body")[0];
+
+               if ( !body ) {
+                       // Return for frameset docs that don't have a body
+                       return;
+               }
+
+               container = document.createElement("div");
+               container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
+
+               body.appendChild( container ).appendChild( div );
+
+               // Support: IE8
+               // Check if table cells still have offsetWidth/Height when they are set
+               // to display:none and there are still other visible table cells in a
+               // table row; if so, offsetWidth/Height are not reliable for use when
+               // determining if an element has been hidden directly using
+               // display:none (it is still safe to use offsets if a parent element is
+               // hidden; don safety goggles and see bug #4512 for more information).
+               div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
+               tds = div.getElementsByTagName("td");
+               tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
+               isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+               tds[ 0 ].style.display = "";
+               tds[ 1 ].style.display = "none";
+
+               // Support: IE8
+               // Check if empty table cells still have offsetWidth/Height
+               support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+               // Check box-sizing and margin behavior
+               div.innerHTML = "";
+               div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
+               support.boxSizing = ( div.offsetWidth === 4 );
+               support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );
+
+               // Use window.getComputedStyle because jsdom on node.js will break without it.
+               if ( window.getComputedStyle ) {
+                       support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
+                       support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
+
+                       // Check if div with explicit width and no margin-right incorrectly
+                       // gets computed margin-right based on width of container. (#3333)
+                       // Fails in WebKit before Feb 2011 nightlies
+                       // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+                       marginDiv = div.appendChild( document.createElement("div") );
+                       marginDiv.style.cssText = div.style.cssText = divReset;
+                       marginDiv.style.marginRight = marginDiv.style.width = "0";
+                       div.style.width = "1px";
+
+                       support.reliableMarginRight =
+                               !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
+               }
+
+               if ( typeof div.style.zoom !== core_strundefined ) {
+                       // Support: IE<8
+                       // Check if natively block-level elements act like inline-block
+                       // elements when setting their display to 'inline' and giving
+                       // them layout
+                       div.innerHTML = "";
+                       div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
+                       support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
+
+                       // Support: IE6
+                       // Check if elements with layout shrink-wrap their children
+                       div.style.display = "block";
+                       div.innerHTML = "<div></div>";
+                       div.firstChild.style.width = "5px";
+                       support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
+
+                       if ( support.inlineBlockNeedsLayout ) {
+                               // Prevent IE 6 from affecting layout for positioned elements #11048
+                               // Prevent IE from shrinking the body in IE 7 mode #12869
+                               // Support: IE<8
+                               body.style.zoom = 1;
+                       }
+               }
+
+               body.removeChild( container );
+
+               // Null elements to avoid leaks in IE
+               container = div = tds = marginDiv = null;
+       });
+
+       // Null elements to avoid leaks in IE
+       all = select = fragment = opt = a = input = null;
+
+       return support;
+})();
+
+var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
+       rmultiDash = /([A-Z])/g;
+
+function internalData( elem, name, data, pvt /* Internal Use Only */ ){
+       if ( !jQuery.acceptData( elem ) ) {
+               return;
+       }
+
+       var thisCache, ret,
+               internalKey = jQuery.expando,
+               getByName = typeof name === "string",
+
+               // We have to handle DOM nodes and JS objects differently because IE6-7
+               // can't GC object references properly across the DOM-JS boundary
+               isNode = elem.nodeType,
+
+               // Only DOM nodes need the global jQuery cache; JS object data is
+               // attached directly to the object so GC can occur automatically
+               cache = isNode ? jQuery.cache : elem,
+
+               // Only defining an ID for JS objects if its cache already exists allows
+               // the code to shortcut on the same path as a DOM node with no cache
+               id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
+
+       // Avoid doing any more work than we need to when trying to get data on an
+       // object that has no data at all
+       if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
+               return;
+       }
+
+       if ( !id ) {
+               // Only DOM nodes need a new unique ID for each element since their data
+               // ends up in the global cache
+               if ( isNode ) {
+                       elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++;
+               } else {
+                       id = internalKey;
+               }
+       }
+
+       if ( !cache[ id ] ) {
+               cache[ id ] = {};
+
+               // Avoids exposing jQuery metadata on plain JS objects when the object
+               // is serialized using JSON.stringify
+               if ( !isNode ) {
+                       cache[ id ].toJSON = jQuery.noop;
+               }
+       }
+
+       // An object can be passed to jQuery.data instead of a key/value pair; this gets
+       // shallow copied over onto the existing cache
+       if ( typeof name === "object" || typeof name === "function" ) {
+               if ( pvt ) {
+                       cache[ id ] = jQuery.extend( cache[ id ], name );
+               } else {
+                       cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+               }
+       }
+
+       thisCache = cache[ id ];
+
+       // jQuery data() is stored in a separate object inside the object's internal data
+       // cache in order to avoid key collisions between internal data and user-defined
+       // data.
+       if ( !pvt ) {
+               if ( !thisCache.data ) {
+                       thisCache.data = {};
+               }
+
+               thisCache = thisCache.data;
+       }
+
+       if ( data !== undefined ) {
+               thisCache[ jQuery.camelCase( name ) ] = data;
+       }
+
+       // Check for both converted-to-camel and non-converted data property names
+       // If a data property was specified
+       if ( getByName ) {
+
+               // First Try to find as-is property data
+               ret = thisCache[ name ];
+
+               // Test for null|undefined property data
+               if ( ret == null ) {
+
+                       // Try to find the camelCased property
+                       ret = thisCache[ jQuery.camelCase( name ) ];
+               }
+       } else {
+               ret = thisCache;
+       }
+
+       return ret;
+}
+
+function internalRemoveData( elem, name, pvt ) {
+       if ( !jQuery.acceptData( elem ) ) {
+               return;
+       }
+
+       var i, l, thisCache,
+               isNode = elem.nodeType,
+
+               // See jQuery.data for more information
+               cache = isNode ? jQuery.cache : elem,
+               id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+       // If there is already no cache entry for this object, there is no
+       // purpose in continuing
+       if ( !cache[ id ] ) {
+               return;
+       }
+
+       if ( name ) {
+
+               thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+               if ( thisCache ) {
+
+                       // Support array or space separated string names for data keys
+                       if ( !jQuery.isArray( name ) ) {
+
+                               // try the string as a key before any manipulation
+                               if ( name in thisCache ) {
+                                       name = [ name ];
+                               } else {
+
+                                       // split the camel cased version by spaces unless a key with the spaces exists
+                                       name = jQuery.camelCase( name );
+                                       if ( name in thisCache ) {
+                                               name = [ name ];
+                                       } else {
+                                               name = name.split(" ");
+                                       }
+                               }
+                       } else {
+                               // If "name" is an array of keys...
+                               // When data is initially created, via ("key", "val") signature,
+                               // keys will be converted to camelCase.
+                               // Since there is no way to tell _how_ a key was added, remove
+                               // both plain key and camelCase key. #12786
+                               // This will only penalize the array argument path.
+                               name = name.concat( jQuery.map( name, jQuery.camelCase ) );
+                       }
+
+                       for ( i = 0, l = name.length; i < l; i++ ) {
+                               delete thisCache[ name[i] ];
+                       }
+
+                       // If there is no data left in the cache, we want to continue
+                       // and let the cache object itself get destroyed
+                       if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
+                               return;
+                       }
+               }
+       }
+
+       // See jQuery.data for more information
+       if ( !pvt ) {
+               delete cache[ id ].data;
+
+               // Don't destroy the parent cache unless the internal data object
+               // had been the only thing left in it
+               if ( !isEmptyDataObject( cache[ id ] ) ) {
+                       return;
+               }
+       }
+
+       // Destroy the cache
+       if ( isNode ) {
+               jQuery.cleanData( [ elem ], true );
+
+       // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
+       } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
+               delete cache[ id ];
+
+       // When all else fails, null
+       } else {
+               cache[ id ] = null;
+       }
+}
+
+jQuery.extend({
+       cache: {},
+
+       // Unique for each copy of jQuery on the page
+       // Non-digits removed to match rinlinejQuery
+       expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
+
+       // The following elements throw uncatchable exceptions if you
+       // attempt to add expando properties to them.
+       noData: {
+               "embed": true,
+               // Ban all objects except for Flash (which handle expandos)
+               "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+               "applet": true
+       },
+
+       hasData: function( elem ) {
+               elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+               return !!elem && !isEmptyDataObject( elem );
+       },
+
+       data: function( elem, name, data ) {
+               return internalData( elem, name, data );
+       },
+
+       removeData: function( elem, name ) {
+               return internalRemoveData( elem, name );
+       },
+
+       // For internal use only.
+       _data: function( elem, name, data ) {
+               return internalData( elem, name, data, true );
+       },
+
+       _removeData: function( elem, name ) {
+               return internalRemoveData( elem, name, true );
+       },
+
+       // A method for determining if a DOM node can handle the data expando
+       acceptData: function( elem ) {
+               // Do not set data on non-element because it will not be cleared (#8335).
+               if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
+                       return false;
+               }
+
+               var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+               // nodes accept data unless otherwise specified; rejection can be conditional
+               return !noData || noData !== true && elem.getAttribute("classid") === noData;
+       }
+});
+
+jQuery.fn.extend({
+       data: function( key, value ) {
+               var attrs, name,
+                       elem = this[0],
+                       i = 0,
+                       data = null;
+
+               // Gets all values
+               if ( key === undefined ) {
+                       if ( this.length ) {
+                               data = jQuery.data( elem );
+
+                               if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
+                                       attrs = elem.attributes;
+                                       for ( ; i < attrs.length; i++ ) {
+                                               name = attrs[i].name;
+
+                                               if ( !name.indexOf( "data-" ) ) {
+                                                       name = jQuery.camelCase( name.slice(5) );
+
+                                                       dataAttr( elem, name, data[ name ] );
+                                               }
+                                       }
+                                       jQuery._data( elem, "parsedAttrs", true );
+                               }
+                       }
+
+                       return data;
+               }
+
+               // Sets multiple values
+               if ( typeof key === "object" ) {
+                       return this.each(function() {
+                               jQuery.data( this, key );
+                       });
+               }
+
+               return jQuery.access( this, function( value ) {
+
+                       if ( value === undefined ) {
+                               // Try to fetch any internally stored data first
+                               return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
+                       }
+
+                       this.each(function() {
+                               jQuery.data( this, key, value );
+                       });
+               }, null, value, arguments.length > 1, null, true );
+       },
+
+       removeData: function( key ) {
+               return this.each(function() {
+                       jQuery.removeData( this, key );
+               });
+       }
+});
+
+function dataAttr( elem, key, data ) {
+       // If nothing was found internally, try to fetch any
+       // data from the HTML5 data-* attribute
+       if ( data === undefined && elem.nodeType === 1 ) {
+
+               var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+               data = elem.getAttribute( name );
+
+               if ( typeof data === "string" ) {
+                       try {
+                               data = data === "true" ? true :
+                                       data === "false" ? false :
+                                       data === "null" ? null :
+                                       // Only convert to a number if it doesn't change the string
+                                       +data + "" === data ? +data :
+                                       rbrace.test( data ) ? jQuery.parseJSON( data ) :
+                                               data;
+                       } catch( e ) {}
+
+                       // Make sure we set the data so it isn't changed later
+                       jQuery.data( elem, key, data );
+
+               } else {
+                       data = undefined;
+               }
+       }
+
+       return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+       var name;
+       for ( name in obj ) {
+
+               // if the public data object is empty, the private is still empty
+               if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+                       continue;
+               }
+               if ( name !== "toJSON" ) {
+                       return false;
+               }
+       }
+
+       return true;
+}
+jQuery.extend({
+       queue: function( elem, type, data ) {
+               var queue;
+
+               if ( elem ) {
+                       type = ( type || "fx" ) + "queue";
+                       queue = jQuery._data( elem, type );
+
+                       // Speed up dequeue by getting out quickly if this is just a lookup
+                       if ( data ) {
+                               if ( !queue || jQuery.isArray(data) ) {
+                                       queue = jQuery._data( elem, type, jQuery.makeArray(data) );
+                               } else {
+                                       queue.push( data );
+                               }
+                       }
+                       return queue || [];
+               }
+       },
+
+       dequeue: function( elem, type ) {
+               type = type || "fx";
+
+               var queue = jQuery.queue( elem, type ),
+                       startLength = queue.length,
+                       fn = queue.shift(),
+                       hooks = jQuery._queueHooks( elem, type ),
+                       next = function() {
+                               jQuery.dequeue( elem, type );
+                       };
+
+               // If the fx queue is dequeued, always remove the progress sentinel
+               if ( fn === "inprogress" ) {
+                       fn = queue.shift();
+                       startLength--;
+               }
+
+               hooks.cur = fn;
+               if ( fn ) {
+
+                       // Add a progress sentinel to prevent the fx queue from being
+                       // automatically dequeued
+                       if ( type === "fx" ) {
+                               queue.unshift( "inprogress" );
+                       }
+
+                       // clear up the last queue stop function
+                       delete hooks.stop;
+                       fn.call( elem, next, hooks );
+               }
+
+               if ( !startLength && hooks ) {
+                       hooks.empty.fire();
+               }
+       },
+
+       // not intended for public consumption - generates a queueHooks object, or returns the current one
+       _queueHooks: function( elem, type ) {
+               var key = type + "queueHooks";
+               return jQuery._data( elem, key ) || jQuery._data( elem, key, {
+                       empty: jQuery.Callbacks("once memory").add(function() {
+                               jQuery._removeData( elem, type + "queue" );
+                               jQuery._removeData( elem, key );
+                       })
+               });
+       }
+});
+
+jQuery.fn.extend({
+       queue: function( type, data ) {
+               var setter = 2;
+
+               if ( typeof type !== "string" ) {
+                       data = type;
+                       type = "fx";
+                       setter--;
+               }
+
+               if ( arguments.length < setter ) {
+                       return jQuery.queue( this[0], type );
+               }
+
+               return data === undefined ?
+                       this :
+                       this.each(function() {
+                               var queue = jQuery.queue( this, type, data );
+
+                               // ensure a hooks for this queue
+                               jQuery._queueHooks( this, type );
+
+                               if ( type === "fx" && queue[0] !== "inprogress" ) {
+                                       jQuery.dequeue( this, type );
+                               }
+                       });
+       },
+       dequeue: function( type ) {
+               return this.each(function() {
+                       jQuery.dequeue( this, type );
+               });
+       },
+       // Based off of the plugin by Clint Helfers, with permission.
+       // http://blindsignals.com/index.php/2009/07/jquery-delay/
+       delay: function( time, type ) {
+               time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+               type = type || "fx";
+
+               return this.queue( type, function( next, hooks ) {
+                       var timeout = setTimeout( next, time );
+                       hooks.stop = function() {
+                               clearTimeout( timeout );
+                       };
+               });
+       },
+       clearQueue: function( type ) {
+               return this.queue( type || "fx", [] );
+       },
+       // Get a promise resolved when queues of a certain type
+       // are emptied (fx is the type by default)
+       promise: function( type, obj ) {
+               var tmp,
+                       count = 1,
+                       defer = jQuery.Deferred(),
+                       elements = this,
+                       i = this.length,
+                       resolve = function() {
+                               if ( !( --count ) ) {
+                                       defer.resolveWith( elements, [ elements ] );
+                               }
+                       };
+
+               if ( typeof type !== "string" ) {
+                       obj = type;
+                       type = undefined;
+               }
+               type = type || "fx";
+
+               while( i-- ) {
+                       tmp = jQuery._data( elements[ i ], type + "queueHooks" );
+                       if ( tmp && tmp.empty ) {
+                               count++;
+                               tmp.empty.add( resolve );
+                       }
+               }
+               resolve();
+               return defer.promise( obj );
+       }
+});
+var nodeHook, boolHook,
+       rclass = /[\t\r\n]/g,
+       rreturn = /\r/g,
+       rfocusable = /^(?:input|select|textarea|button|object)$/i,
+       rclickable = /^(?:a|area)$/i,
+       rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,
+       ruseDefault = /^(?:checked|selected)$/i,
+       getSetAttribute = jQuery.support.getSetAttribute,
+       getSetInput = jQuery.support.input;
+
+jQuery.fn.extend({
+       attr: function( name, value ) {
+               return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
+       },
+
+       removeAttr: function( name ) {
+               return this.each(function() {
+                       jQuery.removeAttr( this, name );
+               });
+       },
+
+       prop: function( name, value ) {
+               return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
+       },
+
+       removeProp: function( name ) {
+               name = jQuery.propFix[ name ] || name;
+               return this.each(function() {
+                       // try/catch handles cases where IE balks (such as removing a property on window)
+                       try {
+                               this[ name ] = undefined;
+                               delete this[ name ];
+                       } catch( e ) {}
+               });
+       },
+
+       addClass: function( value ) {
+               var classes, elem, cur, clazz, j,
+                       i = 0,
+                       len = this.length,
+                       proceed = typeof value === "string" && value;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( j ) {
+                               jQuery( this ).addClass( value.call( this, j, this.className ) );
+                       });
+               }
+
+               if ( proceed ) {
+                       // The disjunction here is for better compressibility (see removeClass)
+                       classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+                       for ( ; i < len; i++ ) {
+                               elem = this[ i ];
+                               cur = elem.nodeType === 1 && ( elem.className ?
+                                       ( " " + elem.className + " " ).replace( rclass, " " ) :
+                                       " "
+                               );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( (clazz = classes[j++]) ) {
+                                               if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+                                                       cur += clazz + " ";
+                                               }
+                                       }
+                                       elem.className = jQuery.trim( cur );
+
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       removeClass: function( value ) {
+               var classes, elem, cur, clazz, j,
+                       i = 0,
+                       len = this.length,
+                       proceed = arguments.length === 0 || typeof value === "string" && value;
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( j ) {
+                               jQuery( this ).removeClass( value.call( this, j, this.className ) );
+                       });
+               }
+               if ( proceed ) {
+                       classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+                       for ( ; i < len; i++ ) {
+                               elem = this[ i ];
+                               // This expression is here for better compressibility (see addClass)
+                               cur = elem.nodeType === 1 && ( elem.className ?
+                                       ( " " + elem.className + " " ).replace( rclass, " " ) :
+                                       ""
+                               );
+
+                               if ( cur ) {
+                                       j = 0;
+                                       while ( (clazz = classes[j++]) ) {
+                                               // Remove *all* instances
+                                               while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+                                                       cur = cur.replace( " " + clazz + " ", " " );
+                                               }
+                                       }
+                                       elem.className = value ? jQuery.trim( cur ) : "";
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       toggleClass: function( value, stateVal ) {
+               var type = typeof value,
+                       isBool = typeof stateVal === "boolean";
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function( i ) {
+                               jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+                       });
+               }
+
+               return this.each(function() {
+                       if ( type === "string" ) {
+                               // toggle individual class names
+                               var className,
+                                       i = 0,
+                                       self = jQuery( this ),
+                                       state = stateVal,
+                                       classNames = value.match( core_rnotwhite ) || [];
+
+                               while ( (className = classNames[ i++ ]) ) {
+                                       // check each className given, space separated list
+                                       state = isBool ? state : !self.hasClass( className );
+                                       self[ state ? "addClass" : "removeClass" ]( className );
+                               }
+
+                       // Toggle whole class name
+                       } else if ( type === core_strundefined || type === "boolean" ) {
+                               if ( this.className ) {
+                                       // store className if set
+                                       jQuery._data( this, "__className__", this.className );
+                               }
+
+                               // If the element has a class name or if we're passed "false",
+                               // then remove the whole classname (if there was one, the above saved it).
+                               // Otherwise bring back whatever was previously saved (if anything),
+                               // falling back to the empty string if nothing was stored.
+                               this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+                       }
+               });
+       },
+
+       hasClass: function( selector ) {
+               var className = " " + selector + " ",
+                       i = 0,
+                       l = this.length;
+               for ( ; i < l; i++ ) {
+                       if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+                               return true;
+                       }
+               }
+
+               return false;
+       },
+
+       val: function( value ) {
+               var ret, hooks, isFunction,
+                       elem = this[0];
+
+               if ( !arguments.length ) {
+                       if ( elem ) {
+                               hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+                               if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+                                       return ret;
+                               }
+
+                               ret = elem.value;
+
+                               return typeof ret === "string" ?
+                                       // handle most common string cases
+                                       ret.replace(rreturn, "") :
+                                       // handle cases where value is null/undef or number
+                                       ret == null ? "" : ret;
+                       }
+
+                       return;
+               }
+
+               isFunction = jQuery.isFunction( value );
+
+               return this.each(function( i ) {
+                       var val,
+                               self = jQuery(this);
+
+                       if ( this.nodeType !== 1 ) {
+                               return;
+                       }
+
+                       if ( isFunction ) {
+                               val = value.call( this, i, self.val() );
+                       } else {
+                               val = value;
+                       }
+
+                       // Treat null/undefined as ""; convert numbers to string
+                       if ( val == null ) {
+                               val = "";
+                       } else if ( typeof val === "number" ) {
+                               val += "";
+                       } else if ( jQuery.isArray( val ) ) {
+                               val = jQuery.map(val, function ( value ) {
+                                       return value == null ? "" : value + "";
+                               });
+                       }
+
+                       hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+                       // If set returns undefined, fall back to normal setting
+                       if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+                               this.value = val;
+                       }
+               });
+       }
+});
+
+jQuery.extend({
+       valHooks: {
+               option: {
+                       get: function( elem ) {
+                               // attributes.value is undefined in Blackberry 4.7 but
+                               // uses .value. See #6932
+                               var val = elem.attributes.value;
+                               return !val || val.specified ? elem.value : elem.text;
+                       }
+               },
+               select: {
+                       get: function( elem ) {
+                               var value, option,
+                                       options = elem.options,
+                                       index = elem.selectedIndex,
+                                       one = elem.type === "select-one" || index < 0,
+                                       values = one ? null : [],
+                                       max = one ? index + 1 : options.length,
+                                       i = index < 0 ?
+                                               max :
+                                               one ? index : 0;
+
+                               // Loop through all the selected options
+                               for ( ; i < max; i++ ) {
+                                       option = options[ i ];
+
+                                       // oldIE doesn't update selected after form reset (#2551)
+                                       if ( ( option.selected || i === index ) &&
+                                                       // Don't return options that are disabled or in a disabled optgroup
+                                                       ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
+                                                       ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+                                               // Get the specific value for the option
+                                               value = jQuery( option ).val();
+
+                                               // We don't need an array for one selects
+                                               if ( one ) {
+                                                       return value;
+                                               }
+
+                                               // Multi-Selects return an array
+                                               values.push( value );
+                                       }
+                               }
+
+                               return values;
+                       },
+
+                       set: function( elem, value ) {
+                               var values = jQuery.makeArray( value );
+
+                               jQuery(elem).find("option").each(function() {
+                                       this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+                               });
+
+                               if ( !values.length ) {
+                                       elem.selectedIndex = -1;
+                               }
+                               return values;
+                       }
+               }
+       },
+
+       attr: function( elem, name, value ) {
+               var hooks, notxml, ret,
+                       nType = elem.nodeType;
+
+               // don't get/set attributes on text, comment and attribute nodes
+               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               // Fallback to prop when attributes are not supported
+               if ( typeof elem.getAttribute === core_strundefined ) {
+                       return jQuery.prop( elem, name, value );
+               }
+
+               notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+               // All attributes are lowercase
+               // Grab necessary hook if one is defined
+               if ( notxml ) {
+                       name = name.toLowerCase();
+                       hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
+               }
+
+               if ( value !== undefined ) {
+
+                       if ( value === null ) {
+                               jQuery.removeAttr( elem, name );
+
+                       } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+                               return ret;
+
+                       } else {
+                               elem.setAttribute( name, value + "" );
+                               return value;
+                       }
+
+               } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+                       return ret;
+
+               } else {
+
+                       // In IE9+, Flash objects don't have .getAttribute (#12945)
+                       // Support: IE9+
+                       if ( typeof elem.getAttribute !== core_strundefined ) {
+                               ret =  elem.getAttribute( name );
+                       }
+
+                       // Non-existent attributes return null, we normalize to undefined
+                       return ret == null ?
+                               undefined :
+                               ret;
+               }
+       },
+
+       removeAttr: function( elem, value ) {
+               var name, propName,
+                       i = 0,
+                       attrNames = value && value.match( core_rnotwhite );
+
+               if ( attrNames && elem.nodeType === 1 ) {
+                       while ( (name = attrNames[i++]) ) {
+                               propName = jQuery.propFix[ name ] || name;
+
+                               // Boolean attributes get special treatment (#10870)
+                               if ( rboolean.test( name ) ) {
+                                       // Set corresponding property to false for boolean attributes
+                                       // Also clear defaultChecked/defaultSelected (if appropriate) for IE<8
+                                       if ( !getSetAttribute && ruseDefault.test( name ) ) {
+                                               elem[ jQuery.camelCase( "default-" + name ) ] =
+                                                       elem[ propName ] = false;
+                                       } else {
+                                               elem[ propName ] = false;
+                                       }
+
+                               // See #9699 for explanation of this approach (setting first, then removal)
+                               } else {
+                                       jQuery.attr( elem, name, "" );
+                               }
+
+                               elem.removeAttribute( getSetAttribute ? name : propName );
+                       }
+               }
+       },
+
+       attrHooks: {
+               type: {
+                       set: function( elem, value ) {
+                               if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+                                       // Setting the type on a radio button after the value resets the value in IE6-9
+                                       // Reset value to default in case type is set after value during creation
+                                       var val = elem.value;
+                                       elem.setAttribute( "type", value );
+                                       if ( val ) {
+                                               elem.value = val;
+                                       }
+                                       return value;
+                               }
+                       }
+               }
+       },
+
+       propFix: {
+               tabindex: "tabIndex",
+               readonly: "readOnly",
+               "for": "htmlFor",
+               "class": "className",
+               maxlength: "maxLength",
+               cellspacing: "cellSpacing",
+               cellpadding: "cellPadding",
+               rowspan: "rowSpan",
+               colspan: "colSpan",
+               usemap: "useMap",
+               frameborder: "frameBorder",
+               contenteditable: "contentEditable"
+       },
+
+       prop: function( elem, name, value ) {
+               var ret, hooks, notxml,
+                       nType = elem.nodeType;
+
+               // don't get/set properties on text, comment and attribute nodes
+               if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+                       return;
+               }
+
+               notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+               if ( notxml ) {
+                       // Fix name and attach hooks
+                       name = jQuery.propFix[ name ] || name;
+                       hooks = jQuery.propHooks[ name ];
+               }
+
+               if ( value !== undefined ) {
+                       if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+                               return ret;
+
+                       } else {
+                               return ( elem[ name ] = value );
+                       }
+
+               } else {
+                       if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+                               return ret;
+
+                       } else {
+                               return elem[ name ];
+                       }
+               }
+       },
+
+       propHooks: {
+               tabIndex: {
+                       get: function( elem ) {
+                               // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+                               // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+                               var attributeNode = elem.getAttributeNode("tabindex");
+
+                               return attributeNode && attributeNode.specified ?
+                                       parseInt( attributeNode.value, 10 ) :
+                                       rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+                                               0 :
+                                               undefined;
+                       }
+               }
+       }
+});
+
+// Hook for boolean attributes
+boolHook = {
+       get: function( elem, name ) {
+               var
+                       // Use .prop to determine if this attribute is understood as boolean
+                       prop = jQuery.prop( elem, name ),
+
+                       // Fetch it accordingly
+                       attr = typeof prop === "boolean" && elem.getAttribute( name ),
+                       detail = typeof prop === "boolean" ?
+
+                               getSetInput && getSetAttribute ?
+                                       attr != null :
+                                       // oldIE fabricates an empty string for missing boolean attributes
+                                       // and conflates checked/selected into attroperties
+                                       ruseDefault.test( name ) ?
+                                               elem[ jQuery.camelCase( "default-" + name ) ] :
+                                               !!attr :
+
+                               // fetch an attribute node for properties not recognized as boolean
+                               elem.getAttributeNode( name );
+
+               return detail && detail.value !== false ?
+                       name.toLowerCase() :
+                       undefined;
+       },
+       set: function( elem, value, name ) {
+               if ( value === false ) {
+                       // Remove boolean attributes when set to false
+                       jQuery.removeAttr( elem, name );
+               } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+                       // IE<8 needs the *property* name
+                       elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
+
+               // Use defaultChecked and defaultSelected for oldIE
+               } else {
+                       elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
+               }
+
+               return name;
+       }
+};
+
+// fix oldIE value attroperty
+if ( !getSetInput || !getSetAttribute ) {
+       jQuery.attrHooks.value = {
+               get: function( elem, name ) {
+                       var ret = elem.getAttributeNode( name );
+                       return jQuery.nodeName( elem, "input" ) ?
+
+                               // Ignore the value *property* by using defaultValue
+                               elem.defaultValue :
+
+                               ret && ret.specified ? ret.value : undefined;
+               },
+               set: function( elem, value, name ) {
+                       if ( jQuery.nodeName( elem, "input" ) ) {
+                               // Does not return so that setAttribute is also used
+                               elem.defaultValue = value;
+                       } else {
+                               // Use nodeHook if defined (#1954); otherwise setAttribute is fine
+                               return nodeHook && nodeHook.set( elem, value, name );
+                       }
+               }
+       };
+}
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
+
+       // Use this for any attribute in IE6/7
+       // This fixes almost every IE6/7 issue
+       nodeHook = jQuery.valHooks.button = {
+               get: function( elem, name ) {
+                       var ret = elem.getAttributeNode( name );
+                       return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ?
+                               ret.value :
+                               undefined;
+               },
+               set: function( elem, value, name ) {
+                       // Set the existing or create a new attribute node
+                       var ret = elem.getAttributeNode( name );
+                       if ( !ret ) {
+                               elem.setAttributeNode(
+                                       (ret = elem.ownerDocument.createAttribute( name ))
+                               );
+                       }
+
+                       ret.value = value += "";
+
+                       // Break association with cloned elements by also using setAttribute (#9646)
+                       return name === "value" || value === elem.getAttribute( name ) ?
+                               value :
+                               undefined;
+               }
+       };
+
+       // Set contenteditable to false on removals(#10429)
+       // Setting to empty string throws an error as an invalid value
+       jQuery.attrHooks.contenteditable = {
+               get: nodeHook.get,
+               set: function( elem, value, name ) {
+                       nodeHook.set( elem, value === "" ? false : value, name );
+               }
+       };
+
+       // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+       // This is for removals
+       jQuery.each([ "width", "height" ], function( i, name ) {
+               jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+                       set: function( elem, value ) {
+                               if ( value === "" ) {
+                                       elem.setAttribute( name, "auto" );
+                                       return value;
+                               }
+                       }
+               });
+       });
+}
+
+
+// Some attributes require a special call on IE
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !jQuery.support.hrefNormalized ) {
+       jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
+               jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+                       get: function( elem ) {
+                               var ret = elem.getAttribute( name, 2 );
+                               return ret == null ? undefined : ret;
+                       }
+               });
+       });
+
+       // href/src property should get the full normalized URL (#10299/#12915)
+       jQuery.each([ "href", "src" ], function( i, name ) {
+               jQuery.propHooks[ name ] = {
+                       get: function( elem ) {
+                               return elem.getAttribute( name, 4 );
+                       }
+               };
+       });
+}
+
+if ( !jQuery.support.style ) {
+       jQuery.attrHooks.style = {
+               get: function( elem ) {
+                       // Return undefined in the case of empty string
+                       // Note: IE uppercases css property names, but if we were to .toLowerCase()
+                       // .cssText, that would destroy case senstitivity in URL's, like in "background"
+                       return elem.style.cssText || undefined;
+               },
+               set: function( elem, value ) {
+                       return ( elem.style.cssText = value + "" );
+               }
+       };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+       jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
+               get: function( elem ) {
+                       var parent = elem.parentNode;
+
+                       if ( parent ) {
+                               parent.selectedIndex;
+
+                               // Make sure that it also works with optgroups, see #5701
+                               if ( parent.parentNode ) {
+                                       parent.parentNode.selectedIndex;
+                               }
+                       }
+                       return null;
+               }
+       });
+}
+
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+       jQuery.propFix.enctype = "encoding";
+}
+
+// Radios and checkboxes getter/setter
+if ( !jQuery.support.checkOn ) {
+       jQuery.each([ "radio", "checkbox" ], function() {
+               jQuery.valHooks[ this ] = {
+                       get: function( elem ) {
+                               // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+                               return elem.getAttribute("value") === null ? "on" : elem.value;
+                       }
+               };
+       });
+}
+jQuery.each([ "radio", "checkbox" ], function() {
+       jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
+               set: function( elem, value ) {
+                       if ( jQuery.isArray( value ) ) {
+                               return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+                       }
+               }
+       });
+});
+var rformElems = /^(?:input|select|textarea)$/i,
+       rkeyEvent = /^key/,
+       rmouseEvent = /^(?:mouse|contextmenu)|click/,
+       rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+       rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+       return true;
+}
+
+function returnFalse() {
+       return false;
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+       global: {},
+
+       add: function( elem, types, handler, data, selector ) {
+               var tmp, events, t, handleObjIn,
+                       special, eventHandle, handleObj,
+                       handlers, type, namespaces, origType,
+                       elemData = jQuery._data( elem );
+
+               // Don't attach events to noData or text/comment nodes (but allow plain objects)
+               if ( !elemData ) {
+                       return;
+               }
+
+               // Caller can pass in an object of custom data in lieu of the handler
+               if ( handler.handler ) {
+                       handleObjIn = handler;
+                       handler = handleObjIn.handler;
+                       selector = handleObjIn.selector;
+               }
+
+               // Make sure that the handler has a unique ID, used to find/remove it later
+               if ( !handler.guid ) {
+                       handler.guid = jQuery.guid++;
+               }
+
+               // Init the element's event structure and main handler, if this is the first
+               if ( !(events = elemData.events) ) {
+                       events = elemData.events = {};
+               }
+               if ( !(eventHandle = elemData.handle) ) {
+                       eventHandle = elemData.handle = function( e ) {
+                               // Discard the second event of a jQuery.event.trigger() and
+                               // when an event is called after a page has unloaded
+                               return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
+                                       jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+                                       undefined;
+                       };
+                       // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+                       eventHandle.elem = elem;
+               }
+
+               // Handle multiple events separated by a space
+               // jQuery(...).bind("mouseover mouseout", fn);
+               types = ( types || "" ).match( core_rnotwhite ) || [""];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[t] ) || [];
+                       type = origType = tmp[1];
+                       namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+                       // If event changes its type, use the special event handlers for the changed type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // If selector defined, determine special event api type, otherwise given type
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+
+                       // Update special based on newly reset type
+                       special = jQuery.event.special[ type ] || {};
+
+                       // handleObj is passed to all event handlers
+                       handleObj = jQuery.extend({
+                               type: type,
+                               origType: origType,
+                               data: data,
+                               handler: handler,
+                               guid: handler.guid,
+                               selector: selector,
+                               needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+                               namespace: namespaces.join(".")
+                       }, handleObjIn );
+
+                       // Init the event handler queue if we're the first
+                       if ( !(handlers = events[ type ]) ) {
+                               handlers = events[ type ] = [];
+                               handlers.delegateCount = 0;
+
+                               // Only use addEventListener/attachEvent if the special events handler returns false
+                               if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+                                       // Bind the global event handler to the element
+                                       if ( elem.addEventListener ) {
+                                               elem.addEventListener( type, eventHandle, false );
+
+                                       } else if ( elem.attachEvent ) {
+                                               elem.attachEvent( "on" + type, eventHandle );
+                                       }
+                               }
+                       }
+
+                       if ( special.add ) {
+                               special.add.call( elem, handleObj );
+
+                               if ( !handleObj.handler.guid ) {
+                                       handleObj.handler.guid = handler.guid;
+                               }
+                       }
+
+                       // Add to the element's handler list, delegates in front
+                       if ( selector ) {
+                               handlers.splice( handlers.delegateCount++, 0, handleObj );
+                       } else {
+                               handlers.push( handleObj );
+                       }
+
+                       // Keep track of which events have ever been used, for event optimization
+                       jQuery.event.global[ type ] = true;
+               }
+
+               // Nullify elem to prevent memory leaks in IE
+               elem = null;
+       },
+
+       // Detach an event or set of events from an element
+       remove: function( elem, types, handler, selector, mappedTypes ) {
+               var j, handleObj, tmp,
+                       origCount, t, events,
+                       special, handlers, type,
+                       namespaces, origType,
+                       elemData = jQuery.hasData( elem ) && jQuery._data( elem );
+
+               if ( !elemData || !(events = elemData.events) ) {
+                       return;
+               }
+
+               // Once for each type.namespace in types; type may be omitted
+               types = ( types || "" ).match( core_rnotwhite ) || [""];
+               t = types.length;
+               while ( t-- ) {
+                       tmp = rtypenamespace.exec( types[t] ) || [];
+                       type = origType = tmp[1];
+                       namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+                       // Unbind all events (on this namespace, if provided) for the element
+                       if ( !type ) {
+                               for ( type in events ) {
+                                       jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+                               }
+                               continue;
+                       }
+
+                       special = jQuery.event.special[ type ] || {};
+                       type = ( selector ? special.delegateType : special.bindType ) || type;
+                       handlers = events[ type ] || [];
+                       tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+                       // Remove matching events
+                       origCount = j = handlers.length;
+                       while ( j-- ) {
+                               handleObj = handlers[ j ];
+
+                               if ( ( mappedTypes || origType === handleObj.origType ) &&
+                                       ( !handler || handler.guid === handleObj.guid ) &&
+                                       ( !tmp || tmp.test( handleObj.namespace ) ) &&
+                                       ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+                                       handlers.splice( j, 1 );
+
+                                       if ( handleObj.selector ) {
+                                               handlers.delegateCount--;
+                                       }
+                                       if ( special.remove ) {
+                                               special.remove.call( elem, handleObj );
+                                       }
+                               }
+                       }
+
+                       // Remove generic event handler if we removed something and no more handlers exist
+                       // (avoids potential for endless recursion during removal of special event handlers)
+                       if ( origCount && !handlers.length ) {
+                               if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+                                       jQuery.removeEvent( elem, type, elemData.handle );
+                               }
+
+                               delete events[ type ];
+                       }
+               }
+
+               // Remove the expando if it's no longer used
+               if ( jQuery.isEmptyObject( events ) ) {
+                       delete elemData.handle;
+
+                       // removeData also checks for emptiness and clears the expando if empty
+                       // so use it instead of delete
+                       jQuery._removeData( elem, "events" );
+               }
+       },
+
+       trigger: function( event, data, elem, onlyHandlers ) {
+               var handle, ontype, cur,
+                       bubbleType, special, tmp, i,
+                       eventPath = [ elem || document ],
+                       type = core_hasOwn.call( event, "type" ) ? event.type : event,
+                       namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+               cur = tmp = elem = elem || document;
+
+               // Don't do events on text and comment nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return;
+               }
+
+               // focus/blur morphs to focusin/out; ensure we're not firing them right now
+               if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+                       return;
+               }
+
+               if ( type.indexOf(".") >= 0 ) {
+                       // Namespaced trigger; create a regexp to match event type in handle()
+                       namespaces = type.split(".");
+                       type = namespaces.shift();
+                       namespaces.sort();
+               }
+               ontype = type.indexOf(":") < 0 && "on" + type;
+
+               // Caller can pass in a jQuery.Event object, Object, or just an event type string
+               event = event[ jQuery.expando ] ?
+                       event :
+                       new jQuery.Event( type, typeof event === "object" && event );
+
+               event.isTrigger = true;
+               event.namespace = namespaces.join(".");
+               event.namespace_re = event.namespace ?
+                       new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+                       null;
+
+               // Clean up the event in case it is being reused
+               event.result = undefined;
+               if ( !event.target ) {
+                       event.target = elem;
+               }
+
+               // Clone any incoming data and prepend the event, creating the handler arg list
+               data = data == null ?
+                       [ event ] :
+                       jQuery.makeArray( data, [ event ] );
+
+               // Allow special events to draw outside the lines
+               special = jQuery.event.special[ type ] || {};
+               if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+                       return;
+               }
+
+               // Determine event propagation path in advance, per W3C events spec (#9951)
+               // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+               if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+                       bubbleType = special.delegateType || type;
+                       if ( !rfocusMorph.test( bubbleType + type ) ) {
+                               cur = cur.parentNode;
+                       }
+                       for ( ; cur; cur = cur.parentNode ) {
+                               eventPath.push( cur );
+                               tmp = cur;
+                       }
+
+                       // Only add window if we got to document (e.g., not plain obj or detached DOM)
+                       if ( tmp === (elem.ownerDocument || document) ) {
+                               eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+                       }
+               }
+
+               // Fire handlers on the event path
+               i = 0;
+               while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+                       event.type = i > 1 ?
+                               bubbleType :
+                               special.bindType || type;
+
+                       // jQuery handler
+                       handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+                       if ( handle ) {
+                               handle.apply( cur, data );
+                       }
+
+                       // Native handler
+                       handle = ontype && cur[ ontype ];
+                       if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
+                               event.preventDefault();
+                       }
+               }
+               event.type = type;
+
+               // If nobody prevented the default action, do it now
+               if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+                       if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
+                               !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
+
+                               // Call a native DOM method on the target with the same name name as the event.
+                               // Can't use an .isFunction() check here because IE6/7 fails that test.
+                               // Don't do default actions on window, that's where global variables be (#6170)
+                               if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
+
+                                       // Don't re-trigger an onFOO event when we call its FOO() method
+                                       tmp = elem[ ontype ];
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = null;
+                                       }
+
+                                       // Prevent re-triggering of the same event, since we already bubbled it above
+                                       jQuery.event.triggered = type;
+                                       try {
+                                               elem[ type ]();
+                                       } catch ( e ) {
+                                               // IE<9 dies on focus/blur to hidden element (#1486,#12518)
+                                               // only reproducible on winXP IE8 native, not IE9 in IE8 mode
+                                       }
+                                       jQuery.event.triggered = undefined;
+
+                                       if ( tmp ) {
+                                               elem[ ontype ] = tmp;
+                                       }
+                               }
+                       }
+               }
+
+               return event.result;
+       },
+
+       dispatch: function( event ) {
+
+               // Make a writable jQuery.Event from the native event object
+               event = jQuery.event.fix( event );
+
+               var i, ret, handleObj, matched, j,
+                       handlerQueue = [],
+                       args = core_slice.call( arguments ),
+                       handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
+                       special = jQuery.event.special[ event.type ] || {};
+
+               // Use the fix-ed jQuery.Event rather than the (read-only) native event
+               args[0] = event;
+               event.delegateTarget = this;
+
+               // Call the preDispatch hook for the mapped type, and let it bail if desired
+               if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+                       return;
+               }
+
+               // Determine handlers
+               handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+               // Run delegates first; they may want to stop propagation beneath us
+               i = 0;
+               while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+                       event.currentTarget = matched.elem;
+
+                       j = 0;
+                       while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+                               // Triggered event must either 1) have no namespace, or
+                               // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+                               if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+                                       event.handleObj = handleObj;
+                                       event.data = handleObj.data;
+
+                                       ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+                                                       .apply( matched.elem, args );
+
+                                       if ( ret !== undefined ) {
+                                               if ( (event.result = ret) === false ) {
+                                                       event.preventDefault();
+                                                       event.stopPropagation();
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               // Call the postDispatch hook for the mapped type
+               if ( special.postDispatch ) {
+                       special.postDispatch.call( this, event );
+               }
+
+               return event.result;
+       },
+
+       handlers: function( event, handlers ) {
+               var sel, handleObj, matches, i,
+                       handlerQueue = [],
+                       delegateCount = handlers.delegateCount,
+                       cur = event.target;
+
+               // Find delegate handlers
+               // Black-hole SVG <use> instance trees (#13180)
+               // Avoid non-left-click bubbling in Firefox (#3861)
+               if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+                       for ( ; cur != this; cur = cur.parentNode || this ) {
+
+                               // Don't check non-elements (#13208)
+                               // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+                               if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
+                                       matches = [];
+                                       for ( i = 0; i < delegateCount; i++ ) {
+                                               handleObj = handlers[ i ];
+
+                                               // Don't conflict with Object.prototype properties (#13203)
+                                               sel = handleObj.selector + " ";
+
+                                               if ( matches[ sel ] === undefined ) {
+                                                       matches[ sel ] = handleObj.needsContext ?
+                                                               jQuery( sel, this ).index( cur ) >= 0 :
+                                                               jQuery.find( sel, this, null, [ cur ] ).length;
+                                               }
+                                               if ( matches[ sel ] ) {
+                                                       matches.push( handleObj );
+                                               }
+                                       }
+                                       if ( matches.length ) {
+                                               handlerQueue.push({ elem: cur, handlers: matches });
+                                       }
+                               }
+                       }
+               }
+
+               // Add the remaining (directly-bound) handlers
+               if ( delegateCount < handlers.length ) {
+                       handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+               }
+
+               return handlerQueue;
+       },
+
+       fix: function( event ) {
+               if ( event[ jQuery.expando ] ) {
+                       return event;
+               }
+
+               // Create a writable copy of the event object and normalize some properties
+               var i, prop, copy,
+                       type = event.type,
+                       originalEvent = event,
+                       fixHook = this.fixHooks[ type ];
+
+               if ( !fixHook ) {
+                       this.fixHooks[ type ] = fixHook =
+                               rmouseEvent.test( type ) ? this.mouseHooks :
+                               rkeyEvent.test( type ) ? this.keyHooks :
+                               {};
+               }
+               copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+               event = new jQuery.Event( originalEvent );
+
+               i = copy.length;
+               while ( i-- ) {
+                       prop = copy[ i ];
+                       event[ prop ] = originalEvent[ prop ];
+               }
+
+               // Support: IE<9
+               // Fix target property (#1925)
+               if ( !event.target ) {
+                       event.target = originalEvent.srcElement || document;
+               }
+
+               // Support: Chrome 23+, Safari?
+               // Target should not be a text node (#504, #13143)
+               if ( event.target.nodeType === 3 ) {
+                       event.target = event.target.parentNode;
+               }
+
+               // Support: IE<9
+               // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
+               event.metaKey = !!event.metaKey;
+
+               return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+       },
+
+       // Includes some event props shared by KeyEvent and MouseEvent
+       props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+       fixHooks: {},
+
+       keyHooks: {
+               props: "char charCode key keyCode".split(" "),
+               filter: function( event, original ) {
+
+                       // Add which for key events
+                       if ( event.which == null ) {
+                               event.which = original.charCode != null ? original.charCode : original.keyCode;
+                       }
+
+                       return event;
+               }
+       },
+
+       mouseHooks: {
+               props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+               filter: function( event, original ) {
+                       var body, eventDoc, doc,
+                               button = original.button,
+                               fromElement = original.fromElement;
+
+                       // Calculate pageX/Y if missing and clientX/Y available
+                       if ( event.pageX == null && original.clientX != null ) {
+                               eventDoc = event.target.ownerDocument || document;
+                               doc = eventDoc.documentElement;
+                               body = eventDoc.body;
+
+                               event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+                               event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
+                       }
+
+                       // Add relatedTarget, if necessary
+                       if ( !event.relatedTarget && fromElement ) {
+                               event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+                       }
+
+                       // Add which for click: 1 === left; 2 === middle; 3 === right
+                       // Note: button is not normalized, so don't use it
+                       if ( !event.which && button !== undefined ) {
+                               event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+                       }
+
+                       return event;
+               }
+       },
+
+       special: {
+               load: {
+                       // Prevent triggered image.load events from bubbling to window.load
+                       noBubble: true
+               },
+               click: {
+                       // For checkbox, fire native event so checked state will be right
+                       trigger: function() {
+                               if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
+                                       this.click();
+                                       return false;
+                               }
+                       }
+               },
+               focus: {
+                       // Fire native event if possible so blur/focus sequence is correct
+                       trigger: function() {
+                               if ( this !== document.activeElement && this.focus ) {
+                                       try {
+                                               this.focus();
+                                               return false;
+                                       } catch ( e ) {
+                                               // Support: IE<9
+                                               // If we error on focus to hidden element (#1486, #12518),
+                                               // let .trigger() run the handlers
+                                       }
+                               }
+                       },
+                       delegateType: "focusin"
+               },
+               blur: {
+                       trigger: function() {
+                               if ( this === document.activeElement && this.blur ) {
+                                       this.blur();
+                                       return false;
+                               }
+                       },
+                       delegateType: "focusout"
+               },
+
+               beforeunload: {
+                       postDispatch: function( event ) {
+
+                               // Even when returnValue equals to undefined Firefox will still show alert
+                               if ( event.result !== undefined ) {
+                                       event.originalEvent.returnValue = event.result;
+                               }
+                       }
+               }
+       },
+
+       simulate: function( type, elem, event, bubble ) {
+               // Piggyback on a donor event to simulate a different one.
+               // Fake originalEvent to avoid donor's stopPropagation, but if the
+               // simulated event prevents default then we do the same on the donor.
+               var e = jQuery.extend(
+                       new jQuery.Event(),
+                       event,
+                       { type: type,
+                               isSimulated: true,
+                               originalEvent: {}
+                       }
+               );
+               if ( bubble ) {
+                       jQuery.event.trigger( e, null, elem );
+               } else {
+                       jQuery.event.dispatch.call( elem, e );
+               }
+               if ( e.isDefaultPrevented() ) {
+                       event.preventDefault();
+               }
+       }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+       function( elem, type, handle ) {
+               if ( elem.removeEventListener ) {
+                       elem.removeEventListener( type, handle, false );
+               }
+       } :
+       function( elem, type, handle ) {
+               var name = "on" + type;
+
+               if ( elem.detachEvent ) {
+
+                       // #8545, #7054, preventing memory leaks for custom events in IE6-8
+                       // detachEvent needed property on element, by name of that event, to properly expose it to GC
+                       if ( typeof elem[ name ] === core_strundefined ) {
+                               elem[ name ] = null;
+                       }
+
+                       elem.detachEvent( name, handle );
+               }
+       };
+
+jQuery.Event = function( src, props ) {
+       // Allow instantiation without the 'new' keyword
+       if ( !(this instanceof jQuery.Event) ) {
+               return new jQuery.Event( src, props );
+       }
+
+       // Event object
+       if ( src && src.type ) {
+               this.originalEvent = src;
+               this.type = src.type;
+
+               // Events bubbling up the document may have been marked as prevented
+               // by a handler lower down the tree; reflect the correct value.
+               this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+                       src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+       // Event type
+       } else {
+               this.type = src;
+       }
+
+       // Put explicitly provided properties onto the event object
+       if ( props ) {
+               jQuery.extend( this, props );
+       }
+
+       // Create a timestamp if incoming event doesn't have one
+       this.timeStamp = src && src.timeStamp || jQuery.now();
+
+       // Mark it as fixed
+       this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+       isDefaultPrevented: returnFalse,
+       isPropagationStopped: returnFalse,
+       isImmediatePropagationStopped: returnFalse,
+
+       preventDefault: function() {
+               var e = this.originalEvent;
+
+               this.isDefaultPrevented = returnTrue;
+               if ( !e ) {
+                       return;
+               }
+
+               // If preventDefault exists, run it on the original event
+               if ( e.preventDefault ) {
+                       e.preventDefault();
+
+               // Support: IE
+               // Otherwise set the returnValue property of the original event to false
+               } else {
+                       e.returnValue = false;
+               }
+       },
+       stopPropagation: function() {
+               var e = this.originalEvent;
+
+               this.isPropagationStopped = returnTrue;
+               if ( !e ) {
+                       return;
+               }
+               // If stopPropagation exists, run it on the original event
+               if ( e.stopPropagation ) {
+                       e.stopPropagation();
+               }
+
+               // Support: IE
+               // Set the cancelBubble property of the original event to true
+               e.cancelBubble = true;
+       },
+       stopImmediatePropagation: function() {
+               this.isImmediatePropagationStopped = returnTrue;
+               this.stopPropagation();
+       }
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+       mouseenter: "mouseover",
+       mouseleave: "mouseout"
+}, function( orig, fix ) {
+       jQuery.event.special[ orig ] = {
+               delegateType: fix,
+               bindType: fix,
+
+               handle: function( event ) {
+                       var ret,
+                               target = this,
+                               related = event.relatedTarget,
+                               handleObj = event.handleObj;
+
+                       // For mousenter/leave call the handler if related is outside the target.
+                       // NB: No relatedTarget if the mouse left/entered the browser window
+                       if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+                               event.type = handleObj.origType;
+                               ret = handleObj.handler.apply( this, arguments );
+                               event.type = fix;
+                       }
+                       return ret;
+               }
+       };
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+       jQuery.event.special.submit = {
+               setup: function() {
+                       // Only need this for delegated form submit events
+                       if ( jQuery.nodeName( this, "form" ) ) {
+                               return false;
+                       }
+
+                       // Lazy-add a submit handler when a descendant form may potentially be submitted
+                       jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+                               // Node name check avoids a VML-related crash in IE (#9807)
+                               var elem = e.target,
+                                       form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+                               if ( form && !jQuery._data( form, "submitBubbles" ) ) {
+                                       jQuery.event.add( form, "submit._submit", function( event ) {
+                                               event._submit_bubble = true;
+                                       });
+                                       jQuery._data( form, "submitBubbles", true );
+                               }
+                       });
+                       // return undefined since we don't need an event listener
+               },
+
+               postDispatch: function( event ) {
+                       // If form was submitted by the user, bubble the event up the tree
+                       if ( event._submit_bubble ) {
+                               delete event._submit_bubble;
+                               if ( this.parentNode && !event.isTrigger ) {
+                                       jQuery.event.simulate( "submit", this.parentNode, event, true );
+                               }
+                       }
+               },
+
+               teardown: function() {
+                       // Only need this for delegated form submit events
+                       if ( jQuery.nodeName( this, "form" ) ) {
+                               return false;
+                       }
+
+                       // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+                       jQuery.event.remove( this, "._submit" );
+               }
+       };
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+       jQuery.event.special.change = {
+
+               setup: function() {
+
+                       if ( rformElems.test( this.nodeName ) ) {
+                               // IE doesn't fire change on a check/radio until blur; trigger it on click
+                               // after a propertychange. Eat the blur-change in special.change.handle.
+                               // This still fires onchange a second time for check/radio after blur.
+                               if ( this.type === "checkbox" || this.type === "radio" ) {
+                                       jQuery.event.add( this, "propertychange._change", function( event ) {
+                                               if ( event.originalEvent.propertyName === "checked" ) {
+                                                       this._just_changed = true;
+                                               }
+                                       });
+                                       jQuery.event.add( this, "click._change", function( event ) {
+                                               if ( this._just_changed && !event.isTrigger ) {
+                                                       this._just_changed = false;
+                                               }
+                                               // Allow triggered, simulated change events (#11500)
+                                               jQuery.event.simulate( "change", this, event, true );
+                                       });
+                               }
+                               return false;
+                       }
+                       // Delegated event; lazy-add a change handler on descendant inputs
+                       jQuery.event.add( this, "beforeactivate._change", function( e ) {
+                               var elem = e.target;
+
+                               if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
+                                       jQuery.event.add( elem, "change._change", function( event ) {
+                                               if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+                                                       jQuery.event.simulate( "change", this.parentNode, event, true );
+                                               }
+                                       });
+                                       jQuery._data( elem, "changeBubbles", true );
+                               }
+                       });
+               },
+
+               handle: function( event ) {
+                       var elem = event.target;
+
+                       // Swallow native change events from checkbox/radio, we already triggered them above
+                       if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+                               return event.handleObj.handler.apply( this, arguments );
+                       }
+               },
+
+               teardown: function() {
+                       jQuery.event.remove( this, "._change" );
+
+                       return !rformElems.test( this.nodeName );
+               }
+       };
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+       jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+               // Attach a single capturing handler while someone wants focusin/focusout
+               var attaches = 0,
+                       handler = function( event ) {
+                               jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+                       };
+
+               jQuery.event.special[ fix ] = {
+                       setup: function() {
+                               if ( attaches++ === 0 ) {
+                                       document.addEventListener( orig, handler, true );
+                               }
+                       },
+                       teardown: function() {
+                               if ( --attaches === 0 ) {
+                                       document.removeEventListener( orig, handler, true );
+                               }
+                       }
+               };
+       });
+}
+
+jQuery.fn.extend({
+
+       on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+               var type, origFn;
+
+               // Types can be a map of types/handlers
+               if ( typeof types === "object" ) {
+                       // ( types-Object, selector, data )
+                       if ( typeof selector !== "string" ) {
+                               // ( types-Object, data )
+                               data = data || selector;
+                               selector = undefined;
+                       }
+                       for ( type in types ) {
+                               this.on( type, selector, data, types[ type ], one );
+                       }
+                       return this;
+               }
+
+               if ( data == null && fn == null ) {
+                       // ( types, fn )
+                       fn = selector;
+                       data = selector = undefined;
+               } else if ( fn == null ) {
+                       if ( typeof selector === "string" ) {
+                               // ( types, selector, fn )
+                               fn = data;
+                               data = undefined;
+                       } else {
+                               // ( types, data, fn )
+                               fn = data;
+                               data = selector;
+                               selector = undefined;
+                       }
+               }
+               if ( fn === false ) {
+                       fn = returnFalse;
+               } else if ( !fn ) {
+                       return this;
+               }
+
+               if ( one === 1 ) {
+                       origFn = fn;
+                       fn = function( event ) {
+                               // Can use an empty set, since event contains the info
+                               jQuery().off( event );
+                               return origFn.apply( this, arguments );
+                       };
+                       // Use same guid so caller can remove using origFn
+                       fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+               }
+               return this.each( function() {
+                       jQuery.event.add( this, types, fn, data, selector );
+               });
+       },
+       one: function( types, selector, data, fn ) {
+               return this.on( types, selector, data, fn, 1 );
+       },
+       off: function( types, selector, fn ) {
+               var handleObj, type;
+               if ( types && types.preventDefault && types.handleObj ) {
+                       // ( event )  dispatched jQuery.Event
+                       handleObj = types.handleObj;
+                       jQuery( types.delegateTarget ).off(
+                               handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+                               handleObj.selector,
+                               handleObj.handler
+                       );
+                       return this;
+               }
+               if ( typeof types === "object" ) {
+                       // ( types-object [, selector] )
+                       for ( type in types ) {
+                               this.off( type, selector, types[ type ] );
+                       }
+                       return this;
+               }
+               if ( selector === false || typeof selector === "function" ) {
+                       // ( types [, fn] )
+                       fn = selector;
+                       selector = undefined;
+               }
+               if ( fn === false ) {
+                       fn = returnFalse;
+               }
+               return this.each(function() {
+                       jQuery.event.remove( this, types, fn, selector );
+               });
+       },
+
+       bind: function( types, data, fn ) {
+               return this.on( types, null, data, fn );
+       },
+       unbind: function( types, fn ) {
+               return this.off( types, null, fn );
+       },
+
+       delegate: function( selector, types, data, fn ) {
+               return this.on( types, selector, data, fn );
+       },
+       undelegate: function( selector, types, fn ) {
+               // ( namespace ) or ( selector, types [, fn] )
+               return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+       },
+
+       trigger: function( type, data ) {
+               return this.each(function() {
+                       jQuery.event.trigger( type, data, this );
+               });
+       },
+       triggerHandler: function( type, data ) {
+               var elem = this[0];
+               if ( elem ) {
+                       return jQuery.event.trigger( type, data, elem, true );
+               }
+       }
+});
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://sizzlejs.com/
+ */
+(function( window, undefined ) {
+
+var i,
+       cachedruns,
+       Expr,
+       getText,
+       isXML,
+       compile,
+       hasDuplicate,
+       outermostContext,
+
+       // Local document vars
+       setDocument,
+       document,
+       docElem,
+       documentIsXML,
+       rbuggyQSA,
+       rbuggyMatches,
+       matches,
+       contains,
+       sortOrder,
+
+       // Instance-specific data
+       expando = "sizzle" + -(new Date()),
+       preferredDoc = window.document,
+       support = {},
+       dirruns = 0,
+       done = 0,
+       classCache = createCache(),
+       tokenCache = createCache(),
+       compilerCache = createCache(),
+
+       // General-purpose constants
+       strundefined = typeof undefined,
+       MAX_NEGATIVE = 1 << 31,
+
+       // Array methods
+       arr = [],
+       pop = arr.pop,
+       push = arr.push,
+       slice = arr.slice,
+       // Use a stripped-down indexOf if we can't use a native one
+       indexOf = arr.indexOf || function( elem ) {
+               var i = 0,
+                       len = this.length;
+               for ( ; i < len; i++ ) {
+                       if ( this[i] === elem ) {
+                               return i;
+                       }
+               }
+               return -1;
+       },
+
+
+       // Regular expressions
+
+       // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+       whitespace = "[\\x20\\t\\r\\n\\f]",
+       // http://www.w3.org/TR/css3-syntax/#characters
+       characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+       // Loosely modeled on CSS identifier characters
+       // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+       // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+       identifier = characterEncoding.replace( "w", "w#" ),
+
+       // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
+       operators = "([*^$|!~]?=)",
+       attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
+               "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
+
+       // Prefer arguments quoted,
+       //   then not containing pseudos/brackets,
+       //   then attribute selectors/non-parenthetical expressions,
+       //   then anything else
+       // These preferences are here to reduce the number of selectors
+       //   needing tokenize in the PSEUDO preFilter
+       pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
+
+       // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+       rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+       rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+       rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ),
+       rpseudo = new RegExp( pseudos ),
+       ridentifier = new RegExp( "^" + identifier + "$" ),
+
+       matchExpr = {
+               "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+               "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+               "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ),
+               "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+               "ATTR": new RegExp( "^" + attributes ),
+               "PSEUDO": new RegExp( "^" + pseudos ),
+               "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+                       "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+                       "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+               // For use in libraries implementing .is()
+               // We use this for POS matching in `select`
+               "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+                       whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+       },
+
+       rsibling = /[\x20\t\r\n\f]*[+~]/,
+
+       rnative = /^[^{]+\{\s*\[native code/,
+
+       // Easily-parseable/retrievable ID or TAG or CLASS selectors
+       rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+       rinputs = /^(?:input|select|textarea|button)$/i,
+       rheader = /^h\d$/i,
+
+       rescape = /'|\\/g,
+       rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
+
+       // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+       runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,
+       funescape = function( _, escaped ) {
+               var high = "0x" + escaped - 0x10000;
+               // NaN means non-codepoint
+               return high !== high ?
+                       escaped :
+                       // BMP codepoint
+                       high < 0 ?
+                               String.fromCharCode( high + 0x10000 ) :
+                               // Supplemental Plane codepoint (surrogate pair)
+                               String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+       };
+
+// Use a stripped-down slice if we can't use a native one
+try {
+       slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType;
+} catch ( e ) {
+       slice = function( i ) {
+               var elem,
+                       results = [];
+               while ( (elem = this[i++]) ) {
+                       results.push( elem );
+               }
+               return results;
+       };
+}
+
+/**
+ * For feature detection
+ * @param {Function} fn The function to test for native support
+ */
+function isNative( fn ) {
+       return rnative.test( fn + "" );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ *     property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *     deleting the oldest entry
+ */
+function createCache() {
+       var cache,
+               keys = [];
+
+       return (cache = function( key, value ) {
+               // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+               if ( keys.push( key += " " ) > Expr.cacheLength ) {
+                       // Only keep the most recent entries
+                       delete cache[ keys.shift() ];
+               }
+               return (cache[ key ] = value);
+       });
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+       fn[ expando ] = true;
+       return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+       var div = document.createElement("div");
+
+       try {
+               return fn( div );
+       } catch (e) {
+               return false;
+       } finally {
+               // release memory in IE
+               div = null;
+       }
+}
+
+function Sizzle( selector, context, results, seed ) {
+       var match, elem, m, nodeType,
+               // QSA vars
+               i, groups, old, nid, newContext, newSelector;
+
+       if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+               setDocument( context );
+       }
+
+       context = context || document;
+       results = results || [];
+
+       if ( !selector || typeof selector !== "string" ) {
+               return results;
+       }
+
+       if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+               return [];
+       }
+
+       if ( !documentIsXML && !seed ) {
+
+               // Shortcuts
+               if ( (match = rquickExpr.exec( selector )) ) {
+                       // Speed-up: Sizzle("#ID")
+                       if ( (m = match[1]) ) {
+                               if ( nodeType === 9 ) {
+                                       elem = context.getElementById( m );
+                                       // Check parentNode to catch when Blackberry 4.6 returns
+                                       // nodes that are no longer in the document #6963
+                                       if ( elem && elem.parentNode ) {
+                                               // Handle the case where IE, Opera, and Webkit return items
+                                               // by name instead of ID
+                                               if ( elem.id === m ) {
+                                                       results.push( elem );
+                                                       return results;
+                                               }
+                                       } else {
+                                               return results;
+                                       }
+                               } else {
+                                       // Context is not a document
+                                       if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+                                               contains( context, elem ) && elem.id === m ) {
+                                               results.push( elem );
+                                               return results;
+                                       }
+                               }
+
+                       // Speed-up: Sizzle("TAG")
+                       } else if ( match[2] ) {
+                               push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );
+                               return results;
+
+                       // Speed-up: Sizzle(".CLASS")
+                       } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) {
+                               push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
+                               return results;
+                       }
+               }
+
+               // QSA path
+               if ( support.qsa && !rbuggyQSA.test(selector) ) {
+                       old = true;
+                       nid = expando;
+                       newContext = context;
+                       newSelector = nodeType === 9 && selector;
+
+                       // qSA works strangely on Element-rooted queries
+                       // We can work around this by specifying an extra ID on the root
+                       // and working up from there (Thanks to Andrew Dupont for the technique)
+                       // IE 8 doesn't work on object elements
+                       if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+                               groups = tokenize( selector );
+
+                               if ( (old = context.getAttribute("id")) ) {
+                                       nid = old.replace( rescape, "\\$&" );
+                               } else {
+                                       context.setAttribute( "id", nid );
+                               }
+                               nid = "[id='" + nid + "'] ";
+
+                               i = groups.length;
+                               while ( i-- ) {
+                                       groups[i] = nid + toSelector( groups[i] );
+                               }
+                               newContext = rsibling.test( selector ) && context.parentNode || context;
+                               newSelector = groups.join(",");
+                       }
+
+                       if ( newSelector ) {
+                               try {
+                                       push.apply( results, slice.call( newContext.querySelectorAll(
+                                               newSelector
+                                       ), 0 ) );
+                                       return results;
+                               } catch(qsaError) {
+                               } finally {
+                                       if ( !old ) {
+                                               context.removeAttribute("id");
+                                       }
+                               }
+                       }
+               }
+       }
+
+       // All others
+       return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Detect xml
+ * @param {Element|Object} elem An element or a document
+ */
+isXML = Sizzle.isXML = function( elem ) {
+       // documentElement is verified for cases where it doesn't yet exist
+       // (such as loading iframes in IE - #4833)
+       var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+       return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+       var doc = node ? node.ownerDocument || node : preferredDoc;
+
+       // If no document and documentElement is available, return
+       if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+               return document;
+       }
+
+       // Set our document
+       document = doc;
+       docElem = doc.documentElement;
+
+       // Support tests
+       documentIsXML = isXML( doc );
+
+       // Check if getElementsByTagName("*") returns only elements
+       support.tagNameNoComments = assert(function( div ) {
+               div.appendChild( doc.createComment("") );
+               return !div.getElementsByTagName("*").length;
+       });
+
+       // Check if attributes should be retrieved by attribute nodes
+       support.attributes = assert(function( div ) {
+               div.innerHTML = "<select></select>";
+               var type = typeof div.lastChild.getAttribute("multiple");
+               // IE8 returns a string for some attributes even when not present
+               return type !== "boolean" && type !== "string";
+       });
+
+       // Check if getElementsByClassName can be trusted
+       support.getByClassName = assert(function( div ) {
+               // Opera can't find a second classname (in 9.6)
+               div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>";
+               if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {
+                       return false;
+               }
+
+               // Safari 3.2 caches class attributes and doesn't catch changes
+               div.lastChild.className = "e";
+               return div.getElementsByClassName("e").length === 2;
+       });
+
+       // Check if getElementById returns elements by name
+       // Check if getElementsByName privileges form controls or returns elements by ID
+       support.getByName = assert(function( div ) {
+               // Inject content
+               div.id = expando + 0;
+               div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>";
+               docElem.insertBefore( div, docElem.firstChild );
+
+               // Test
+               var pass = doc.getElementsByName &&
+                       // buggy browsers will return fewer than the correct 2
+                       doc.getElementsByName( expando ).length === 2 +
+                       // buggy browsers will return more than the correct 0
+                       doc.getElementsByName( expando + 0 ).length;
+               support.getIdNotName = !doc.getElementById( expando );
+
+               // Cleanup
+               docElem.removeChild( div );
+
+               return pass;
+       });
+
+       // IE6/7 return modified attributes
+       Expr.attrHandle = assert(function( div ) {
+               div.innerHTML = "<a href='#'></a>";
+               return div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&
+                       div.firstChild.getAttribute("href") === "#";
+       }) ?
+               {} :
+               {
+                       "href": function( elem ) {
+                               return elem.getAttribute( "href", 2 );
+                       },
+                       "type": function( elem ) {
+                               return elem.getAttribute("type");
+                       }
+               };
+
+       // ID find and filter
+       if ( support.getIdNotName ) {
+               Expr.find["ID"] = function( id, context ) {
+                       if ( typeof context.getElementById !== strundefined && !documentIsXML ) {
+                               var m = context.getElementById( id );
+                               // Check parentNode to catch when Blackberry 4.6 returns
+                               // nodes that are no longer in the document #6963
+                               return m && m.parentNode ? [m] : [];
+                       }
+               };
+               Expr.filter["ID"] = function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               return elem.getAttribute("id") === attrId;
+                       };
+               };
+       } else {
+               Expr.find["ID"] = function( id, context ) {
+                       if ( typeof context.getElementById !== strundefined && !documentIsXML ) {
+                               var m = context.getElementById( id );
+
+                               return m ?
+                                       m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
+                                               [m] :
+                                               undefined :
+                                       [];
+                       }
+               };
+               Expr.filter["ID"] =  function( id ) {
+                       var attrId = id.replace( runescape, funescape );
+                       return function( elem ) {
+                               var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+                               return node && node.value === attrId;
+                       };
+               };
+       }
+
+       // Tag
+       Expr.find["TAG"] = support.tagNameNoComments ?
+               function( tag, context ) {
+                       if ( typeof context.getElementsByTagName !== strundefined ) {
+                               return context.getElementsByTagName( tag );
+                       }
+               } :
+               function( tag, context ) {
+                       var elem,
+                               tmp = [],
+                               i = 0,
+                               results = context.getElementsByTagName( tag );
+
+                       // Filter out possible comments
+                       if ( tag === "*" ) {
+                               while ( (elem = results[i++]) ) {
+                                       if ( elem.nodeType === 1 ) {
+                                               tmp.push( elem );
+                                       }
+                               }
+
+                               return tmp;
+                       }
+                       return results;
+               };
+
+       // Name
+       Expr.find["NAME"] = support.getByName && function( tag, context ) {
+               if ( typeof context.getElementsByName !== strundefined ) {
+                       return context.getElementsByName( name );
+               }
+       };
+
+       // Class
+       Expr.find["CLASS"] = support.getByClassName && function( className, context ) {
+               if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) {
+                       return context.getElementsByClassName( className );
+               }
+       };
+
+       // QSA and matchesSelector support
+
+       // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+       rbuggyMatches = [];
+
+       // qSa(:focus) reports false when true (Chrome 21),
+       // no need to also add to buggyMatches since matches checks buggyQSA
+       // A support test would require too much code (would include document ready)
+       rbuggyQSA = [ ":focus" ];
+
+       if ( (support.qsa = isNative(doc.querySelectorAll)) ) {
+               // Build QSA regex
+               // Regex strategy adopted from Diego Perini
+               assert(function( div ) {
+                       // Select is set to empty string on purpose
+                       // This is to test IE's treatment of not explictly
+                       // setting a boolean content attribute,
+                       // since its presence should be enough
+                       // http://bugs.jquery.com/ticket/12359
+                       div.innerHTML = "<select><option selected=''></option></select>";
+
+                       // IE8 - Some boolean attributes are not treated correctly
+                       if ( !div.querySelectorAll("[selected]").length ) {
+                               rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );
+                       }
+
+                       // Webkit/Opera - :checked should return selected option elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       // IE8 throws error here and will not see later tests
+                       if ( !div.querySelectorAll(":checked").length ) {
+                               rbuggyQSA.push(":checked");
+                       }
+               });
+
+               assert(function( div ) {
+
+                       // Opera 10-12/IE8 - ^= $= *= and empty values
+                       // Should not select anything
+                       div.innerHTML = "<input type='hidden' i=''/>";
+                       if ( div.querySelectorAll("[i^='']").length ) {
+                               rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" );
+                       }
+
+                       // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+                       // IE8 throws error here and will not see later tests
+                       if ( !div.querySelectorAll(":enabled").length ) {
+                               rbuggyQSA.push( ":enabled", ":disabled" );
+                       }
+
+                       // Opera 10-11 does not throw on post-comma invalid pseudos
+                       div.querySelectorAll("*,:x");
+                       rbuggyQSA.push(",.*:");
+               });
+       }
+
+       if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector ||
+               docElem.mozMatchesSelector ||
+               docElem.webkitMatchesSelector ||
+               docElem.oMatchesSelector ||
+               docElem.msMatchesSelector) )) ) {
+
+               assert(function( div ) {
+                       // Check to see if it's possible to do matchesSelector
+                       // on a disconnected node (IE 9)
+                       support.disconnectedMatch = matches.call( div, "div" );
+
+                       // This should fail with an exception
+                       // Gecko does not error, returns false instead
+                       matches.call( div, "[s!='']:x" );
+                       rbuggyMatches.push( "!=", pseudos );
+               });
+       }
+
+       rbuggyQSA = new RegExp( rbuggyQSA.join("|") );
+       rbuggyMatches = new RegExp( rbuggyMatches.join("|") );
+
+       // Element contains another
+       // Purposefully does not implement inclusive descendent
+       // As in, an element does not contain itself
+       contains = isNative(docElem.contains) || docElem.compareDocumentPosition ?
+               function( a, b ) {
+                       var adown = a.nodeType === 9 ? a.documentElement : a,
+                               bup = b && b.parentNode;
+                       return a === bup || !!( bup && bup.nodeType === 1 && (
+                               adown.contains ?
+                                       adown.contains( bup ) :
+                                       a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+                       ));
+               } :
+               function( a, b ) {
+                       if ( b ) {
+                               while ( (b = b.parentNode) ) {
+                                       if ( b === a ) {
+                                               return true;
+                                       }
+                               }
+                       }
+                       return false;
+               };
+
+       // Document order sorting
+       sortOrder = docElem.compareDocumentPosition ?
+       function( a, b ) {
+               var compare;
+
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               if ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) {
+                       if ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) {
+                               if ( a === doc || contains( preferredDoc, a ) ) {
+                                       return -1;
+                               }
+                               if ( b === doc || contains( preferredDoc, b ) ) {
+                                       return 1;
+                               }
+                               return 0;
+                       }
+                       return compare & 4 ? -1 : 1;
+               }
+
+               return a.compareDocumentPosition ? -1 : 1;
+       } :
+       function( a, b ) {
+               var cur,
+                       i = 0,
+                       aup = a.parentNode,
+                       bup = b.parentNode,
+                       ap = [ a ],
+                       bp = [ b ];
+
+               // Exit early if the nodes are identical
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+
+               // Parentless nodes are either documents or disconnected
+               } else if ( !aup || !bup ) {
+                       return a === doc ? -1 :
+                               b === doc ? 1 :
+                               aup ? -1 :
+                               bup ? 1 :
+                               0;
+
+               // If the nodes are siblings, we can do a quick check
+               } else if ( aup === bup ) {
+                       return siblingCheck( a, b );
+               }
+
+               // Otherwise we need full lists of their ancestors for comparison
+               cur = a;
+               while ( (cur = cur.parentNode) ) {
+                       ap.unshift( cur );
+               }
+               cur = b;
+               while ( (cur = cur.parentNode) ) {
+                       bp.unshift( cur );
+               }
+
+               // Walk down the tree looking for a discrepancy
+               while ( ap[i] === bp[i] ) {
+                       i++;
+               }
+
+               return i ?
+                       // Do a sibling check if the nodes have a common ancestor
+                       siblingCheck( ap[i], bp[i] ) :
+
+                       // Otherwise nodes in our document sort first
+                       ap[i] === preferredDoc ? -1 :
+                       bp[i] === preferredDoc ? 1 :
+                       0;
+       };
+
+       // Always assume the presence of duplicates if sort doesn't
+       // pass them to our comparison function (as in Google Chrome).
+       hasDuplicate = false;
+       [0, 0].sort( sortOrder );
+       support.detectDuplicates = hasDuplicate;
+
+       return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+       return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       // Make sure that attribute selectors are quoted
+       expr = expr.replace( rattributeQuotes, "='$1']" );
+
+       // rbuggyQSA always contains :focus, so no need for an existence check
+       if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) {
+               try {
+                       var ret = matches.call( elem, expr );
+
+                       // IE 9's matchesSelector returns false on disconnected nodes
+                       if ( ret || support.disconnectedMatch ||
+                                       // As well, disconnected nodes are said to be in a document
+                                       // fragment in IE 9
+                                       elem.document && elem.document.nodeType !== 11 ) {
+                               return ret;
+                       }
+               } catch(e) {}
+       }
+
+       return Sizzle( expr, document, null, [elem] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+       // Set document vars if needed
+       if ( ( context.ownerDocument || context ) !== document ) {
+               setDocument( context );
+       }
+       return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+       var val;
+
+       // Set document vars if needed
+       if ( ( elem.ownerDocument || elem ) !== document ) {
+               setDocument( elem );
+       }
+
+       if ( !documentIsXML ) {
+               name = name.toLowerCase();
+       }
+       if ( (val = Expr.attrHandle[ name ]) ) {
+               return val( elem );
+       }
+       if ( documentIsXML || support.attributes ) {
+               return elem.getAttribute( name );
+       }
+       return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ?
+               name :
+               val && val.specified ? val.value : null;
+};
+
+Sizzle.error = function( msg ) {
+       throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+// Document sorting and removing duplicates
+Sizzle.uniqueSort = function( results ) {
+       var elem,
+               duplicates = [],
+               i = 1,
+               j = 0;
+
+       // Unless we *know* we can detect duplicates, assume their presence
+       hasDuplicate = !support.detectDuplicates;
+       results.sort( sortOrder );
+
+       if ( hasDuplicate ) {
+               for ( ; (elem = results[i]); i++ ) {
+                       if ( elem === results[ i - 1 ] ) {
+                               j = duplicates.push( i );
+                       }
+               }
+               while ( j-- ) {
+                       results.splice( duplicates[ j ], 1 );
+               }
+       }
+
+       return results;
+};
+
+function siblingCheck( a, b ) {
+       var cur = b && a,
+               diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE );
+
+       // Use IE sourceIndex if available on both nodes
+       if ( diff ) {
+               return diff;
+       }
+
+       // Check if b follows a
+       if ( cur ) {
+               while ( (cur = cur.nextSibling) ) {
+                       if ( cur === b ) {
+                               return -1;
+                       }
+               }
+       }
+
+       return a ? 1 : -1;
+}
+
+// Returns a function to use in pseudos for input types
+function createInputPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return name === "input" && elem.type === type;
+       };
+}
+
+// Returns a function to use in pseudos for buttons
+function createButtonPseudo( type ) {
+       return function( elem ) {
+               var name = elem.nodeName.toLowerCase();
+               return (name === "input" || name === "button") && elem.type === type;
+       };
+}
+
+// Returns a function to use in pseudos for positionals
+function createPositionalPseudo( fn ) {
+       return markFunction(function( argument ) {
+               argument = +argument;
+               return markFunction(function( seed, matches ) {
+                       var j,
+                               matchIndexes = fn( [], seed.length, argument ),
+                               i = matchIndexes.length;
+
+                       // Match elements found at the specified indexes
+                       while ( i-- ) {
+                               if ( seed[ (j = matchIndexes[i]) ] ) {
+                                       seed[j] = !(matches[j] = seed[j]);
+                               }
+                       }
+               });
+       });
+}
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+       var node,
+               ret = "",
+               i = 0,
+               nodeType = elem.nodeType;
+
+       if ( !nodeType ) {
+               // If no nodeType, this is expected to be an array
+               for ( ; (node = elem[i]); i++ ) {
+                       // Do not traverse comment nodes
+                       ret += getText( node );
+               }
+       } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+               // Use textContent for elements
+               // innerText usage removed for consistency of new lines (see #11153)
+               if ( typeof elem.textContent === "string" ) {
+                       return elem.textContent;
+               } else {
+                       // Traverse its children
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               ret += getText( elem );
+                       }
+               }
+       } else if ( nodeType === 3 || nodeType === 4 ) {
+               return elem.nodeValue;
+       }
+       // Do not include comment or processing instruction nodes
+
+       return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+       // Can be adjusted by the user
+       cacheLength: 50,
+
+       createPseudo: markFunction,
+
+       match: matchExpr,
+
+       find: {},
+
+       relative: {
+               ">": { dir: "parentNode", first: true },
+               " ": { dir: "parentNode" },
+               "+": { dir: "previousSibling", first: true },
+               "~": { dir: "previousSibling" }
+       },
+
+       preFilter: {
+               "ATTR": function( match ) {
+                       match[1] = match[1].replace( runescape, funescape );
+
+                       // Move the given value to match[3] whether quoted or unquoted
+                       match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
+
+                       if ( match[2] === "~=" ) {
+                               match[3] = " " + match[3] + " ";
+                       }
+
+                       return match.slice( 0, 4 );
+               },
+
+               "CHILD": function( match ) {
+                       /* matches from matchExpr["CHILD"]
+                               1 type (only|nth|...)
+                               2 what (child|of-type)
+                               3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+                               4 xn-component of xn+y argument ([+-]?\d*n|)
+                               5 sign of xn-component
+                               6 x of xn-component
+                               7 sign of y-component
+                               8 y of y-component
+                       */
+                       match[1] = match[1].toLowerCase();
+
+                       if ( match[1].slice( 0, 3 ) === "nth" ) {
+                               // nth-* requires argument
+                               if ( !match[3] ) {
+                                       Sizzle.error( match[0] );
+                               }
+
+                               // numeric x and y parameters for Expr.filter.CHILD
+                               // remember that false/true cast respectively to 0/1
+                               match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+                               match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+                       // other types prohibit arguments
+                       } else if ( match[3] ) {
+                               Sizzle.error( match[0] );
+                       }
+
+                       return match;
+               },
+
+               "PSEUDO": function( match ) {
+                       var excess,
+                               unquoted = !match[5] && match[2];
+
+                       if ( matchExpr["CHILD"].test( match[0] ) ) {
+                               return null;
+                       }
+
+                       // Accept quoted arguments as-is
+                       if ( match[4] ) {
+                               match[2] = match[4];
+
+                       // Strip excess characters from unquoted arguments
+                       } else if ( unquoted && rpseudo.test( unquoted ) &&
+                               // Get excess from tokenize (recursively)
+                               (excess = tokenize( unquoted, true )) &&
+                               // advance to the next closing parenthesis
+                               (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+                               // excess is a negative index
+                               match[0] = match[0].slice( 0, excess );
+                               match[2] = unquoted.slice( 0, excess );
+                       }
+
+                       // Return only captures needed by the pseudo filter method (type and argument)
+                       return match.slice( 0, 3 );
+               }
+       },
+
+       filter: {
+
+               "TAG": function( nodeName ) {
+                       if ( nodeName === "*" ) {
+                               return function() { return true; };
+                       }
+
+                       nodeName = nodeName.replace( runescape, funescape ).toLowerCase();
+                       return function( elem ) {
+                               return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+                       };
+               },
+
+               "CLASS": function( className ) {
+                       var pattern = classCache[ className + " " ];
+
+                       return pattern ||
+                               (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+                               classCache( className, function( elem ) {
+                                       return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );
+                               });
+               },
+
+               "ATTR": function( name, operator, check ) {
+                       return function( elem ) {
+                               var result = Sizzle.attr( elem, name );
+
+                               if ( result == null ) {
+                                       return operator === "!=";
+                               }
+                               if ( !operator ) {
+                                       return true;
+                               }
+
+                               result += "";
+
+                               return operator === "=" ? result === check :
+                                       operator === "!=" ? result !== check :
+                                       operator === "^=" ? check && result.indexOf( check ) === 0 :
+                                       operator === "*=" ? check && result.indexOf( check ) > -1 :
+                                       operator === "$=" ? check && result.slice( -check.length ) === check :
+                                       operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+                                       operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+                                       false;
+                       };
+               },
+
+               "CHILD": function( type, what, argument, first, last ) {
+                       var simple = type.slice( 0, 3 ) !== "nth",
+                               forward = type.slice( -4 ) !== "last",
+                               ofType = what === "of-type";
+
+                       return first === 1 && last === 0 ?
+
+                               // Shortcut for :nth-*(n)
+                               function( elem ) {
+                                       return !!elem.parentNode;
+                               } :
+
+                               function( elem, context, xml ) {
+                                       var cache, outerCache, node, diff, nodeIndex, start,
+                                               dir = simple !== forward ? "nextSibling" : "previousSibling",
+                                               parent = elem.parentNode,
+                                               name = ofType && elem.nodeName.toLowerCase(),
+                                               useCache = !xml && !ofType;
+
+                                       if ( parent ) {
+
+                                               // :(first|last|only)-(child|of-type)
+                                               if ( simple ) {
+                                                       while ( dir ) {
+                                                               node = elem;
+                                                               while ( (node = node[ dir ]) ) {
+                                                                       if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+                                                                               return false;
+                                                                       }
+                                                               }
+                                                               // Reverse direction for :only-* (if we haven't yet done so)
+                                                               start = dir = type === "only" && !start && "nextSibling";
+                                                       }
+                                                       return true;
+                                               }
+
+                                               start = [ forward ? parent.firstChild : parent.lastChild ];
+
+                                               // non-xml :nth-child(...) stores cache data on `parent`
+                                               if ( forward && useCache ) {
+                                                       // Seek `elem` from a previously-cached index
+                                                       outerCache = parent[ expando ] || (parent[ expando ] = {});
+                                                       cache = outerCache[ type ] || [];
+                                                       nodeIndex = cache[0] === dirruns && cache[1];
+                                                       diff = cache[0] === dirruns && cache[2];
+                                                       node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+                                                               // Fallback to seeking `elem` from the start
+                                                               (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                               // When found, cache indexes on `parent` and break
+                                                               if ( node.nodeType === 1 && ++diff && node === elem ) {
+                                                                       outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+                                                                       break;
+                                                               }
+                                                       }
+
+                                               // Use previously-cached element index if available
+                                               } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+                                                       diff = cache[1];
+
+                                               // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+                                               } else {
+                                                       // Use the same loop as above to seek `elem` from the start
+                                                       while ( (node = ++nodeIndex && node && node[ dir ] ||
+                                                               (diff = nodeIndex = 0) || start.pop()) ) {
+
+                                                               if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+                                                                       // Cache the index of each encountered element
+                                                                       if ( useCache ) {
+                                                                               (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+                                                                       }
+
+                                                                       if ( node === elem ) {
+                                                                               break;
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+
+                                               // Incorporate the offset, then check against cycle size
+                                               diff -= last;
+                                               return diff === first || ( diff % first === 0 && diff / first >= 0 );
+                                       }
+                               };
+               },
+
+               "PSEUDO": function( pseudo, argument ) {
+                       // pseudo-class names are case-insensitive
+                       // http://www.w3.org/TR/selectors/#pseudo-classes
+                       // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+                       // Remember that setFilters inherits from pseudos
+                       var args,
+                               fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+                                       Sizzle.error( "unsupported pseudo: " + pseudo );
+
+                       // The user may use createPseudo to indicate that
+                       // arguments are needed to create the filter function
+                       // just as Sizzle does
+                       if ( fn[ expando ] ) {
+                               return fn( argument );
+                       }
+
+                       // But maintain support for old signatures
+                       if ( fn.length > 1 ) {
+                               args = [ pseudo, pseudo, "", argument ];
+                               return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+                                       markFunction(function( seed, matches ) {
+                                               var idx,
+                                                       matched = fn( seed, argument ),
+                                                       i = matched.length;
+                                               while ( i-- ) {
+                                                       idx = indexOf.call( seed, matched[i] );
+                                                       seed[ idx ] = !( matches[ idx ] = matched[i] );
+                                               }
+                                       }) :
+                                       function( elem ) {
+                                               return fn( elem, 0, args );
+                                       };
+                       }
+
+                       return fn;
+               }
+       },
+
+       pseudos: {
+               // Potentially complex pseudos
+               "not": markFunction(function( selector ) {
+                       // Trim the selector passed to compile
+                       // to avoid treating leading and trailing
+                       // spaces as combinators
+                       var input = [],
+                               results = [],
+                               matcher = compile( selector.replace( rtrim, "$1" ) );
+
+                       return matcher[ expando ] ?
+                               markFunction(function( seed, matches, context, xml ) {
+                                       var elem,
+                                               unmatched = matcher( seed, null, xml, [] ),
+                                               i = seed.length;
+
+                                       // Match elements unmatched by `matcher`
+                                       while ( i-- ) {
+                                               if ( (elem = unmatched[i]) ) {
+                                                       seed[i] = !(matches[i] = elem);
+                                               }
+                                       }
+                               }) :
+                               function( elem, context, xml ) {
+                                       input[0] = elem;
+                                       matcher( input, null, xml, results );
+                                       return !results.pop();
+                               };
+               }),
+
+               "has": markFunction(function( selector ) {
+                       return function( elem ) {
+                               return Sizzle( selector, elem ).length > 0;
+                       };
+               }),
+
+               "contains": markFunction(function( text ) {
+                       return function( elem ) {
+                               return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+                       };
+               }),
+
+               // "Whether an element is represented by a :lang() selector
+               // is based solely on the element's language value
+               // being equal to the identifier C,
+               // or beginning with the identifier C immediately followed by "-".
+               // The matching of C against the element's language value is performed case-insensitively.
+               // The identifier C does not have to be a valid language name."
+               // http://www.w3.org/TR/selectors/#lang-pseudo
+               "lang": markFunction( function( lang ) {
+                       // lang value must be a valid identifider
+                       if ( !ridentifier.test(lang || "") ) {
+                               Sizzle.error( "unsupported lang: " + lang );
+                       }
+                       lang = lang.replace( runescape, funescape ).toLowerCase();
+                       return function( elem ) {
+                               var elemLang;
+                               do {
+                                       if ( (elemLang = documentIsXML ?
+                                               elem.getAttribute("xml:lang") || elem.getAttribute("lang") :
+                                               elem.lang) ) {
+
+                                               elemLang = elemLang.toLowerCase();
+                                               return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+                                       }
+                               } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+                               return false;
+                       };
+               }),
+
+               // Miscellaneous
+               "target": function( elem ) {
+                       var hash = window.location && window.location.hash;
+                       return hash && hash.slice( 1 ) === elem.id;
+               },
+
+               "root": function( elem ) {
+                       return elem === docElem;
+               },
+
+               "focus": function( elem ) {
+                       return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+               },
+
+               // Boolean properties
+               "enabled": function( elem ) {
+                       return elem.disabled === false;
+               },
+
+               "disabled": function( elem ) {
+                       return elem.disabled === true;
+               },
+
+               "checked": function( elem ) {
+                       // In CSS3, :checked should return both checked and selected elements
+                       // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+                       var nodeName = elem.nodeName.toLowerCase();
+                       return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+               },
+
+               "selected": function( elem ) {
+                       // Accessing this property makes selected-by-default
+                       // options in Safari work properly
+                       if ( elem.parentNode ) {
+                               elem.parentNode.selectedIndex;
+                       }
+
+                       return elem.selected === true;
+               },
+
+               // Contents
+               "empty": function( elem ) {
+                       // http://www.w3.org/TR/selectors/#empty-pseudo
+                       // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
+                       //   not comment, processing instructions, or others
+                       // Thanks to Diego Perini for the nodeName shortcut
+                       //   Greater than "@" means alpha characters (specifically not starting with "#" or "?")
+                       for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+                               if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               },
+
+               "parent": function( elem ) {
+                       return !Expr.pseudos["empty"]( elem );
+               },
+
+               // Element/input types
+               "header": function( elem ) {
+                       return rheader.test( elem.nodeName );
+               },
+
+               "input": function( elem ) {
+                       return rinputs.test( elem.nodeName );
+               },
+
+               "button": function( elem ) {
+                       var name = elem.nodeName.toLowerCase();
+                       return name === "input" && elem.type === "button" || name === "button";
+               },
+
+               "text": function( elem ) {
+                       var attr;
+                       // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+                       // use getAttribute instead to test this case
+                       return elem.nodeName.toLowerCase() === "input" &&
+                               elem.type === "text" &&
+                               ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
+               },
+
+               // Position-in-collection
+               "first": createPositionalPseudo(function() {
+                       return [ 0 ];
+               }),
+
+               "last": createPositionalPseudo(function( matchIndexes, length ) {
+                       return [ length - 1 ];
+               }),
+
+               "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       return [ argument < 0 ? argument + length : argument ];
+               }),
+
+               "even": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 0;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "odd": createPositionalPseudo(function( matchIndexes, length ) {
+                       var i = 1;
+                       for ( ; i < length; i += 2 ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; --i >= 0; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               }),
+
+               "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+                       var i = argument < 0 ? argument + length : argument;
+                       for ( ; ++i < length; ) {
+                               matchIndexes.push( i );
+                       }
+                       return matchIndexes;
+               })
+       }
+};
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+       Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+       Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+function tokenize( selector, parseOnly ) {
+       var matched, match, tokens, type,
+               soFar, groups, preFilters,
+               cached = tokenCache[ selector + " " ];
+
+       if ( cached ) {
+               return parseOnly ? 0 : cached.slice( 0 );
+       }
+
+       soFar = selector;
+       groups = [];
+       preFilters = Expr.preFilter;
+
+       while ( soFar ) {
+
+               // Comma and first run
+               if ( !matched || (match = rcomma.exec( soFar )) ) {
+                       if ( match ) {
+                               // Don't consume trailing commas as valid
+                               soFar = soFar.slice( match[0].length ) || soFar;
+                       }
+                       groups.push( tokens = [] );
+               }
+
+               matched = false;
+
+               // Combinators
+               if ( (match = rcombinators.exec( soFar )) ) {
+                       matched = match.shift();
+                       tokens.push( {
+                               value: matched,
+                               // Cast descendant combinators to space
+                               type: match[0].replace( rtrim, " " )
+                       } );
+                       soFar = soFar.slice( matched.length );
+               }
+
+               // Filters
+               for ( type in Expr.filter ) {
+                       if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+                               (match = preFilters[ type ]( match ))) ) {
+                               matched = match.shift();
+                               tokens.push( {
+                                       value: matched,
+                                       type: type,
+                                       matches: match
+                               } );
+                               soFar = soFar.slice( matched.length );
+                       }
+               }
+
+               if ( !matched ) {
+                       break;
+               }
+       }
+
+       // Return the length of the invalid excess
+       // if we're just parsing
+       // Otherwise, throw an error or return tokens
+       return parseOnly ?
+               soFar.length :
+               soFar ?
+                       Sizzle.error( selector ) :
+                       // Cache the tokens
+                       tokenCache( selector, groups ).slice( 0 );
+}
+
+function toSelector( tokens ) {
+       var i = 0,
+               len = tokens.length,
+               selector = "";
+       for ( ; i < len; i++ ) {
+               selector += tokens[i].value;
+       }
+       return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+       var dir = combinator.dir,
+               checkNonElements = base && dir === "parentNode",
+               doneName = done++;
+
+       return combinator.first ?
+               // Check against closest ancestor/preceding element
+               function( elem, context, xml ) {
+                       while ( (elem = elem[ dir ]) ) {
+                               if ( elem.nodeType === 1 || checkNonElements ) {
+                                       return matcher( elem, context, xml );
+                               }
+                       }
+               } :
+
+               // Check against all ancestor/preceding elements
+               function( elem, context, xml ) {
+                       var data, cache, outerCache,
+                               dirkey = dirruns + " " + doneName;
+
+                       // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+                       if ( xml ) {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               if ( matcher( elem, context, xml ) ) {
+                                                       return true;
+                                               }
+                                       }
+                               }
+                       } else {
+                               while ( (elem = elem[ dir ]) ) {
+                                       if ( elem.nodeType === 1 || checkNonElements ) {
+                                               outerCache = elem[ expando ] || (elem[ expando ] = {});
+                                               if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
+                                                       if ( (data = cache[1]) === true || data === cachedruns ) {
+                                                               return data === true;
+                                                       }
+                                               } else {
+                                                       cache = outerCache[ dir ] = [ dirkey ];
+                                                       cache[1] = matcher( elem, context, xml ) || cachedruns;
+                                                       if ( cache[1] === true ) {
+                                                               return true;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               };
+}
+
+function elementMatcher( matchers ) {
+       return matchers.length > 1 ?
+               function( elem, context, xml ) {
+                       var i = matchers.length;
+                       while ( i-- ) {
+                               if ( !matchers[i]( elem, context, xml ) ) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               } :
+               matchers[0];
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+       var elem,
+               newUnmatched = [],
+               i = 0,
+               len = unmatched.length,
+               mapped = map != null;
+
+       for ( ; i < len; i++ ) {
+               if ( (elem = unmatched[i]) ) {
+                       if ( !filter || filter( elem, context, xml ) ) {
+                               newUnmatched.push( elem );
+                               if ( mapped ) {
+                                       map.push( i );
+                               }
+                       }
+               }
+       }
+
+       return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+       if ( postFilter && !postFilter[ expando ] ) {
+               postFilter = setMatcher( postFilter );
+       }
+       if ( postFinder && !postFinder[ expando ] ) {
+               postFinder = setMatcher( postFinder, postSelector );
+       }
+       return markFunction(function( seed, results, context, xml ) {
+               var temp, i, elem,
+                       preMap = [],
+                       postMap = [],
+                       preexisting = results.length,
+
+                       // Get initial elements from seed or context
+                       elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+                       // Prefilter to get matcher input, preserving a map for seed-results synchronization
+                       matcherIn = preFilter && ( seed || !selector ) ?
+                               condense( elems, preMap, preFilter, context, xml ) :
+                               elems,
+
+                       matcherOut = matcher ?
+                               // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+                               postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+                                       // ...intermediate processing is necessary
+                                       [] :
+
+                                       // ...otherwise use results directly
+                                       results :
+                               matcherIn;
+
+               // Find primary matches
+               if ( matcher ) {
+                       matcher( matcherIn, matcherOut, context, xml );
+               }
+
+               // Apply postFilter
+               if ( postFilter ) {
+                       temp = condense( matcherOut, postMap );
+                       postFilter( temp, [], context, xml );
+
+                       // Un-match failing elements by moving them back to matcherIn
+                       i = temp.length;
+                       while ( i-- ) {
+                               if ( (elem = temp[i]) ) {
+                                       matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+                               }
+                       }
+               }
+
+               if ( seed ) {
+                       if ( postFinder || preFilter ) {
+                               if ( postFinder ) {
+                                       // Get the final matcherOut by condensing this intermediate into postFinder contexts
+                                       temp = [];
+                                       i = matcherOut.length;
+                                       while ( i-- ) {
+                                               if ( (elem = matcherOut[i]) ) {
+                                                       // Restore matcherIn since elem is not yet a final match
+                                                       temp.push( (matcherIn[i] = elem) );
+                                               }
+                                       }
+                                       postFinder( null, (matcherOut = []), temp, xml );
+                               }
+
+                               // Move matched elements from seed to results to keep them synchronized
+                               i = matcherOut.length;
+                               while ( i-- ) {
+                                       if ( (elem = matcherOut[i]) &&
+                                               (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+
+                                               seed[temp] = !(results[temp] = elem);
+                                       }
+                               }
+                       }
+
+               // Add elements to results, through postFinder if defined
+               } else {
+                       matcherOut = condense(
+                               matcherOut === results ?
+                                       matcherOut.splice( preexisting, matcherOut.length ) :
+                                       matcherOut
+                       );
+                       if ( postFinder ) {
+                               postFinder( null, results, matcherOut, xml );
+                       } else {
+                               push.apply( results, matcherOut );
+                       }
+               }
+       });
+}
+
+function matcherFromTokens( tokens ) {
+       var checkContext, matcher, j,
+               len = tokens.length,
+               leadingRelative = Expr.relative[ tokens[0].type ],
+               implicitRelative = leadingRelative || Expr.relative[" "],
+               i = leadingRelative ? 1 : 0,
+
+               // The foundational matcher ensures that elements are reachable from top-level context(s)
+               matchContext = addCombinator( function( elem ) {
+                       return elem === checkContext;
+               }, implicitRelative, true ),
+               matchAnyContext = addCombinator( function( elem ) {
+                       return indexOf.call( checkContext, elem ) > -1;
+               }, implicitRelative, true ),
+               matchers = [ function( elem, context, xml ) {
+                       return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+                               (checkContext = context).nodeType ?
+                                       matchContext( elem, context, xml ) :
+                                       matchAnyContext( elem, context, xml ) );
+               } ];
+
+       for ( ; i < len; i++ ) {
+               if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+                       matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+               } else {
+                       matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+                       // Return special upon seeing a positional matcher
+                       if ( matcher[ expando ] ) {
+                               // Find the next relative operator (if any) for proper handling
+                               j = ++i;
+                               for ( ; j < len; j++ ) {
+                                       if ( Expr.relative[ tokens[j].type ] ) {
+                                               break;
+                                       }
+                               }
+                               return setMatcher(
+                                       i > 1 && elementMatcher( matchers ),
+                                       i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ),
+                                       matcher,
+                                       i < j && matcherFromTokens( tokens.slice( i, j ) ),
+                                       j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+                                       j < len && toSelector( tokens )
+                               );
+                       }
+                       matchers.push( matcher );
+               }
+       }
+
+       return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+       // A counter to specify which element is currently being matched
+       var matcherCachedRuns = 0,
+               bySet = setMatchers.length > 0,
+               byElement = elementMatchers.length > 0,
+               superMatcher = function( seed, context, xml, results, expandContext ) {
+                       var elem, j, matcher,
+                               setMatched = [],
+                               matchedCount = 0,
+                               i = "0",
+                               unmatched = seed && [],
+                               outermost = expandContext != null,
+                               contextBackup = outermostContext,
+                               // We must always have either seed elements or context
+                               elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
+                               // Use integer dirruns iff this is the outermost matcher
+                               dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
+
+                       if ( outermost ) {
+                               outermostContext = context !== document && context;
+                               cachedruns = matcherCachedRuns;
+                       }
+
+                       // Add elements passing elementMatchers directly to results
+                       // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+                       for ( ; (elem = elems[i]) != null; i++ ) {
+                               if ( byElement && elem ) {
+                                       j = 0;
+                                       while ( (matcher = elementMatchers[j++]) ) {
+                                               if ( matcher( elem, context, xml ) ) {
+                                                       results.push( elem );
+                                                       break;
+                                               }
+                                       }
+                                       if ( outermost ) {
+                                               dirruns = dirrunsUnique;
+                                               cachedruns = ++matcherCachedRuns;
+                                       }
+                               }
+
+                               // Track unmatched elements for set filters
+                               if ( bySet ) {
+                                       // They will have gone through all possible matchers
+                                       if ( (elem = !matcher && elem) ) {
+                                               matchedCount--;
+                                       }
+
+                                       // Lengthen the array for every element, matched or not
+                                       if ( seed ) {
+                                               unmatched.push( elem );
+                                       }
+                               }
+                       }
+
+                       // Apply set filters to unmatched elements
+                       matchedCount += i;
+                       if ( bySet && i !== matchedCount ) {
+                               j = 0;
+                               while ( (matcher = setMatchers[j++]) ) {
+                                       matcher( unmatched, setMatched, context, xml );
+                               }
+
+                               if ( seed ) {
+                                       // Reintegrate element matches to eliminate the need for sorting
+                                       if ( matchedCount > 0 ) {
+                                               while ( i-- ) {
+                                                       if ( !(unmatched[i] || setMatched[i]) ) {
+                                                               setMatched[i] = pop.call( results );
+                                                       }
+                                               }
+                                       }
+
+                                       // Discard index placeholder values to get only actual matches
+                                       setMatched = condense( setMatched );
+                               }
+
+                               // Add matches to results
+                               push.apply( results, setMatched );
+
+                               // Seedless set matches succeeding multiple successful matchers stipulate sorting
+                               if ( outermost && !seed && setMatched.length > 0 &&
+                                       ( matchedCount + setMatchers.length ) > 1 ) {
+
+                                       Sizzle.uniqueSort( results );
+                               }
+                       }
+
+                       // Override manipulation of globals by nested matchers
+                       if ( outermost ) {
+                               dirruns = dirrunsUnique;
+                               outermostContext = contextBackup;
+                       }
+
+                       return unmatched;
+               };
+
+       return bySet ?
+               markFunction( superMatcher ) :
+               superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
+       var i,
+               setMatchers = [],
+               elementMatchers = [],
+               cached = compilerCache[ selector + " " ];
+
+       if ( !cached ) {
+               // Generate a function of recursive functions that can be used to check each element
+               if ( !group ) {
+                       group = tokenize( selector );
+               }
+               i = group.length;
+               while ( i-- ) {
+                       cached = matcherFromTokens( group[i] );
+                       if ( cached[ expando ] ) {
+                               setMatchers.push( cached );
+                       } else {
+                               elementMatchers.push( cached );
+                       }
+               }
+
+               // Cache the compiled function
+               cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+       }
+       return cached;
+};
+
+function multipleContexts( selector, contexts, results ) {
+       var i = 0,
+               len = contexts.length;
+       for ( ; i < len; i++ ) {
+               Sizzle( selector, contexts[i], results );
+       }
+       return results;
+}
+
+function select( selector, context, results, seed ) {
+       var i, tokens, token, type, find,
+               match = tokenize( selector );
+
+       if ( !seed ) {
+               // Try to minimize operations if there is only one group
+               if ( match.length === 1 ) {
+
+                       // Take a shortcut and set the context if the root selector is an ID
+                       tokens = match[0] = match[0].slice( 0 );
+                       if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+                                       context.nodeType === 9 && !documentIsXML &&
+                                       Expr.relative[ tokens[1].type ] ) {
+
+                               context = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0];
+                               if ( !context ) {
+                                       return results;
+                               }
+
+                               selector = selector.slice( tokens.shift().value.length );
+                       }
+
+                       // Fetch a seed set for right-to-left matching
+                       i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+                       while ( i-- ) {
+                               token = tokens[i];
+
+                               // Abort if we hit a combinator
+                               if ( Expr.relative[ (type = token.type) ] ) {
+                                       break;
+                               }
+                               if ( (find = Expr.find[ type ]) ) {
+                                       // Search, expanding context for leading sibling combinators
+                                       if ( (seed = find(
+                                               token.matches[0].replace( runescape, funescape ),
+                                               rsibling.test( tokens[0].type ) && context.parentNode || context
+                                       )) ) {
+
+                                               // If seed is empty or no tokens remain, we can return early
+                                               tokens.splice( i, 1 );
+                                               selector = seed.length && toSelector( tokens );
+                                               if ( !selector ) {
+                                                       push.apply( results, slice.call( seed, 0 ) );
+                                                       return results;
+                                               }
+
+                                               break;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       // Compile and execute a filtering function
+       // Provide `match` to avoid retokenization if we modified the selector above
+       compile( selector, match )(
+               seed,
+               context,
+               documentIsXML,
+               results,
+               rsibling.test( selector )
+       );
+       return results;
+}
+
+// Deprecated
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Easy API for creating new setFilters
+function setFilters() {}
+Expr.filters = setFilters.prototype = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+// Initialize with the default document
+setDocument();
+
+// Override sizzle attribute retrieval
+Sizzle.attr = jQuery.attr;
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})( window );
+var runtil = /Until$/,
+       rparentsprev = /^(?:parents|prev(?:Until|All))/,
+       isSimple = /^.[^:#\[\.,]*$/,
+       rneedsContext = jQuery.expr.match.needsContext,
+       // methods guaranteed to produce a unique set when starting from a unique set
+       guaranteedUnique = {
+               children: true,
+               contents: true,
+               next: true,
+               prev: true
+       };
+
+jQuery.fn.extend({
+       find: function( selector ) {
+               var i, ret, self,
+                       len = this.length;
+
+               if ( typeof selector !== "string" ) {
+                       self = this;
+                       return this.pushStack( jQuery( selector ).filter(function() {
+                               for ( i = 0; i < len; i++ ) {
+                                       if ( jQuery.contains( self[ i ], this ) ) {
+                                               return true;
+                                       }
+                               }
+                       }) );
+               }
+
+               ret = [];
+               for ( i = 0; i < len; i++ ) {
+                       jQuery.find( selector, this[ i ], ret );
+               }
+
+               // Needed because $( selector, context ) becomes $( context ).find( selector )
+               ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+               ret.selector = ( this.selector ? this.selector + " " : "" ) + selector;
+               return ret;
+       },
+
+       has: function( target ) {
+               var i,
+                       targets = jQuery( target, this ),
+                       len = targets.length;
+
+               return this.filter(function() {
+                       for ( i = 0; i < len; i++ ) {
+                               if ( jQuery.contains( this, targets[i] ) ) {
+                                       return true;
+                               }
+                       }
+               });
+       },
+
+       not: function( selector ) {
+               return this.pushStack( winnow(this, selector, false) );
+       },
+
+       filter: function( selector ) {
+               return this.pushStack( winnow(this, selector, true) );
+       },
+
+       is: function( selector ) {
+               return !!selector && (
+                       typeof selector === "string" ?
+                               // If this is a positional/relative selector, check membership in the returned set
+                               // so $("p:first").is("p:last") won't return true for a doc with two "p".
+                               rneedsContext.test( selector ) ?
+                                       jQuery( selector, this.context ).index( this[0] ) >= 0 :
+                                       jQuery.filter( selector, this ).length > 0 :
+                               this.filter( selector ).length > 0 );
+       },
+
+       closest: function( selectors, context ) {
+               var cur,
+                       i = 0,
+                       l = this.length,
+                       ret = [],
+                       pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+                               jQuery( selectors, context || this.context ) :
+                               0;
+
+               for ( ; i < l; i++ ) {
+                       cur = this[i];
+
+                       while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {
+                               if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+                                       ret.push( cur );
+                                       break;
+                               }
+                               cur = cur.parentNode;
+                       }
+               }
+
+               return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
+       },
+
+       // Determine the position of an element within
+       // the matched set of elements
+       index: function( elem ) {
+
+               // No argument, return index in parent
+               if ( !elem ) {
+                       return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
+               }
+
+               // index in selector
+               if ( typeof elem === "string" ) {
+                       return jQuery.inArray( this[0], jQuery( elem ) );
+               }
+
+               // Locate the position of the desired element
+               return jQuery.inArray(
+                       // If it receives a jQuery object, the first element is used
+                       elem.jquery ? elem[0] : elem, this );
+       },
+
+       add: function( selector, context ) {
+               var set = typeof selector === "string" ?
+                               jQuery( selector, context ) :
+                               jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+                       all = jQuery.merge( this.get(), set );
+
+               return this.pushStack( jQuery.unique(all) );
+       },
+
+       addBack: function( selector ) {
+               return this.add( selector == null ?
+                       this.prevObject : this.prevObject.filter(selector)
+               );
+       }
+});
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+function sibling( cur, dir ) {
+       do {
+               cur = cur[ dir ];
+       } while ( cur && cur.nodeType !== 1 );
+
+       return cur;
+}
+
+jQuery.each({
+       parent: function( elem ) {
+               var parent = elem.parentNode;
+               return parent && parent.nodeType !== 11 ? parent : null;
+       },
+       parents: function( elem ) {
+               return jQuery.dir( elem, "parentNode" );
+       },
+       parentsUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "parentNode", until );
+       },
+       next: function( elem ) {
+               return sibling( elem, "nextSibling" );
+       },
+       prev: function( elem ) {
+               return sibling( elem, "previousSibling" );
+       },
+       nextAll: function( elem ) {
+               return jQuery.dir( elem, "nextSibling" );
+       },
+       prevAll: function( elem ) {
+               return jQuery.dir( elem, "previousSibling" );
+       },
+       nextUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "nextSibling", until );
+       },
+       prevUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "previousSibling", until );
+       },
+       siblings: function( elem ) {
+               return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+       },
+       children: function( elem ) {
+               return jQuery.sibling( elem.firstChild );
+       },
+       contents: function( elem ) {
+               return jQuery.nodeName( elem, "iframe" ) ?
+                       elem.contentDocument || elem.contentWindow.document :
+                       jQuery.merge( [], elem.childNodes );
+       }
+}, function( name, fn ) {
+       jQuery.fn[ name ] = function( until, selector ) {
+               var ret = jQuery.map( this, fn, until );
+
+               if ( !runtil.test( name ) ) {
+                       selector = until;
+               }
+
+               if ( selector && typeof selector === "string" ) {
+                       ret = jQuery.filter( selector, ret );
+               }
+
+               ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
+
+               if ( this.length > 1 && rparentsprev.test( name ) ) {
+                       ret = ret.reverse();
+               }
+
+               return this.pushStack( ret );
+       };
+});
+
+jQuery.extend({
+       filter: function( expr, elems, not ) {
+               if ( not ) {
+                       expr = ":not(" + expr + ")";
+               }
+
+               return elems.length === 1 ?
+                       jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+                       jQuery.find.matches(expr, elems);
+       },
+
+       dir: function( elem, dir, until ) {
+               var matched = [],
+                       cur = elem[ dir ];
+
+               while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+                       if ( cur.nodeType === 1 ) {
+                               matched.push( cur );
+                       }
+                       cur = cur[dir];
+               }
+               return matched;
+       },
+
+       sibling: function( n, elem ) {
+               var r = [];
+
+               for ( ; n; n = n.nextSibling ) {
+                       if ( n.nodeType === 1 && n !== elem ) {
+                               r.push( n );
+                       }
+               }
+
+               return r;
+       }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+
+       // Can't pass null or undefined to indexOf in Firefox 4
+       // Set to 0 to skip string check
+       qualifier = qualifier || 0;
+
+       if ( jQuery.isFunction( qualifier ) ) {
+               return jQuery.grep(elements, function( elem, i ) {
+                       var retVal = !!qualifier.call( elem, i, elem );
+                       return retVal === keep;
+               });
+
+       } else if ( qualifier.nodeType ) {
+               return jQuery.grep(elements, function( elem ) {
+                       return ( elem === qualifier ) === keep;
+               });
+
+       } else if ( typeof qualifier === "string" ) {
+               var filtered = jQuery.grep(elements, function( elem ) {
+                       return elem.nodeType === 1;
+               });
+
+               if ( isSimple.test( qualifier ) ) {
+                       return jQuery.filter(qualifier, filtered, !keep);
+               } else {
+                       qualifier = jQuery.filter( qualifier, filtered );
+               }
+       }
+
+       return jQuery.grep(elements, function( elem ) {
+               return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
+       });
+}
+function createSafeFragment( document ) {
+       var list = nodeNames.split( "|" ),
+               safeFrag = document.createDocumentFragment();
+
+       if ( safeFrag.createElement ) {
+               while ( list.length ) {
+                       safeFrag.createElement(
+                               list.pop()
+                       );
+               }
+       }
+       return safeFrag;
+}
+
+var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
+               "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
+       rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
+       rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
+       rleadingWhitespace = /^\s+/,
+       rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+       rtagName = /<([\w:]+)/,
+       rtbody = /<tbody/i,
+       rhtml = /<|&#?\w+;/,
+       rnoInnerhtml = /<(?:script|style|link)/i,
+       manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
+       // checked="checked" or checked
+       rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+       rscriptType = /^$|\/(?:java|ecma)script/i,
+       rscriptTypeMasked = /^true\/(.*)/,
+       rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+       // We have to close these tags to support XHTML (#13200)
+       wrapMap = {
+               option: [ 1, "<select multiple='multiple'>", "</select>" ],
+               legend: [ 1, "<fieldset>", "</fieldset>" ],
+               area: [ 1, "<map>", "</map>" ],
+               param: [ 1, "<object>", "</object>" ],
+               thead: [ 1, "<table>", "</table>" ],
+               tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+               col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+               td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+               // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
+               // unless wrapped in a div with non-breaking characters in front of it.
+               _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>"  ]
+       },
+       safeFragment = createSafeFragment( document ),
+       fragmentDiv = safeFragment.appendChild( document.createElement("div") );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+jQuery.fn.extend({
+       text: function( value ) {
+               return jQuery.access( this, function( value ) {
+                       return value === undefined ?
+                               jQuery.text( this ) :
+                               this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
+               }, null, value, arguments.length );
+       },
+
+       wrapAll: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function(i) {
+                               jQuery(this).wrapAll( html.call(this, i) );
+                       });
+               }
+
+               if ( this[0] ) {
+                       // The elements to wrap the target around
+                       var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+                       if ( this[0].parentNode ) {
+                               wrap.insertBefore( this[0] );
+                       }
+
+                       wrap.map(function() {
+                               var elem = this;
+
+                               while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+                                       elem = elem.firstChild;
+                               }
+
+                               return elem;
+                       }).append( this );
+               }
+
+               return this;
+       },
+
+       wrapInner: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function(i) {
+                               jQuery(this).wrapInner( html.call(this, i) );
+                       });
+               }
+
+               return this.each(function() {
+                       var self = jQuery( this ),
+                               contents = self.contents();
+
+                       if ( contents.length ) {
+                               contents.wrapAll( html );
+
+                       } else {
+                               self.append( html );
+                       }
+               });
+       },
+
+       wrap: function( html ) {
+               var isFunction = jQuery.isFunction( html );
+
+               return this.each(function(i) {
+                       jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+               });
+       },
+
+       unwrap: function() {
+               return this.parent().each(function() {
+                       if ( !jQuery.nodeName( this, "body" ) ) {
+                               jQuery( this ).replaceWith( this.childNodes );
+                       }
+               }).end();
+       },
+
+       append: function() {
+               return this.domManip(arguments, true, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               this.appendChild( elem );
+                       }
+               });
+       },
+
+       prepend: function() {
+               return this.domManip(arguments, true, function( elem ) {
+                       if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+                               this.insertBefore( elem, this.firstChild );
+                       }
+               });
+       },
+
+       before: function() {
+               return this.domManip( arguments, false, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this );
+                       }
+               });
+       },
+
+       after: function() {
+               return this.domManip( arguments, false, function( elem ) {
+                       if ( this.parentNode ) {
+                               this.parentNode.insertBefore( elem, this.nextSibling );
+                       }
+               });
+       },
+
+       // keepData is for internal use only--do not document
+       remove: function( selector, keepData ) {
+               var elem,
+                       i = 0;
+
+               for ( ; (elem = this[i]) != null; i++ ) {
+                       if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) {
+                               if ( !keepData && elem.nodeType === 1 ) {
+                                       jQuery.cleanData( getAll( elem ) );
+                               }
+
+                               if ( elem.parentNode ) {
+                                       if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+                                               setGlobalEval( getAll( elem, "script" ) );
+                                       }
+                                       elem.parentNode.removeChild( elem );
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       empty: function() {
+               var elem,
+                       i = 0;
+
+               for ( ; (elem = this[i]) != null; i++ ) {
+                       // Remove element nodes and prevent memory leaks
+                       if ( elem.nodeType === 1 ) {
+                               jQuery.cleanData( getAll( elem, false ) );
+                       }
+
+                       // Remove any remaining nodes
+                       while ( elem.firstChild ) {
+                               elem.removeChild( elem.firstChild );
+                       }
+
+                       // If this is a select, ensure that it displays empty (#12336)
+                       // Support: IE<9
+                       if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
+                               elem.options.length = 0;
+                       }
+               }
+
+               return this;
+       },
+
+       clone: function( dataAndEvents, deepDataAndEvents ) {
+               dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+               deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+               return this.map( function () {
+                       return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+               });
+       },
+
+       html: function( value ) {
+               return jQuery.access( this, function( value ) {
+                       var elem = this[0] || {},
+                               i = 0,
+                               l = this.length;
+
+                       if ( value === undefined ) {
+                               return elem.nodeType === 1 ?
+                                       elem.innerHTML.replace( rinlinejQuery, "" ) :
+                                       undefined;
+                       }
+
+                       // See if we can take a shortcut and just use innerHTML
+                       if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+                               ( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&
+                               ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
+                               !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
+
+                               value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+                               try {
+                                       for (; i < l; i++ ) {
+                                               // Remove element nodes and prevent memory leaks
+                                               elem = this[i] || {};
+                                               if ( elem.nodeType === 1 ) {
+                                                       jQuery.cleanData( getAll( elem, false ) );
+                                                       elem.innerHTML = value;
+                                               }
+                                       }
+
+                                       elem = 0;
+
+                               // If using innerHTML throws an exception, use the fallback method
+                               } catch(e) {}
+                       }
+
+                       if ( elem ) {
+                               this.empty().append( value );
+                       }
+               }, null, value, arguments.length );
+       },
+
+       replaceWith: function( value ) {
+               var isFunc = jQuery.isFunction( value );
+
+               // Make sure that the elements are removed from the DOM before they are inserted
+               // this can help fix replacing a parent with child elements
+               if ( !isFunc && typeof value !== "string" ) {
+                       value = jQuery( value ).not( this ).detach();
+               }
+
+               return this.domManip( [ value ], true, function( elem ) {
+                       var next = this.nextSibling,
+                               parent = this.parentNode;
+
+                       if ( parent ) {
+                               jQuery( this ).remove();
+                               parent.insertBefore( elem, next );
+                       }
+               });
+       },
+
+       detach: function( selector ) {
+               return this.remove( selector, true );
+       },
+
+       domManip: function( args, table, callback ) {
+
+               // Flatten any nested arrays
+               args = core_concat.apply( [], args );
+
+               var first, node, hasScripts,
+                       scripts, doc, fragment,
+                       i = 0,
+                       l = this.length,
+                       set = this,
+                       iNoClone = l - 1,
+                       value = args[0],
+                       isFunction = jQuery.isFunction( value );
+
+               // We can't cloneNode fragments that contain checked, in WebKit
+               if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
+                       return this.each(function( index ) {
+                               var self = set.eq( index );
+                               if ( isFunction ) {
+                                       args[0] = value.call( this, index, table ? self.html() : undefined );
+                               }
+                               self.domManip( args, table, callback );
+                       });
+               }
+
+               if ( l ) {
+                       fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
+                       first = fragment.firstChild;
+
+                       if ( fragment.childNodes.length === 1 ) {
+                               fragment = first;
+                       }
+
+                       if ( first ) {
+                               table = table && jQuery.nodeName( first, "tr" );
+                               scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+                               hasScripts = scripts.length;
+
+                               // Use the original fragment for the last item instead of the first because it can end up
+                               // being emptied incorrectly in certain situations (#8070).
+                               for ( ; i < l; i++ ) {
+                                       node = fragment;
+
+                                       if ( i !== iNoClone ) {
+                                               node = jQuery.clone( node, true, true );
+
+                                               // Keep references to cloned scripts for later restoration
+                                               if ( hasScripts ) {
+                                                       jQuery.merge( scripts, getAll( node, "script" ) );
+                                               }
+                                       }
+
+                                       callback.call(
+                                               table && jQuery.nodeName( this[i], "table" ) ?
+                                                       findOrAppend( this[i], "tbody" ) :
+                                                       this[i],
+                                               node,
+                                               i
+                                       );
+                               }
+
+                               if ( hasScripts ) {
+                                       doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+                                       // Reenable scripts
+                                       jQuery.map( scripts, restoreScript );
+
+                                       // Evaluate executable scripts on first document insertion
+                                       for ( i = 0; i < hasScripts; i++ ) {
+                                               node = scripts[ i ];
+                                               if ( rscriptType.test( node.type || "" ) &&
+                                                       !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+                                                       if ( node.src ) {
+                                                               // Hope ajax is available...
+                                                               jQuery.ajax({
+                                                                       url: node.src,
+                                                                       type: "GET",
+                                                                       dataType: "script",
+                                                                       async: false,
+                                                                       global: false,
+                                                                       "throws": true
+                                                               });
+                                                       } else {
+                                                               jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               // Fix #11809: Avoid leaking memory
+                               fragment = first = null;
+                       }
+               }
+
+               return this;
+       }
+});
+
+function findOrAppend( elem, tag ) {
+       return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+       var attr = elem.getAttributeNode("type");
+       elem.type = ( attr && attr.specified ) + "/" + elem.type;
+       return elem;
+}
+function restoreScript( elem ) {
+       var match = rscriptTypeMasked.exec( elem.type );
+       if ( match ) {
+               elem.type = match[1];
+       } else {
+               elem.removeAttribute("type");
+       }
+       return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+       var elem,
+               i = 0;
+       for ( ; (elem = elems[i]) != null; i++ ) {
+               jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
+       }
+}
+
+function cloneCopyEvent( src, dest ) {
+
+       if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+               return;
+       }
+
+       var type, i, l,
+               oldData = jQuery._data( src ),
+               curData = jQuery._data( dest, oldData ),
+               events = oldData.events;
+
+       if ( events ) {
+               delete curData.handle;
+               curData.events = {};
+
+               for ( type in events ) {
+                       for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+                               jQuery.event.add( dest, type, events[ type ][ i ] );
+                       }
+               }
+       }
+
+       // make the cloned public data object a copy from the original
+       if ( curData.data ) {
+               curData.data = jQuery.extend( {}, curData.data );
+       }
+}
+
+function fixCloneNodeIssues( src, dest ) {
+       var nodeName, e, data;
+
+       // We do not need to do anything for non-Elements
+       if ( dest.nodeType !== 1 ) {
+               return;
+       }
+
+       nodeName = dest.nodeName.toLowerCase();
+
+       // IE6-8 copies events bound via attachEvent when using cloneNode.
+       if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
+               data = jQuery._data( dest );
+
+               for ( e in data.events ) {
+                       jQuery.removeEvent( dest, e, data.handle );
+               }
+
+               // Event data gets referenced instead of copied if the expando gets copied too
+               dest.removeAttribute( jQuery.expando );
+       }
+
+       // IE blanks contents when cloning scripts, and tries to evaluate newly-set text
+       if ( nodeName === "script" && dest.text !== src.text ) {
+               disableScript( dest ).text = src.text;
+               restoreScript( dest );
+
+       // IE6-10 improperly clones children of object elements using classid.
+       // IE10 throws NoModificationAllowedError if parent is null, #12132.
+       } else if ( nodeName === "object" ) {
+               if ( dest.parentNode ) {
+                       dest.outerHTML = src.outerHTML;
+               }
+
+               // This path appears unavoidable for IE9. When cloning an object
+               // element in IE9, the outerHTML strategy above is not sufficient.
+               // If the src has innerHTML and the destination does not,
+               // copy the src.innerHTML into the dest.innerHTML. #10324
+               if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
+                       dest.innerHTML = src.innerHTML;
+               }
+
+       } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
+               // IE6-8 fails to persist the checked state of a cloned checkbox
+               // or radio button. Worse, IE6-7 fail to give the cloned element
+               // a checked appearance if the defaultChecked value isn't also set
+
+               dest.defaultChecked = dest.checked = src.checked;
+
+               // IE6-7 get confused and end up setting the value of a cloned
+               // checkbox/radio button to an empty string instead of "on"
+               if ( dest.value !== src.value ) {
+                       dest.value = src.value;
+               }
+
+       // IE6-8 fails to return the selected option to the default selected
+       // state when cloning options
+       } else if ( nodeName === "option" ) {
+               dest.defaultSelected = dest.selected = src.defaultSelected;
+
+       // IE6-8 fails to set the defaultValue to the correct value when
+       // cloning other types of input fields
+       } else if ( nodeName === "input" || nodeName === "textarea" ) {
+               dest.defaultValue = src.defaultValue;
+       }
+}
+
+jQuery.each({
+       appendTo: "append",
+       prependTo: "prepend",
+       insertBefore: "before",
+       insertAfter: "after",
+       replaceAll: "replaceWith"
+}, function( name, original ) {
+       jQuery.fn[ name ] = function( selector ) {
+               var elems,
+                       i = 0,
+                       ret = [],
+                       insert = jQuery( selector ),
+                       last = insert.length - 1;
+
+               for ( ; i <= last; i++ ) {
+                       elems = i === last ? this : this.clone(true);
+                       jQuery( insert[i] )[ original ]( elems );
+
+                       // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
+                       core_push.apply( ret, elems.get() );
+               }
+
+               return this.pushStack( ret );
+       };
+});
+
+function getAll( context, tag ) {
+       var elems, elem,
+               i = 0,
+               found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
+                       typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
+                       undefined;
+
+       if ( !found ) {
+               for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
+                       if ( !tag || jQuery.nodeName( elem, tag ) ) {
+                               found.push( elem );
+                       } else {
+                               jQuery.merge( found, getAll( elem, tag ) );
+                       }
+               }
+       }
+
+       return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+               jQuery.merge( [ context ], found ) :
+               found;
+}
+
+// Used in buildFragment, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+       if ( manipulation_rcheckableType.test( elem.type ) ) {
+               elem.defaultChecked = elem.checked;
+       }
+}
+
+jQuery.extend({
+       clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+               var destElements, node, clone, i, srcElements,
+                       inPage = jQuery.contains( elem.ownerDocument, elem );
+
+               if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
+                       clone = elem.cloneNode( true );
+
+               // IE<=8 does not properly clone detached, unknown element nodes
+               } else {
+                       fragmentDiv.innerHTML = elem.outerHTML;
+                       fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
+               }
+
+               if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+                               (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+
+                       // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+                       destElements = getAll( clone );
+                       srcElements = getAll( elem );
+
+                       // Fix all IE cloning issues
+                       for ( i = 0; (node = srcElements[i]) != null; ++i ) {
+                               // Ensure that the destination node is not null; Fixes #9587
+                               if ( destElements[i] ) {
+                                       fixCloneNodeIssues( node, destElements[i] );
+                               }
+                       }
+               }
+
+               // Copy the events from the original to the clone
+               if ( dataAndEvents ) {
+                       if ( deepDataAndEvents ) {
+                               srcElements = srcElements || getAll( elem );
+                               destElements = destElements || getAll( clone );
+
+                               for ( i = 0; (node = srcElements[i]) != null; i++ ) {
+                                       cloneCopyEvent( node, destElements[i] );
+                               }
+                       } else {
+                               cloneCopyEvent( elem, clone );
+                       }
+               }
+
+               // Preserve script evaluation history
+               destElements = getAll( clone, "script" );
+               if ( destElements.length > 0 ) {
+                       setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+               }
+
+               destElements = srcElements = node = null;
+
+               // Return the cloned set
+               return clone;
+       },
+
+       buildFragment: function( elems, context, scripts, selection ) {
+               var j, elem, contains,
+                       tmp, tag, tbody, wrap,
+                       l = elems.length,
+
+                       // Ensure a safe fragment
+                       safe = createSafeFragment( context ),
+
+                       nodes = [],
+                       i = 0;
+
+               for ( ; i < l; i++ ) {
+                       elem = elems[ i ];
+
+                       if ( elem || elem === 0 ) {
+
+                               // Add nodes directly
+                               if ( jQuery.type( elem ) === "object" ) {
+                                       jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+                               // Convert non-html into a text node
+                               } else if ( !rhtml.test( elem ) ) {
+                                       nodes.push( context.createTextNode( elem ) );
+
+                               // Convert html into DOM nodes
+                               } else {
+                                       tmp = tmp || safe.appendChild( context.createElement("div") );
+
+                                       // Deserialize a standard representation
+                                       tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
+                                       wrap = wrapMap[ tag ] || wrapMap._default;
+
+                                       tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
+
+                                       // Descend through wrappers to the right content
+                                       j = wrap[0];
+                                       while ( j-- ) {
+                                               tmp = tmp.lastChild;
+                                       }
+
+                                       // Manually add leading whitespace removed by IE
+                                       if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+                                               nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
+                                       }
+
+                                       // Remove IE's autoinserted <tbody> from table fragments
+                                       if ( !jQuery.support.tbody ) {
+
+                                               // String was a <table>, *may* have spurious <tbody>
+                                               elem = tag === "table" && !rtbody.test( elem ) ?
+                                                       tmp.firstChild :
+
+                                                       // String was a bare <thead> or <tfoot>
+                                                       wrap[1] === "<table>" && !rtbody.test( elem ) ?
+                                                               tmp :
+                                                               0;
+
+                                               j = elem && elem.childNodes.length;
+                                               while ( j-- ) {
+                                                       if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
+                                                               elem.removeChild( tbody );
+                                                       }
+                                               }
+                                       }
+
+                                       jQuery.merge( nodes, tmp.childNodes );
+
+                                       // Fix #12392 for WebKit and IE > 9
+                                       tmp.textContent = "";
+
+                                       // Fix #12392 for oldIE
+                                       while ( tmp.firstChild ) {
+                                               tmp.removeChild( tmp.firstChild );
+                                       }
+
+                                       // Remember the top-level container for proper cleanup
+                                       tmp = safe.lastChild;
+                               }
+                       }
+               }
+
+               // Fix #11356: Clear elements from fragment
+               if ( tmp ) {
+                       safe.removeChild( tmp );
+               }
+
+               // Reset defaultChecked for any radios and checkboxes
+               // about to be appended to the DOM in IE 6/7 (#8060)
+               if ( !jQuery.support.appendChecked ) {
+                       jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
+               }
+
+               i = 0;
+               while ( (elem = nodes[ i++ ]) ) {
+
+                       // #4087 - If origin and destination elements are the same, and this is
+                       // that element, do not do anything
+                       if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+                               continue;
+                       }
+
+                       contains = jQuery.contains( elem.ownerDocument, elem );
+
+                       // Append to fragment
+                       tmp = getAll( safe.appendChild( elem ), "script" );
+
+                       // Preserve script evaluation history
+                       if ( contains ) {
+                               setGlobalEval( tmp );
+                       }
+
+                       // Capture executables
+                       if ( scripts ) {
+                               j = 0;
+                               while ( (elem = tmp[ j++ ]) ) {
+                                       if ( rscriptType.test( elem.type || "" ) ) {
+                                               scripts.push( elem );
+                                       }
+                               }
+                       }
+               }
+
+               tmp = null;
+
+               return safe;
+       },
+
+       cleanData: function( elems, /* internal */ acceptData ) {
+               var elem, type, id, data,
+                       i = 0,
+                       internalKey = jQuery.expando,
+                       cache = jQuery.cache,
+                       deleteExpando = jQuery.support.deleteExpando,
+                       special = jQuery.event.special;
+
+               for ( ; (elem = elems[i]) != null; i++ ) {
+
+                       if ( acceptData || jQuery.acceptData( elem ) ) {
+
+                               id = elem[ internalKey ];
+                               data = id && cache[ id ];
+
+                               if ( data ) {
+                                       if ( data.events ) {
+                                               for ( type in data.events ) {
+                                                       if ( special[ type ] ) {
+                                                               jQuery.event.remove( elem, type );
+
+                                                       // This is a shortcut to avoid jQuery.event.remove's overhead
+                                                       } else {
+                                                               jQuery.removeEvent( elem, type, data.handle );
+                                                       }
+                                               }
+                                       }
+
+                                       // Remove cache only if it was not already removed by jQuery.event.remove
+                                       if ( cache[ id ] ) {
+
+                                               delete cache[ id ];
+
+                                               // IE does not allow us to delete expando properties from nodes,
+                                               // nor does it have a removeAttribute function on Document nodes;
+                                               // we must handle all of these cases
+                                               if ( deleteExpando ) {
+                                                       delete elem[ internalKey ];
+
+                                               } else if ( typeof elem.removeAttribute !== core_strundefined ) {
+                                                       elem.removeAttribute( internalKey );
+
+                                               } else {
+                                                       elem[ internalKey ] = null;
+                                               }
+
+                                               core_deletedIds.push( id );
+                                       }
+                               }
+                       }
+               }
+       }
+});
+var iframe, getStyles, curCSS,
+       ralpha = /alpha\([^)]*\)/i,
+       ropacity = /opacity\s*=\s*([^)]*)/,
+       rposition = /^(top|right|bottom|left)$/,
+       // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+       // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+       rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+       rmargin = /^margin/,
+       rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
+       rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
+       rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
+       elemdisplay = { BODY: "block" },
+
+       cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+       cssNormalTransform = {
+               letterSpacing: 0,
+               fontWeight: 400
+       },
+
+       cssExpand = [ "Top", "Right", "Bottom", "Left" ],
+       cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+       // shortcut for names that are not vendor prefixed
+       if ( name in style ) {
+               return name;
+       }
+
+       // check for vendor prefixed names
+       var capName = name.charAt(0).toUpperCase() + name.slice(1),
+               origName = name,
+               i = cssPrefixes.length;
+
+       while ( i-- ) {
+               name = cssPrefixes[ i ] + capName;
+               if ( name in style ) {
+                       return name;
+               }
+       }
+
+       return origName;
+}
+
+function isHidden( elem, el ) {
+       // isHidden might be called from jQuery#filter function;
+       // in that case, element will be second argument
+       elem = el || elem;
+       return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+}
+
+function showHide( elements, show ) {
+       var display, elem, hidden,
+               values = [],
+               index = 0,
+               length = elements.length;
+
+       for ( ; index < length; index++ ) {
+               elem = elements[ index ];
+               if ( !elem.style ) {
+                       continue;
+               }
+
+               values[ index ] = jQuery._data( elem, "olddisplay" );
+               display = elem.style.display;
+               if ( show ) {
+                       // Reset the inline display of this element to learn if it is
+                       // being hidden by cascaded rules or not
+                       if ( !values[ index ] && display === "none" ) {
+                               elem.style.display = "";
+                       }
+
+                       // Set elements which have been overridden with display: none
+                       // in a stylesheet to whatever the default browser style is
+                       // for such an element
+                       if ( elem.style.display === "" && isHidden( elem ) ) {
+                               values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
+                       }
+               } else {
+
+                       if ( !values[ index ] ) {
+                               hidden = isHidden( elem );
+
+                               if ( display && display !== "none" || !hidden ) {
+                                       jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+                               }
+                       }
+               }
+       }
+
+       // Set the display of most of the elements in a second loop
+       // to avoid the constant reflow
+       for ( index = 0; index < length; index++ ) {
+               elem = elements[ index ];
+               if ( !elem.style ) {
+                       continue;
+               }
+               if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+                       elem.style.display = show ? values[ index ] || "" : "none";
+               }
+       }
+
+       return elements;
+}
+
+jQuery.fn.extend({
+       css: function( name, value ) {
+               return jQuery.access( this, function( elem, name, value ) {
+                       var len, styles,
+                               map = {},
+                               i = 0;
+
+                       if ( jQuery.isArray( name ) ) {
+                               styles = getStyles( elem );
+                               len = name.length;
+
+                               for ( ; i < len; i++ ) {
+                                       map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+                               }
+
+                               return map;
+                       }
+
+                       return value !== undefined ?
+                               jQuery.style( elem, name, value ) :
+                               jQuery.css( elem, name );
+               }, name, value, arguments.length > 1 );
+       },
+       show: function() {
+               return showHide( this, true );
+       },
+       hide: function() {
+               return showHide( this );
+       },
+       toggle: function( state ) {
+               var bool = typeof state === "boolean";
+
+               return this.each(function() {
+                       if ( bool ? state : isHidden( this ) ) {
+                               jQuery( this ).show();
+                       } else {
+                               jQuery( this ).hide();
+                       }
+               });
+       }
+});
+
+jQuery.extend({
+       // Add in style property hooks for overriding the default
+       // behavior of getting and setting a style property
+       cssHooks: {
+               opacity: {
+                       get: function( elem, computed ) {
+                               if ( computed ) {
+                                       // We should always get a number back from opacity
+                                       var ret = curCSS( elem, "opacity" );
+                                       return ret === "" ? "1" : ret;
+                               }
+                       }
+               }
+       },
+
+       // Exclude the following css properties to add px
+       cssNumber: {
+               "columnCount": true,
+               "fillOpacity": true,
+               "fontWeight": true,
+               "lineHeight": true,
+               "opacity": true,
+               "orphans": true,
+               "widows": true,
+               "zIndex": true,
+               "zoom": true
+       },
+
+       // Add in properties whose names you wish to fix before
+       // setting or getting the value
+       cssProps: {
+               // normalize float css property
+               "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+       },
+
+       // Get and set the style property on a DOM Node
+       style: function( elem, name, value, extra ) {
+               // Don't set styles on text and comment nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+                       return;
+               }
+
+               // Make sure that we're working with the right name
+               var ret, type, hooks,
+                       origName = jQuery.camelCase( name ),
+                       style = elem.style;
+
+               name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+               // gets hook for the prefixed version
+               // followed by the unprefixed version
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // Check if we're setting a value
+               if ( value !== undefined ) {
+                       type = typeof value;
+
+                       // convert relative number strings (+= or -=) to relative numbers. #7345
+                       if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+                               value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+                               // Fixes bug #9237
+                               type = "number";
+                       }
+
+                       // Make sure that NaN and null values aren't set. See: #7116
+                       if ( value == null || type === "number" && isNaN( value ) ) {
+                               return;
+                       }
+
+                       // If a number was passed in, add 'px' to the (except for certain CSS properties)
+                       if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+                               value += "px";
+                       }
+
+                       // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
+                       // but it would mean to define eight (for every problematic property) identical functions
+                       if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
+                               style[ name ] = "inherit";
+                       }
+
+                       // If a hook was provided, use that value, otherwise just set the specified value
+                       if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+
+                               // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+                               // Fixes bug #5509
+                               try {
+                                       style[ name ] = value;
+                               } catch(e) {}
+                       }
+
+               } else {
+                       // If a hook was provided get the non-computed value from there
+                       if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+                               return ret;
+                       }
+
+                       // Otherwise just get the value from the style object
+                       return style[ name ];
+               }
+       },
+
+       css: function( elem, name, extra, styles ) {
+               var num, val, hooks,
+                       origName = jQuery.camelCase( name );
+
+               // Make sure that we're working with the right name
+               name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+               // gets hook for the prefixed version
+               // followed by the unprefixed version
+               hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+               // If a hook was provided get the computed value from there
+               if ( hooks && "get" in hooks ) {
+                       val = hooks.get( elem, true, extra );
+               }
+
+               // Otherwise, if a way to get the computed value exists, use that
+               if ( val === undefined ) {
+                       val = curCSS( elem, name, styles );
+               }
+
+               //convert "normal" to computed value
+               if ( val === "normal" && name in cssNormalTransform ) {
+                       val = cssNormalTransform[ name ];
+               }
+
+               // Return, converting to number if forced or a qualifier was provided and val looks numeric
+               if ( extra === "" || extra ) {
+                       num = parseFloat( val );
+                       return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+               }
+               return val;
+       },
+
+       // A method for quickly swapping in/out CSS properties to get correct calculations
+       swap: function( elem, options, callback, args ) {
+               var ret, name,
+                       old = {};
+
+               // Remember the old values, and insert the new ones
+               for ( name in options ) {
+                       old[ name ] = elem.style[ name ];
+                       elem.style[ name ] = options[ name ];
+               }
+
+               ret = callback.apply( elem, args || [] );
+
+               // Revert the old values
+               for ( name in options ) {
+                       elem.style[ name ] = old[ name ];
+               }
+
+               return ret;
+       }
+});
+
+// NOTE: we've included the "window" in window.getComputedStyle
+// because jsdom on node.js will break without it.
+if ( window.getComputedStyle ) {
+       getStyles = function( elem ) {
+               return window.getComputedStyle( elem, null );
+       };
+
+       curCSS = function( elem, name, _computed ) {
+               var width, minWidth, maxWidth,
+                       computed = _computed || getStyles( elem ),
+
+                       // getPropertyValue is only needed for .css('filter') in IE9, see #12537
+                       ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
+                       style = elem.style;
+
+               if ( computed ) {
+
+                       if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+                               ret = jQuery.style( elem, name );
+                       }
+
+                       // A tribute to the "awesome hack by Dean Edwards"
+                       // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
+                       // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+                       // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+                       if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+                               // Remember the original values
+                               width = style.width;
+                               minWidth = style.minWidth;
+                               maxWidth = style.maxWidth;
+
+                               // Put in the new values to get a computed value out
+                               style.minWidth = style.maxWidth = style.width = ret;
+                               ret = computed.width;
+
+                               // Revert the changed values
+                               style.width = width;
+                               style.minWidth = minWidth;
+                               style.maxWidth = maxWidth;
+                       }
+               }
+
+               return ret;
+       };
+} else if ( document.documentElement.currentStyle ) {
+       getStyles = function( elem ) {
+               return elem.currentStyle;
+       };
+
+       curCSS = function( elem, name, _computed ) {
+               var left, rs, rsLeft,
+                       computed = _computed || getStyles( elem ),
+                       ret = computed ? computed[ name ] : undefined,
+                       style = elem.style;
+
+               // Avoid setting ret to empty string here
+               // so we don't default to auto
+               if ( ret == null && style && style[ name ] ) {
+                       ret = style[ name ];
+               }
+
+               // From the awesome hack by Dean Edwards
+               // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+               // If we're not dealing with a regular pixel number
+               // but a number that has a weird ending, we need to convert it to pixels
+               // but not position css attributes, as those are proportional to the parent element instead
+               // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
+               if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
+
+                       // Remember the original values
+                       left = style.left;
+                       rs = elem.runtimeStyle;
+                       rsLeft = rs && rs.left;
+
+                       // Put in the new values to get a computed value out
+                       if ( rsLeft ) {
+                               rs.left = elem.currentStyle.left;
+                       }
+                       style.left = name === "fontSize" ? "1em" : ret;
+                       ret = style.pixelLeft + "px";
+
+                       // Revert the changed values
+                       style.left = left;
+                       if ( rsLeft ) {
+                               rs.left = rsLeft;
+                       }
+               }
+
+               return ret === "" ? "auto" : ret;
+       };
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+       var matches = rnumsplit.exec( value );
+       return matches ?
+               // Guard against undefined "subtract", e.g., when used as in cssHooks
+               Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+               value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+       var i = extra === ( isBorderBox ? "border" : "content" ) ?
+               // If we already have the right measurement, avoid augmentation
+               4 :
+               // Otherwise initialize for horizontal or vertical properties
+               name === "width" ? 1 : 0,
+
+               val = 0;
+
+       for ( ; i < 4; i += 2 ) {
+               // both box models exclude margin, so add it if we want it
+               if ( extra === "margin" ) {
+                       val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+               }
+
+               if ( isBorderBox ) {
+                       // border-box includes padding, so remove it if we want content
+                       if ( extra === "content" ) {
+                               val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+                       }
+
+                       // at this point, extra isn't border nor margin, so remove border
+                       if ( extra !== "margin" ) {
+                               val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               } else {
+                       // at this point, extra isn't content, so add padding
+                       val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+                       // at this point, extra isn't content nor padding, so add border
+                       if ( extra !== "padding" ) {
+                               val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+                       }
+               }
+       }
+
+       return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+       // Start with offset property, which is equivalent to the border-box value
+       var valueIsBorderBox = true,
+               val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+               styles = getStyles( elem ),
+               isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+       // some non-html elements return undefined for offsetWidth, so check for null/undefined
+       // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+       // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+       if ( val <= 0 || val == null ) {
+               // Fall back to computed then uncomputed css if necessary
+               val = curCSS( elem, name, styles );
+               if ( val < 0 || val == null ) {
+                       val = elem.style[ name ];
+               }
+
+               // Computed unit is not pixels. Stop here and return.
+               if ( rnumnonpx.test(val) ) {
+                       return val;
+               }
+
+               // we need the check for style in case a browser which returns unreliable values
+               // for getComputedStyle silently falls back to the reliable elem.style
+               valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
+
+               // Normalize "", auto, and prepare for extra
+               val = parseFloat( val ) || 0;
+       }
+
+       // use the active box-sizing model to add/subtract irrelevant styles
+       return ( val +
+               augmentWidthOrHeight(
+                       elem,
+                       name,
+                       extra || ( isBorderBox ? "border" : "content" ),
+                       valueIsBorderBox,
+                       styles
+               )
+       ) + "px";
+}
+
+// Try to determine the default display value of an element
+function css_defaultDisplay( nodeName ) {
+       var doc = document,
+               display = elemdisplay[ nodeName ];
+
+       if ( !display ) {
+               display = actualDisplay( nodeName, doc );
+
+               // If the simple way fails, read from inside an iframe
+               if ( display === "none" || !display ) {
+                       // Use the already-created iframe if possible
+                       iframe = ( iframe ||
+                               jQuery("<iframe frameborder='0' width='0' height='0'/>")
+                               .css( "cssText", "display:block !important" )
+                       ).appendTo( doc.documentElement );
+
+                       // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+                       doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
+                       doc.write("<!doctype html><html><body>");
+                       doc.close();
+
+                       display = actualDisplay( nodeName, doc );
+                       iframe.detach();
+               }
+
+               // Store the correct default display
+               elemdisplay[ nodeName ] = display;
+       }
+
+       return display;
+}
+
+// Called ONLY from within css_defaultDisplay
+function actualDisplay( name, doc ) {
+       var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+               display = jQuery.css( elem[0], "display" );
+       elem.remove();
+       return display;
+}
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+       jQuery.cssHooks[ name ] = {
+               get: function( elem, computed, extra ) {
+                       if ( computed ) {
+                               // certain elements can have dimension info if we invisibly show them
+                               // however, it must have a current display style that would benefit from this
+                               return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
+                                       jQuery.swap( elem, cssShow, function() {
+                                               return getWidthOrHeight( elem, name, extra );
+                                       }) :
+                                       getWidthOrHeight( elem, name, extra );
+                       }
+               },
+
+               set: function( elem, value, extra ) {
+                       var styles = extra && getStyles( elem );
+                       return setPositiveNumber( elem, value, extra ?
+                               augmentWidthOrHeight(
+                                       elem,
+                                       name,
+                                       extra,
+                                       jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+                                       styles
+                               ) : 0
+                       );
+               }
+       };
+});
+
+if ( !jQuery.support.opacity ) {
+       jQuery.cssHooks.opacity = {
+               get: function( elem, computed ) {
+                       // IE uses filters for opacity
+                       return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+                               ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
+                               computed ? "1" : "";
+               },
+
+               set: function( elem, value ) {
+                       var style = elem.style,
+                               currentStyle = elem.currentStyle,
+                               opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+                               filter = currentStyle && currentStyle.filter || style.filter || "";
+
+                       // IE has trouble with opacity if it does not have layout
+                       // Force it by setting the zoom level
+                       style.zoom = 1;
+
+                       // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+                       // if value === "", then remove inline opacity #12685
+                       if ( ( value >= 1 || value === "" ) &&
+                                       jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
+                                       style.removeAttribute ) {
+
+                               // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+                               // if "filter:" is present at all, clearType is disabled, we want to avoid this
+                               // style.removeAttribute is IE Only, but so apparently is this code path...
+                               style.removeAttribute( "filter" );
+
+                               // if there is no filter style applied in a css rule or unset inline opacity, we are done
+                               if ( value === "" || currentStyle && !currentStyle.filter ) {
+                                       return;
+                               }
+                       }
+
+                       // otherwise, set new filter values
+                       style.filter = ralpha.test( filter ) ?
+                               filter.replace( ralpha, opacity ) :
+                               filter + " " + opacity;
+               }
+       };
+}
+
+// These hooks cannot be added until DOM ready because the support test
+// for it is not run until after DOM ready
+jQuery(function() {
+       if ( !jQuery.support.reliableMarginRight ) {
+               jQuery.cssHooks.marginRight = {
+                       get: function( elem, computed ) {
+                               if ( computed ) {
+                                       // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+                                       // Work around by temporarily setting element display to inline-block
+                                       return jQuery.swap( elem, { "display": "inline-block" },
+                                               curCSS, [ elem, "marginRight" ] );
+                               }
+                       }
+               };
+       }
+
+       // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+       // getComputedStyle returns percent when specified for top/left/bottom/right
+       // rather than make the css module depend on the offset module, we just check for it here
+       if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
+               jQuery.each( [ "top", "left" ], function( i, prop ) {
+                       jQuery.cssHooks[ prop ] = {
+                               get: function( elem, computed ) {
+                                       if ( computed ) {
+                                               computed = curCSS( elem, prop );
+                                               // if curCSS returns percentage, fallback to offset
+                                               return rnumnonpx.test( computed ) ?
+                                                       jQuery( elem ).position()[ prop ] + "px" :
+                                                       computed;
+                                       }
+                               }
+                       };
+               });
+       }
+
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+       jQuery.expr.filters.hidden = function( elem ) {
+               // Support: Opera <= 12.12
+               // Opera reports offsetWidths and offsetHeights less than zero on some elements
+               return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
+                       (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+       };
+
+       jQuery.expr.filters.visible = function( elem ) {
+               return !jQuery.expr.filters.hidden( elem );
+       };
+}
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+       margin: "",
+       padding: "",
+       border: "Width"
+}, function( prefix, suffix ) {
+       jQuery.cssHooks[ prefix + suffix ] = {
+               expand: function( value ) {
+                       var i = 0,
+                               expanded = {},
+
+                               // assumes a single number if not a string
+                               parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+                       for ( ; i < 4; i++ ) {
+                               expanded[ prefix + cssExpand[ i ] + suffix ] =
+                                       parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+                       }
+
+                       return expanded;
+               }
+       };
+
+       if ( !rmargin.test( prefix ) ) {
+               jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+       }
+});
+var r20 = /%20/g,
+       rbracket = /\[\]$/,
+       rCRLF = /\r?\n/g,
+       rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+       rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+jQuery.fn.extend({
+       serialize: function() {
+               return jQuery.param( this.serializeArray() );
+       },
+       serializeArray: function() {
+               return this.map(function(){
+                       // Can add propHook for "elements" to filter or add form elements
+                       var elements = jQuery.prop( this, "elements" );
+                       return elements ? jQuery.makeArray( elements ) : this;
+               })
+               .filter(function(){
+                       var type = this.type;
+                       // Use .is(":disabled") so that fieldset[disabled] works
+                       return this.name && !jQuery( this ).is( ":disabled" ) &&
+                               rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+                               ( this.checked || !manipulation_rcheckableType.test( type ) );
+               })
+               .map(function( i, elem ){
+                       var val = jQuery( this ).val();
+
+                       return val == null ?
+                               null :
+                               jQuery.isArray( val ) ?
+                                       jQuery.map( val, function( val ){
+                                               return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+                                       }) :
+                                       { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+               }).get();
+       }
+});
+
+//Serialize an array of form elements or a set of
+//key/values into a query string
+jQuery.param = function( a, traditional ) {
+       var prefix,
+               s = [],
+               add = function( key, value ) {
+                       // If value is a function, invoke it and return its value
+                       value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+                       s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+               };
+
+       // Set traditional to true for jQuery <= 1.3.2 behavior.
+       if ( traditional === undefined ) {
+               traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+       }
+
+       // If an array was passed in, assume that it is an array of form elements.
+       if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+               // Serialize the form elements
+               jQuery.each( a, function() {
+                       add( this.name, this.value );
+               });
+
+       } else {
+               // If traditional, encode the "old" way (the way 1.3.2 or older
+               // did it), otherwise encode params recursively.
+               for ( prefix in a ) {
+                       buildParams( prefix, a[ prefix ], traditional, add );
+               }
+       }
+
+       // Return the resulting serialization
+       return s.join( "&" ).replace( r20, "+" );
+};
+
+function buildParams( prefix, obj, traditional, add ) {
+       var name;
+
+       if ( jQuery.isArray( obj ) ) {
+               // Serialize array item.
+               jQuery.each( obj, function( i, v ) {
+                       if ( traditional || rbracket.test( prefix ) ) {
+                               // Treat each array item as a scalar.
+                               add( prefix, v );
+
+                       } else {
+                               // Item is non-scalar (array or object), encode its numeric index.
+                               buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+                       }
+               });
+
+       } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+               // Serialize object item.
+               for ( name in obj ) {
+                       buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+               }
+
+       } else {
+               // Serialize scalar item.
+               add( prefix, obj );
+       }
+}
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+       "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+       "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+       // Handle event binding
+       jQuery.fn[ name ] = function( data, fn ) {
+               return arguments.length > 0 ?
+                       this.on( name, null, data, fn ) :
+                       this.trigger( name );
+       };
+});
+
+jQuery.fn.hover = function( fnOver, fnOut ) {
+       return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+};
+var
+       // Document location
+       ajaxLocParts,
+       ajaxLocation,
+       ajax_nonce = jQuery.now(),
+
+       ajax_rquery = /\?/,
+       rhash = /#.*$/,
+       rts = /([?&])_=[^&]*/,
+       rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+       // #7653, #8125, #8152: local protocol detection
+       rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+       rnoContent = /^(?:GET|HEAD)$/,
+       rprotocol = /^\/\//,
+       rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
+
+       // Keep a copy of the old load method
+       _load = jQuery.fn.load,
+
+       /* Prefilters
+        * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+        * 2) These are called:
+        *    - BEFORE asking for a transport
+        *    - AFTER param serialization (s.data is a string if s.processData is true)
+        * 3) key is the dataType
+        * 4) the catchall symbol "*" can be used
+        * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+        */
+       prefilters = {},
+
+       /* Transports bindings
+        * 1) key is the dataType
+        * 2) the catchall symbol "*" can be used
+        * 3) selection will start with transport dataType and THEN go to "*" if needed
+        */
+       transports = {},
+
+       // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+       allTypes = "*/".concat("*");
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+       ajaxLocation = location.href;
+} catch( e ) {
+       // Use the href attribute of an A element
+       // since IE will modify it given document.location
+       ajaxLocation = document.createElement( "a" );
+       ajaxLocation.href = "";
+       ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+       // dataTypeExpression is optional and defaults to "*"
+       return function( dataTypeExpression, func ) {
+
+               if ( typeof dataTypeExpression !== "string" ) {
+                       func = dataTypeExpression;
+                       dataTypeExpression = "*";
+               }
+
+               var dataType,
+                       i = 0,
+                       dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
+
+               if ( jQuery.isFunction( func ) ) {
+                       // For each dataType in the dataTypeExpression
+                       while ( (dataType = dataTypes[i++]) ) {
+                               // Prepend if requested
+                               if ( dataType[0] === "+" ) {
+                                       dataType = dataType.slice( 1 ) || "*";
+                                       (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+                               // Otherwise append
+                               } else {
+                                       (structure[ dataType ] = structure[ dataType ] || []).push( func );
+                               }
+                       }
+               }
+       };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+       var inspected = {},
+               seekingTransport = ( structure === transports );
+
+       function inspect( dataType ) {
+               var selected;
+               inspected[ dataType ] = true;
+               jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+                       var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+                       if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+                               options.dataTypes.unshift( dataTypeOrTransport );
+                               inspect( dataTypeOrTransport );
+                               return false;
+                       } else if ( seekingTransport ) {
+                               return !( selected = dataTypeOrTransport );
+                       }
+               });
+               return selected;
+       }
+
+       return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+       var deep, key,
+               flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+       for ( key in src ) {
+               if ( src[ key ] !== undefined ) {
+                       ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+               }
+       }
+       if ( deep ) {
+               jQuery.extend( true, target, deep );
+       }
+
+       return target;
+}
+
+jQuery.fn.load = function( url, params, callback ) {
+       if ( typeof url !== "string" && _load ) {
+               return _load.apply( this, arguments );
+       }
+
+       var selector, response, type,
+               self = this,
+               off = url.indexOf(" ");
+
+       if ( off >= 0 ) {
+               selector = url.slice( off, url.length );
+               url = url.slice( 0, off );
+       }
+
+       // If it's a function
+       if ( jQuery.isFunction( params ) ) {
+
+               // We assume that it's the callback
+               callback = params;
+               params = undefined;
+
+       // Otherwise, build a param string
+       } else if ( params && typeof params === "object" ) {
+               type = "POST";
+       }
+
+       // If we have elements to modify, make the request
+       if ( self.length > 0 ) {
+               jQuery.ajax({
+                       url: url,
+
+                       // if "type" variable is undefined, then "GET" method will be used
+                       type: type,
+                       dataType: "html",
+                       data: params
+               }).done(function( responseText ) {
+
+                       // Save response for use in complete callback
+                       response = arguments;
+
+                       self.html( selector ?
+
+                               // If a selector was specified, locate the right elements in a dummy div
+                               // Exclude scripts to avoid IE 'Permission Denied' errors
+                               jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+                               // Otherwise use the full result
+                               responseText );
+
+               }).complete( callback && function( jqXHR, status ) {
+                       self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+               });
+       }
+
+       return this;
+};
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
+       jQuery.fn[ type ] = function( fn ){
+               return this.on( type, fn );
+       };
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+       jQuery[ method ] = function( url, data, callback, type ) {
+               // shift arguments if data argument was omitted
+               if ( jQuery.isFunction( data ) ) {
+                       type = type || callback;
+                       callback = data;
+                       data = undefined;
+               }
+
+               return jQuery.ajax({
+                       url: url,
+                       type: method,
+                       dataType: type,
+                       data: data,
+                       success: callback
+               });
+       };
+});
+
+jQuery.extend({
+
+       // Counter for holding the number of active queries
+       active: 0,
+
+       // Last-Modified header cache for next request
+       lastModified: {},
+       etag: {},
+
+       ajaxSettings: {
+               url: ajaxLocation,
+               type: "GET",
+               isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+               global: true,
+               processData: true,
+               async: true,
+               contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+               /*
+               timeout: 0,
+               data: null,
+               dataType: null,
+               username: null,
+               password: null,
+               cache: null,
+               throws: false,
+               traditional: false,
+               headers: {},
+               */
+
+               accepts: {
+                       "*": allTypes,
+                       text: "text/plain",
+                       html: "text/html",
+                       xml: "application/xml, text/xml",
+                       json: "application/json, text/javascript"
+               },
+
+               contents: {
+                       xml: /xml/,
+                       html: /html/,
+                       json: /json/
+               },
+
+               responseFields: {
+                       xml: "responseXML",
+                       text: "responseText"
+               },
+
+               // Data converters
+               // Keys separate source (or catchall "*") and destination types with a single space
+               converters: {
+
+                       // Convert anything to text
+                       "* text": window.String,
+
+                       // Text to html (true = no transformation)
+                       "text html": true,
+
+                       // Evaluate text as a json expression
+                       "text json": jQuery.parseJSON,
+
+                       // Parse text as xml
+                       "text xml": jQuery.parseXML
+               },
+
+               // For options that shouldn't be deep extended:
+               // you can add your own custom options here if
+               // and when you create one that shouldn't be
+               // deep extended (see ajaxExtend)
+               flatOptions: {
+                       url: true,
+                       context: true
+               }
+       },
+
+       // Creates a full fledged settings object into target
+       // with both ajaxSettings and settings fields.
+       // If target is omitted, writes into ajaxSettings.
+       ajaxSetup: function( target, settings ) {
+               return settings ?
+
+                       // Building a settings object
+                       ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+                       // Extending ajaxSettings
+                       ajaxExtend( jQuery.ajaxSettings, target );
+       },
+
+       ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+       ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+       // Main method
+       ajax: function( url, options ) {
+
+               // If url is an object, simulate pre-1.5 signature
+               if ( typeof url === "object" ) {
+                       options = url;
+                       url = undefined;
+               }
+
+               // Force options to be an object
+               options = options || {};
+
+               var // Cross-domain detection vars
+                       parts,
+                       // Loop variable
+                       i,
+                       // URL without anti-cache param
+                       cacheURL,
+                       // Response headers as string
+                       responseHeadersString,
+                       // timeout handle
+                       timeoutTimer,
+
+                       // To know if global events are to be dispatched
+                       fireGlobals,
+
+                       transport,
+                       // Response headers
+                       responseHeaders,
+                       // Create the final options object
+                       s = jQuery.ajaxSetup( {}, options ),
+                       // Callbacks context
+                       callbackContext = s.context || s,
+                       // Context for global events is callbackContext if it is a DOM node or jQuery collection
+                       globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+                               jQuery( callbackContext ) :
+                               jQuery.event,
+                       // Deferreds
+                       deferred = jQuery.Deferred(),
+                       completeDeferred = jQuery.Callbacks("once memory"),
+                       // Status-dependent callbacks
+                       statusCode = s.statusCode || {},
+                       // Headers (they are sent all at once)
+                       requestHeaders = {},
+                       requestHeadersNames = {},
+                       // The jqXHR state
+                       state = 0,
+                       // Default abort message
+                       strAbort = "canceled",
+                       // Fake xhr
+                       jqXHR = {
+                               readyState: 0,
+
+                               // Builds headers hashtable if needed
+                               getResponseHeader: function( key ) {
+                                       var match;
+                                       if ( state === 2 ) {
+                                               if ( !responseHeaders ) {
+                                                       responseHeaders = {};
+                                                       while ( (match = rheaders.exec( responseHeadersString )) ) {
+                                                               responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+                                                       }
+                                               }
+                                               match = responseHeaders[ key.toLowerCase() ];
+                                       }
+                                       return match == null ? null : match;
+                               },
+
+                               // Raw string
+                               getAllResponseHeaders: function() {
+                                       return state === 2 ? responseHeadersString : null;
+                               },
+
+                               // Caches the header
+                               setRequestHeader: function( name, value ) {
+                                       var lname = name.toLowerCase();
+                                       if ( !state ) {
+                                               name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+                                               requestHeaders[ name ] = value;
+                                       }
+                                       return this;
+                               },
+
+                               // Overrides response content-type header
+                               overrideMimeType: function( type ) {
+                                       if ( !state ) {
+                                               s.mimeType = type;
+                                       }
+                                       return this;
+                               },
+
+                               // Status-dependent callbacks
+                               statusCode: function( map ) {
+                                       var code;
+                                       if ( map ) {
+                                               if ( state < 2 ) {
+                                                       for ( code in map ) {
+                                                               // Lazy-add the new callback in a way that preserves old ones
+                                                               statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+                                                       }
+                                               } else {
+                                                       // Execute the appropriate callbacks
+                                                       jqXHR.always( map[ jqXHR.status ] );
+                                               }
+                                       }
+                                       return this;
+                               },
+
+                               // Cancel the request
+                               abort: function( statusText ) {
+                                       var finalText = statusText || strAbort;
+                                       if ( transport ) {
+                                               transport.abort( finalText );
+                                       }
+                                       done( 0, finalText );
+                                       return this;
+                               }
+                       };
+
+               // Attach deferreds
+               deferred.promise( jqXHR ).complete = completeDeferred.add;
+               jqXHR.success = jqXHR.done;
+               jqXHR.error = jqXHR.fail;
+
+               // Remove hash character (#7531: and string promotion)
+               // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+               // Handle falsy url in the settings object (#10093: consistency with old signature)
+               // We also use the url parameter if available
+               s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+               // Alias method option to type as per ticket #12004
+               s.type = options.method || options.type || s.method || s.type;
+
+               // Extract dataTypes list
+               s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
+
+               // A cross-domain request is in order when we have a protocol:host:port mismatch
+               if ( s.crossDomain == null ) {
+                       parts = rurl.exec( s.url.toLowerCase() );
+                       s.crossDomain = !!( parts &&
+                               ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+                                       ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
+                                               ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
+                       );
+               }
+
+               // Convert data if not already a string
+               if ( s.data && s.processData && typeof s.data !== "string" ) {
+                       s.data = jQuery.param( s.data, s.traditional );
+               }
+
+               // Apply prefilters
+               inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+               // If request was aborted inside a prefilter, stop there
+               if ( state === 2 ) {
+                       return jqXHR;
+               }
+
+               // We can fire global events as of now if asked to
+               fireGlobals = s.global;
+
+               // Watch for a new set of requests
+               if ( fireGlobals && jQuery.active++ === 0 ) {
+                       jQuery.event.trigger("ajaxStart");
+               }
+
+               // Uppercase the type
+               s.type = s.type.toUpperCase();
+
+               // Determine if request has content
+               s.hasContent = !rnoContent.test( s.type );
+
+               // Save the URL in case we're toying with the If-Modified-Since
+               // and/or If-None-Match header later on
+               cacheURL = s.url;
+
+               // More options handling for requests with no content
+               if ( !s.hasContent ) {
+
+                       // If data is available, append data to url
+                       if ( s.data ) {
+                               cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+                               // #9682: remove data so that it's not used in an eventual retry
+                               delete s.data;
+                       }
+
+                       // Add anti-cache in url if needed
+                       if ( s.cache === false ) {
+                               s.url = rts.test( cacheURL ) ?
+
+                                       // If there is already a '_' parameter, set its value
+                                       cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
+
+                                       // Otherwise add one to the end
+                                       cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
+                       }
+               }
+
+               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+               if ( s.ifModified ) {
+                       if ( jQuery.lastModified[ cacheURL ] ) {
+                               jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+                       }
+                       if ( jQuery.etag[ cacheURL ] ) {
+                               jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+                       }
+               }
+
+               // Set the correct header, if data is being sent
+               if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+                       jqXHR.setRequestHeader( "Content-Type", s.contentType );
+               }
+
+               // Set the Accepts header for the server, depending on the dataType
+               jqXHR.setRequestHeader(
+                       "Accept",
+                       s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+                               s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+                               s.accepts[ "*" ]
+               );
+
+               // Check for headers option
+               for ( i in s.headers ) {
+                       jqXHR.setRequestHeader( i, s.headers[ i ] );
+               }
+
+               // Allow custom headers/mimetypes and early abort
+               if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+                       // Abort if not done already and return
+                       return jqXHR.abort();
+               }
+
+               // aborting is no longer a cancellation
+               strAbort = "abort";
+
+               // Install callbacks on deferreds
+               for ( i in { success: 1, error: 1, complete: 1 } ) {
+                       jqXHR[ i ]( s[ i ] );
+               }
+
+               // Get transport
+               transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+               // If no transport, we auto-abort
+               if ( !transport ) {
+                       done( -1, "No Transport" );
+               } else {
+                       jqXHR.readyState = 1;
+
+                       // Send global event
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+                       }
+                       // Timeout
+                       if ( s.async && s.timeout > 0 ) {
+                               timeoutTimer = setTimeout(function() {
+                                       jqXHR.abort("timeout");
+                               }, s.timeout );
+                       }
+
+                       try {
+                               state = 1;
+                               transport.send( requestHeaders, done );
+                       } catch ( e ) {
+                               // Propagate exception as error if not done
+                               if ( state < 2 ) {
+                                       done( -1, e );
+                               // Simply rethrow otherwise
+                               } else {
+                                       throw e;
+                               }
+                       }
+               }
+
+               // Callback for when everything is done
+               function done( status, nativeStatusText, responses, headers ) {
+                       var isSuccess, success, error, response, modified,
+                               statusText = nativeStatusText;
+
+                       // Called once
+                       if ( state === 2 ) {
+                               return;
+                       }
+
+                       // State is "done" now
+                       state = 2;
+
+                       // Clear timeout if it exists
+                       if ( timeoutTimer ) {
+                               clearTimeout( timeoutTimer );
+                       }
+
+                       // Dereference transport for early garbage collection
+                       // (no matter how long the jqXHR object will be used)
+                       transport = undefined;
+
+                       // Cache response headers
+                       responseHeadersString = headers || "";
+
+                       // Set readyState
+                       jqXHR.readyState = status > 0 ? 4 : 0;
+
+                       // Get response data
+                       if ( responses ) {
+                               response = ajaxHandleResponses( s, jqXHR, responses );
+                       }
+
+                       // If successful, handle type chaining
+                       if ( status >= 200 && status < 300 || status === 304 ) {
+
+                               // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+                               if ( s.ifModified ) {
+                                       modified = jqXHR.getResponseHeader("Last-Modified");
+                                       if ( modified ) {
+                                               jQuery.lastModified[ cacheURL ] = modified;
+                                       }
+                                       modified = jqXHR.getResponseHeader("etag");
+                                       if ( modified ) {
+                                               jQuery.etag[ cacheURL ] = modified;
+                                       }
+                               }
+
+                               // if no content
+                               if ( status === 204 ) {
+                                       isSuccess = true;
+                                       statusText = "nocontent";
+
+                               // if not modified
+                               } else if ( status === 304 ) {
+                                       isSuccess = true;
+                                       statusText = "notmodified";
+
+                               // If we have data, let's convert it
+                               } else {
+                                       isSuccess = ajaxConvert( s, response );
+                                       statusText = isSuccess.state;
+                                       success = isSuccess.data;
+                                       error = isSuccess.error;
+                                       isSuccess = !error;
+                               }
+                       } else {
+                               // We extract error from statusText
+                               // then normalize statusText and status for non-aborts
+                               error = statusText;
+                               if ( status || !statusText ) {
+                                       statusText = "error";
+                                       if ( status < 0 ) {
+                                               status = 0;
+                                       }
+                               }
+                       }
+
+                       // Set data for the fake xhr object
+                       jqXHR.status = status;
+                       jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+                       // Success/Error
+                       if ( isSuccess ) {
+                               deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+                       } else {
+                               deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+                       }
+
+                       // Status-dependent callbacks
+                       jqXHR.statusCode( statusCode );
+                       statusCode = undefined;
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+                                       [ jqXHR, s, isSuccess ? success : error ] );
+                       }
+
+                       // Complete
+                       completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+                       if ( fireGlobals ) {
+                               globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+                               // Handle the global AJAX counter
+                               if ( !( --jQuery.active ) ) {
+                                       jQuery.event.trigger("ajaxStop");
+                               }
+                       }
+               }
+
+               return jqXHR;
+       },
+
+       getScript: function( url, callback ) {
+               return jQuery.get( url, undefined, callback, "script" );
+       },
+
+       getJSON: function( url, data, callback ) {
+               return jQuery.get( url, data, callback, "json" );
+       }
+});
+
+/* Handles responses to an ajax request:
+ * - sets all responseXXX fields accordingly
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+       var firstDataType, ct, finalDataType, type,
+               contents = s.contents,
+               dataTypes = s.dataTypes,
+               responseFields = s.responseFields;
+
+       // Fill responseXXX fields
+       for ( type in responseFields ) {
+               if ( type in responses ) {
+                       jqXHR[ responseFields[type] ] = responses[ type ];
+               }
+       }
+
+       // Remove auto dataType and get content-type in the process
+       while( dataTypes[ 0 ] === "*" ) {
+               dataTypes.shift();
+               if ( ct === undefined ) {
+                       ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+               }
+       }
+
+       // Check if we're dealing with a known content-type
+       if ( ct ) {
+               for ( type in contents ) {
+                       if ( contents[ type ] && contents[ type ].test( ct ) ) {
+                               dataTypes.unshift( type );
+                               break;
+                       }
+               }
+       }
+
+       // Check to see if we have a response for the expected dataType
+       if ( dataTypes[ 0 ] in responses ) {
+               finalDataType = dataTypes[ 0 ];
+       } else {
+               // Try convertible dataTypes
+               for ( type in responses ) {
+                       if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+                               finalDataType = type;
+                               break;
+                       }
+                       if ( !firstDataType ) {
+                               firstDataType = type;
+                       }
+               }
+               // Or just use first one
+               finalDataType = finalDataType || firstDataType;
+       }
+
+       // If we found a dataType
+       // We add the dataType to the list if needed
+       // and return the corresponding response
+       if ( finalDataType ) {
+               if ( finalDataType !== dataTypes[ 0 ] ) {
+                       dataTypes.unshift( finalDataType );
+               }
+               return responses[ finalDataType ];
+       }
+}
+
+// Chain conversions given the request and the original response
+function ajaxConvert( s, response ) {
+       var conv2, current, conv, tmp,
+               converters = {},
+               i = 0,
+               // Work with a copy of dataTypes in case we need to modify it for conversion
+               dataTypes = s.dataTypes.slice(),
+               prev = dataTypes[ 0 ];
+
+       // Apply the dataFilter if provided
+       if ( s.dataFilter ) {
+               response = s.dataFilter( response, s.dataType );
+       }
+
+       // Create converters map with lowercased keys
+       if ( dataTypes[ 1 ] ) {
+               for ( conv in s.converters ) {
+                       converters[ conv.toLowerCase() ] = s.converters[ conv ];
+               }
+       }
+
+       // Convert to each sequential dataType, tolerating list modification
+       for ( ; (current = dataTypes[++i]); ) {
+
+               // There's only work to do if current dataType is non-auto
+               if ( current !== "*" ) {
+
+                       // Convert response if prev dataType is non-auto and differs from current
+                       if ( prev !== "*" && prev !== current ) {
+
+                               // Seek a direct converter
+                               conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+                               // If none found, seek a pair
+                               if ( !conv ) {
+                                       for ( conv2 in converters ) {
+
+                                               // If conv2 outputs current
+                                               tmp = conv2.split(" ");
+                                               if ( tmp[ 1 ] === current ) {
+
+                                                       // If prev can be converted to accepted input
+                                                       conv = converters[ prev + " " + tmp[ 0 ] ] ||
+                                                               converters[ "* " + tmp[ 0 ] ];
+                                                       if ( conv ) {
+                                                               // Condense equivalence converters
+                                                               if ( conv === true ) {
+                                                                       conv = converters[ conv2 ];
+
+                                                               // Otherwise, insert the intermediate dataType
+                                                               } else if ( converters[ conv2 ] !== true ) {
+                                                                       current = tmp[ 0 ];
+                                                                       dataTypes.splice( i--, 0, current );
+                                                               }
+
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               // Apply converter (if not an equivalence)
+                               if ( conv !== true ) {
+
+                                       // Unless errors are allowed to bubble, catch and return them
+                                       if ( conv && s["throws"] ) {
+                                               response = conv( response );
+                                       } else {
+                                               try {
+                                                       response = conv( response );
+                                               } catch ( e ) {
+                                                       return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+                                               }
+                                       }
+                               }
+                       }
+
+                       // Update prev for next iteration
+                       prev = current;
+               }
+       }
+
+       return { state: "success", data: response };
+}
+// Install script dataType
+jQuery.ajaxSetup({
+       accepts: {
+               script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+       },
+       contents: {
+               script: /(?:java|ecma)script/
+       },
+       converters: {
+               "text script": function( text ) {
+                       jQuery.globalEval( text );
+                       return text;
+               }
+       }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+       if ( s.cache === undefined ) {
+               s.cache = false;
+       }
+       if ( s.crossDomain ) {
+               s.type = "GET";
+               s.global = false;
+       }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+       // This transport only deals with cross domain requests
+       if ( s.crossDomain ) {
+
+               var script,
+                       head = document.head || jQuery("head")[0] || document.documentElement;
+
+               return {
+
+                       send: function( _, callback ) {
+
+                               script = document.createElement("script");
+
+                               script.async = true;
+
+                               if ( s.scriptCharset ) {
+                                       script.charset = s.scriptCharset;
+                               }
+
+                               script.src = s.url;
+
+                               // Attach handlers for all browsers
+                               script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+                                       if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+                                               // Handle memory leak in IE
+                                               script.onload = script.onreadystatechange = null;
+
+                                               // Remove the script
+                                               if ( script.parentNode ) {
+                                                       script.parentNode.removeChild( script );
+                                               }
+
+                                               // Dereference the script
+                                               script = null;
+
+                                               // Callback if not abort
+                                               if ( !isAbort ) {
+                                                       callback( 200, "success" );
+                                               }
+                                       }
+                               };
+
+                               // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
+                               // Use native DOM manipulation to avoid our domManip AJAX trickery
+                               head.insertBefore( script, head.firstChild );
+                       },
+
+                       abort: function() {
+                               if ( script ) {
+                                       script.onload( undefined, true );
+                               }
+                       }
+               };
+       }
+});
+var oldCallbacks = [],
+       rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+       jsonp: "callback",
+       jsonpCallback: function() {
+               var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
+               this[ callback ] = true;
+               return callback;
+       }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+       var callbackName, overwritten, responseContainer,
+               jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+                       "url" :
+                       typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+               );
+
+       // Handle iff the expected data type is "jsonp" or we have a parameter to set
+       if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+               // Get callback name, remembering preexisting value associated with it
+               callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+                       s.jsonpCallback() :
+                       s.jsonpCallback;
+
+               // Insert callback into url or form data
+               if ( jsonProp ) {
+                       s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+               } else if ( s.jsonp !== false ) {
+                       s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+               }
+
+               // Use data converter to retrieve json after script execution
+               s.converters["script json"] = function() {
+                       if ( !responseContainer ) {
+                               jQuery.error( callbackName + " was not called" );
+                       }
+                       return responseContainer[ 0 ];
+               };
+
+               // force json dataType
+               s.dataTypes[ 0 ] = "json";
+
+               // Install callback
+               overwritten = window[ callbackName ];
+               window[ callbackName ] = function() {
+                       responseContainer = arguments;
+               };
+
+               // Clean-up function (fires after converters)
+               jqXHR.always(function() {
+                       // Restore preexisting value
+                       window[ callbackName ] = overwritten;
+
+                       // Save back as free
+                       if ( s[ callbackName ] ) {
+                               // make sure that re-using the options doesn't screw things around
+                               s.jsonpCallback = originalSettings.jsonpCallback;
+
+                               // save the callback name for future use
+                               oldCallbacks.push( callbackName );
+                       }
+
+                       // Call if it was a function and we have a response
+                       if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+                               overwritten( responseContainer[ 0 ] );
+                       }
+
+                       responseContainer = overwritten = undefined;
+               });
+
+               // Delegate to script
+               return "script";
+       }
+});
+var xhrCallbacks, xhrSupported,
+       xhrId = 0,
+       // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+       xhrOnUnloadAbort = window.ActiveXObject && function() {
+               // Abort all pending requests
+               var key;
+               for ( key in xhrCallbacks ) {
+                       xhrCallbacks[ key ]( undefined, true );
+               }
+       };
+
+// Functions to create xhrs
+function createStandardXHR() {
+       try {
+               return new window.XMLHttpRequest();
+       } catch( e ) {}
+}
+
+function createActiveXHR() {
+       try {
+               return new window.ActiveXObject("Microsoft.XMLHTTP");
+       } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+       /* Microsoft failed to properly
+        * implement the XMLHttpRequest in IE7 (can't request local files),
+        * so we use the ActiveXObject when it is available
+        * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+        * we need a fallback.
+        */
+       function() {
+               return !this.isLocal && createStandardXHR() || createActiveXHR();
+       } :
+       // For all other browsers, use the standard XMLHttpRequest object
+       createStandardXHR;
+
+// Determine support properties
+xhrSupported = jQuery.ajaxSettings.xhr();
+jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+xhrSupported = jQuery.support.ajax = !!xhrSupported;
+
+// Create transport if the browser can provide an xhr
+if ( xhrSupported ) {
+
+       jQuery.ajaxTransport(function( s ) {
+               // Cross domain only allowed if supported through XMLHttpRequest
+               if ( !s.crossDomain || jQuery.support.cors ) {
+
+                       var callback;
+
+                       return {
+                               send: function( headers, complete ) {
+
+                                       // Get a new xhr
+                                       var handle, i,
+                                               xhr = s.xhr();
+
+                                       // Open the socket
+                                       // Passing null username, generates a login popup on Opera (#2865)
+                                       if ( s.username ) {
+                                               xhr.open( s.type, s.url, s.async, s.username, s.password );
+                                       } else {
+                                               xhr.open( s.type, s.url, s.async );
+                                       }
+
+                                       // Apply custom fields if provided
+                                       if ( s.xhrFields ) {
+                                               for ( i in s.xhrFields ) {
+                                                       xhr[ i ] = s.xhrFields[ i ];
+                                               }
+                                       }
+
+                                       // Override mime type if needed
+                                       if ( s.mimeType && xhr.overrideMimeType ) {
+                                               xhr.overrideMimeType( s.mimeType );
+                                       }
+
+                                       // X-Requested-With header
+                                       // For cross-domain requests, seeing as conditions for a preflight are
+                                       // akin to a jigsaw puzzle, we simply never set it to be sure.
+                                       // (it can always be set on a per-request basis or even using ajaxSetup)
+                                       // For same-domain requests, won't change header if already provided.
+                                       if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+                                               headers["X-Requested-With"] = "XMLHttpRequest";
+                                       }
+
+                                       // Need an extra try/catch for cross domain requests in Firefox 3
+                                       try {
+                                               for ( i in headers ) {
+                                                       xhr.setRequestHeader( i, headers[ i ] );
+                                               }
+                                       } catch( err ) {}
+
+                                       // Do send the request
+                                       // This may raise an exception which is actually
+                                       // handled in jQuery.ajax (so no try/catch here)
+                                       xhr.send( ( s.hasContent && s.data ) || null );
+
+                                       // Listener
+                                       callback = function( _, isAbort ) {
+                                               var status, responseHeaders, statusText, responses;
+
+                                               // Firefox throws exceptions when accessing properties
+                                               // of an xhr when a network error occurred
+                                               // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+                                               try {
+
+                                                       // Was never called and is aborted or complete
+                                                       if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+                                                               // Only called once
+                                                               callback = undefined;
+
+                                                               // Do not keep as active anymore
+                                                               if ( handle ) {
+                                                                       xhr.onreadystatechange = jQuery.noop;
+                                                                       if ( xhrOnUnloadAbort ) {
+                                                                               delete xhrCallbacks[ handle ];
+                                                                       }
+                                                               }
+
+                                                               // If it's an abort
+                                                               if ( isAbort ) {
+                                                                       // Abort it manually if needed
+                                                                       if ( xhr.readyState !== 4 ) {
+                                                                               xhr.abort();
+                                                                       }
+                                                               } else {
+                                                                       responses = {};
+                                                                       status = xhr.status;
+                                                                       responseHeaders = xhr.getAllResponseHeaders();
+
+                                                                       // When requesting binary data, IE6-9 will throw an exception
+                                                                       // on any attempt to access responseText (#11426)
+                                                                       if ( typeof xhr.responseText === "string" ) {
+                                                                               responses.text = xhr.responseText;
+                                                                       }
+
+                                                                       // Firefox throws an exception when accessing
+                                                                       // statusText for faulty cross-domain requests
+                                                                       try {
+                                                                               statusText = xhr.statusText;
+                                                                       } catch( e ) {
+                                                                               // We normalize with Webkit giving an empty statusText
+                                                                               statusText = "";
+                                                                       }
+
+                                                                       // Filter status for non standard behaviors
+
+                                                                       // If the request is local and we have data: assume a success
+                                                                       // (success with no data won't get notified, that's the best we
+                                                                       // can do given current implementations)
+                                                                       if ( !status && s.isLocal && !s.crossDomain ) {
+                                                                               status = responses.text ? 200 : 404;
+                                                                       // IE - #1450: sometimes returns 1223 when it should be 204
+                                                                       } else if ( status === 1223 ) {
+                                                                               status = 204;
+                                                                       }
+                                                               }
+                                                       }
+                                               } catch( firefoxAccessException ) {
+                                                       if ( !isAbort ) {
+                                                               complete( -1, firefoxAccessException );
+                                                       }
+                                               }
+
+                                               // Call complete if needed
+                                               if ( responses ) {
+                                                       complete( status, statusText, responses, responseHeaders );
+                                               }
+                                       };
+
+                                       if ( !s.async ) {
+                                               // if we're in sync mode we fire the callback
+                                               callback();
+                                       } else if ( xhr.readyState === 4 ) {
+                                               // (IE6 & IE7) if it's in cache and has been
+                                               // retrieved directly we need to fire the callback
+                                               setTimeout( callback );
+                                       } else {
+                                               handle = ++xhrId;
+                                               if ( xhrOnUnloadAbort ) {
+                                                       // Create the active xhrs callbacks list if needed
+                                                       // and attach the unload handler
+                                                       if ( !xhrCallbacks ) {
+                                                               xhrCallbacks = {};
+                                                               jQuery( window ).unload( xhrOnUnloadAbort );
+                                                       }
+                                                       // Add to list of active xhrs callbacks
+                                                       xhrCallbacks[ handle ] = callback;
+                                               }
+                                               xhr.onreadystatechange = callback;
+                                       }
+                               },
+
+                               abort: function() {
+                                       if ( callback ) {
+                                               callback( undefined, true );
+                                       }
+                               }
+                       };
+               }
+       });
+}
+var fxNow, timerId,
+       rfxtypes = /^(?:toggle|show|hide)$/,
+       rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
+       rrun = /queueHooks$/,
+       animationPrefilters = [ defaultPrefilter ],
+       tweeners = {
+               "*": [function( prop, value ) {
+                       var end, unit,
+                               tween = this.createTween( prop, value ),
+                               parts = rfxnum.exec( value ),
+                               target = tween.cur(),
+                               start = +target || 0,
+                               scale = 1,
+                               maxIterations = 20;
+
+                       if ( parts ) {
+                               end = +parts[2];
+                               unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+
+                               // We need to compute starting value
+                               if ( unit !== "px" && start ) {
+                                       // Iteratively approximate from a nonzero starting point
+                                       // Prefer the current property, because this process will be trivial if it uses the same units
+                                       // Fallback to end or a simple constant
+                                       start = jQuery.css( tween.elem, prop, true ) || end || 1;
+
+                                       do {
+                                               // If previous iteration zeroed out, double until we get *something*
+                                               // Use a string for doubling factor so we don't accidentally see scale as unchanged below
+                                               scale = scale || ".5";
+
+                                               // Adjust and apply
+                                               start = start / scale;
+                                               jQuery.style( tween.elem, prop, start + unit );
+
+                                       // Update scale, tolerating zero or NaN from tween.cur()
+                                       // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+                                       } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+                               }
+
+                               tween.unit = unit;
+                               tween.start = start;
+                               // If a +=/-= token was provided, we're doing a relative animation
+                               tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;
+                       }
+                       return tween;
+               }]
+       };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+       setTimeout(function() {
+               fxNow = undefined;
+       });
+       return ( fxNow = jQuery.now() );
+}
+
+function createTweens( animation, props ) {
+       jQuery.each( props, function( prop, value ) {
+               var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+                       index = 0,
+                       length = collection.length;
+               for ( ; index < length; index++ ) {
+                       if ( collection[ index ].call( animation, prop, value ) ) {
+
+                               // we're done with this property
+                               return;
+                       }
+               }
+       });
+}
+
+function Animation( elem, properties, options ) {
+       var result,
+               stopped,
+               index = 0,
+               length = animationPrefilters.length,
+               deferred = jQuery.Deferred().always( function() {
+                       // don't match elem in the :animated selector
+                       delete tick.elem;
+               }),
+               tick = function() {
+                       if ( stopped ) {
+                               return false;
+                       }
+                       var currentTime = fxNow || createFxNow(),
+                               remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+                               // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
+                               temp = remaining / animation.duration || 0,
+                               percent = 1 - temp,
+                               index = 0,
+                               length = animation.tweens.length;
+
+                       for ( ; index < length ; index++ ) {
+                               animation.tweens[ index ].run( percent );
+                       }
+
+                       deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+                       if ( percent < 1 && length ) {
+                               return remaining;
+                       } else {
+                               deferred.resolveWith( elem, [ animation ] );
+                               return false;
+                       }
+               },
+               animation = deferred.promise({
+                       elem: elem,
+                       props: jQuery.extend( {}, properties ),
+                       opts: jQuery.extend( true, { specialEasing: {} }, options ),
+                       originalProperties: properties,
+                       originalOptions: options,
+                       startTime: fxNow || createFxNow(),
+                       duration: options.duration,
+                       tweens: [],
+                       createTween: function( prop, end ) {
+                               var tween = jQuery.Tween( elem, animation.opts, prop, end,
+                                               animation.opts.specialEasing[ prop ] || animation.opts.easing );
+                               animation.tweens.push( tween );
+                               return tween;
+                       },
+                       stop: function( gotoEnd ) {
+                               var index = 0,
+                                       // if we are going to the end, we want to run all the tweens
+                                       // otherwise we skip this part
+                                       length = gotoEnd ? animation.tweens.length : 0;
+                               if ( stopped ) {
+                                       return this;
+                               }
+                               stopped = true;
+                               for ( ; index < length ; index++ ) {
+                                       animation.tweens[ index ].run( 1 );
+                               }
+
+                               // resolve when we played the last frame
+                               // otherwise, reject
+                               if ( gotoEnd ) {
+                                       deferred.resolveWith( elem, [ animation, gotoEnd ] );
+                               } else {
+                                       deferred.rejectWith( elem, [ animation, gotoEnd ] );
+                               }
+                               return this;
+                       }
+               }),
+               props = animation.props;
+
+       propFilter( props, animation.opts.specialEasing );
+
+       for ( ; index < length ; index++ ) {
+               result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+               if ( result ) {
+                       return result;
+               }
+       }
+
+       createTweens( animation, props );
+
+       if ( jQuery.isFunction( animation.opts.start ) ) {
+               animation.opts.start.call( elem, animation );
+       }
+
+       jQuery.fx.timer(
+               jQuery.extend( tick, {
+                       elem: elem,
+                       anim: animation,
+                       queue: animation.opts.queue
+               })
+       );
+
+       // attach callbacks from options
+       return animation.progress( animation.opts.progress )
+               .done( animation.opts.done, animation.opts.complete )
+               .fail( animation.opts.fail )
+               .always( animation.opts.always );
+}
+
+function propFilter( props, specialEasing ) {
+       var value, name, index, easing, hooks;
+
+       // camelCase, specialEasing and expand cssHook pass
+       for ( index in props ) {
+               name = jQuery.camelCase( index );
+               easing = specialEasing[ name ];
+               value = props[ index ];
+               if ( jQuery.isArray( value ) ) {
+                       easing = value[ 1 ];
+                       value = props[ index ] = value[ 0 ];
+               }
+
+               if ( index !== name ) {
+                       props[ name ] = value;
+                       delete props[ index ];
+               }
+
+               hooks = jQuery.cssHooks[ name ];
+               if ( hooks && "expand" in hooks ) {
+                       value = hooks.expand( value );
+                       delete props[ name ];
+
+                       // not quite $.extend, this wont overwrite keys already present.
+                       // also - reusing 'index' from above because we have the correct "name"
+                       for ( index in value ) {
+                               if ( !( index in props ) ) {
+                                       props[ index ] = value[ index ];
+                                       specialEasing[ index ] = easing;
+                               }
+                       }
+               } else {
+                       specialEasing[ name ] = easing;
+               }
+       }
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+       tweener: function( props, callback ) {
+               if ( jQuery.isFunction( props ) ) {
+                       callback = props;
+                       props = [ "*" ];
+               } else {
+                       props = props.split(" ");
+               }
+
+               var prop,
+                       index = 0,
+                       length = props.length;
+
+               for ( ; index < length ; index++ ) {
+                       prop = props[ index ];
+                       tweeners[ prop ] = tweeners[ prop ] || [];
+                       tweeners[ prop ].unshift( callback );
+               }
+       },
+
+       prefilter: function( callback, prepend ) {
+               if ( prepend ) {
+                       animationPrefilters.unshift( callback );
+               } else {
+                       animationPrefilters.push( callback );
+               }
+       }
+});
+
+function defaultPrefilter( elem, props, opts ) {
+       /*jshint validthis:true */
+       var prop, index, length,
+               value, dataShow, toggle,
+               tween, hooks, oldfire,
+               anim = this,
+               style = elem.style,
+               orig = {},
+               handled = [],
+               hidden = elem.nodeType && isHidden( elem );
+
+       // handle queue: false promises
+       if ( !opts.queue ) {
+               hooks = jQuery._queueHooks( elem, "fx" );
+               if ( hooks.unqueued == null ) {
+                       hooks.unqueued = 0;
+                       oldfire = hooks.empty.fire;
+                       hooks.empty.fire = function() {
+                               if ( !hooks.unqueued ) {
+                                       oldfire();
+                               }
+                       };
+               }
+               hooks.unqueued++;
+
+               anim.always(function() {
+                       // doing this makes sure that the complete handler will be called
+                       // before this completes
+                       anim.always(function() {
+                               hooks.unqueued--;
+                               if ( !jQuery.queue( elem, "fx" ).length ) {
+                                       hooks.empty.fire();
+                               }
+                       });
+               });
+       }
+
+       // height/width overflow pass
+       if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+               // Make sure that nothing sneaks out
+               // Record all 3 overflow attributes because IE does not
+               // change the overflow attribute when overflowX and
+               // overflowY are set to the same value
+               opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+               // Set display property to inline-block for height/width
+               // animations on inline elements that are having width/height animated
+               if ( jQuery.css( elem, "display" ) === "inline" &&
+                               jQuery.css( elem, "float" ) === "none" ) {
+
+                       // inline-level elements accept inline-block;
+                       // block-level elements need to be inline with layout
+                       if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
+                               style.display = "inline-block";
+
+                       } else {
+                               style.zoom = 1;
+                       }
+               }
+       }
+
+       if ( opts.overflow ) {
+               style.overflow = "hidden";
+               if ( !jQuery.support.shrinkWrapBlocks ) {
+                       anim.always(function() {
+                               style.overflow = opts.overflow[ 0 ];
+                               style.overflowX = opts.overflow[ 1 ];
+                               style.overflowY = opts.overflow[ 2 ];
+                       });
+               }
+       }
+
+
+       // show/hide pass
+       for ( index in props ) {
+               value = props[ index ];
+               if ( rfxtypes.exec( value ) ) {
+                       delete props[ index ];
+                       toggle = toggle || value === "toggle";
+                       if ( value === ( hidden ? "hide" : "show" ) ) {
+                               continue;
+                       }
+                       handled.push( index );
+               }
+       }
+
+       length = handled.length;
+       if ( length ) {
+               dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );
+               if ( "hidden" in dataShow ) {
+                       hidden = dataShow.hidden;
+               }
+
+               // store state if its toggle - enables .stop().toggle() to "reverse"
+               if ( toggle ) {
+                       dataShow.hidden = !hidden;
+               }
+               if ( hidden ) {
+                       jQuery( elem ).show();
+               } else {
+                       anim.done(function() {
+                               jQuery( elem ).hide();
+                       });
+               }
+               anim.done(function() {
+                       var prop;
+                       jQuery._removeData( elem, "fxshow" );
+                       for ( prop in orig ) {
+                               jQuery.style( elem, prop, orig[ prop ] );
+                       }
+               });
+               for ( index = 0 ; index < length ; index++ ) {
+                       prop = handled[ index ];
+                       tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );
+                       orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );
+
+                       if ( !( prop in dataShow ) ) {
+                               dataShow[ prop ] = tween.start;
+                               if ( hidden ) {
+                                       tween.end = tween.start;
+                                       tween.start = prop === "width" || prop === "height" ? 1 : 0;
+                               }
+                       }
+               }
+       }
+}
+
+function Tween( elem, options, prop, end, easing ) {
+       return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+       constructor: Tween,
+       init: function( elem, options, prop, end, easing, unit ) {
+               this.elem = elem;
+               this.prop = prop;
+               this.easing = easing || "swing";
+               this.options = options;
+               this.start = this.now = this.cur();
+               this.end = end;
+               this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+       },
+       cur: function() {
+               var hooks = Tween.propHooks[ this.prop ];
+
+               return hooks && hooks.get ?
+                       hooks.get( this ) :
+                       Tween.propHooks._default.get( this );
+       },
+       run: function( percent ) {
+               var eased,
+                       hooks = Tween.propHooks[ this.prop ];
+
+               if ( this.options.duration ) {
+                       this.pos = eased = jQuery.easing[ this.easing ](
+                               percent, this.options.duration * percent, 0, 1, this.options.duration
+                       );
+               } else {
+                       this.pos = eased = percent;
+               }
+               this.now = ( this.end - this.start ) * eased + this.start;
+
+               if ( this.options.step ) {
+                       this.options.step.call( this.elem, this.now, this );
+               }
+
+               if ( hooks && hooks.set ) {
+                       hooks.set( this );
+               } else {
+                       Tween.propHooks._default.set( this );
+               }
+               return this;
+       }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+       _default: {
+               get: function( tween ) {
+                       var result;
+
+                       if ( tween.elem[ tween.prop ] != null &&
+                               (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+                               return tween.elem[ tween.prop ];
+                       }
+
+                       // passing an empty string as a 3rd parameter to .css will automatically
+                       // attempt a parseFloat and fallback to a string if the parse fails
+                       // so, simple values such as "10px" are parsed to Float.
+                       // complex values such as "rotate(1rad)" are returned as is.
+                       result = jQuery.css( tween.elem, tween.prop, "" );
+                       // Empty strings, null, undefined and "auto" are converted to 0.
+                       return !result || result === "auto" ? 0 : result;
+               },
+               set: function( tween ) {
+                       // use step hook for back compat - use cssHook if its there - use .style if its
+                       // available and use plain properties where available
+                       if ( jQuery.fx.step[ tween.prop ] ) {
+                               jQuery.fx.step[ tween.prop ]( tween );
+                       } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+                               jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+                       } else {
+                               tween.elem[ tween.prop ] = tween.now;
+                       }
+               }
+       }
+};
+
+// Remove in 2.0 - this supports IE8's panic based approach
+// to setting things on disconnected nodes
+
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+       set: function( tween ) {
+               if ( tween.elem.nodeType && tween.elem.parentNode ) {
+                       tween.elem[ tween.prop ] = tween.now;
+               }
+       }
+};
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+       var cssFn = jQuery.fn[ name ];
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return speed == null || typeof speed === "boolean" ?
+                       cssFn.apply( this, arguments ) :
+                       this.animate( genFx( name, true ), speed, easing, callback );
+       };
+});
+
+jQuery.fn.extend({
+       fadeTo: function( speed, to, easing, callback ) {
+
+               // show any hidden elements after setting opacity to 0
+               return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+                       // animate to the value specified
+                       .end().animate({ opacity: to }, speed, easing, callback );
+       },
+       animate: function( prop, speed, easing, callback ) {
+               var empty = jQuery.isEmptyObject( prop ),
+                       optall = jQuery.speed( speed, easing, callback ),
+                       doAnimation = function() {
+                               // Operate on a copy of prop so per-property easing won't be lost
+                               var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+                               doAnimation.finish = function() {
+                                       anim.stop( true );
+                               };
+                               // Empty animations, or finishing resolves immediately
+                               if ( empty || jQuery._data( this, "finish" ) ) {
+                                       anim.stop( true );
+                               }
+                       };
+                       doAnimation.finish = doAnimation;
+
+               return empty || optall.queue === false ?
+                       this.each( doAnimation ) :
+                       this.queue( optall.queue, doAnimation );
+       },
+       stop: function( type, clearQueue, gotoEnd ) {
+               var stopQueue = function( hooks ) {
+                       var stop = hooks.stop;
+                       delete hooks.stop;
+                       stop( gotoEnd );
+               };
+
+               if ( typeof type !== "string" ) {
+                       gotoEnd = clearQueue;
+                       clearQueue = type;
+                       type = undefined;
+               }
+               if ( clearQueue && type !== false ) {
+                       this.queue( type || "fx", [] );
+               }
+
+               return this.each(function() {
+                       var dequeue = true,
+                               index = type != null && type + "queueHooks",
+                               timers = jQuery.timers,
+                               data = jQuery._data( this );
+
+                       if ( index ) {
+                               if ( data[ index ] && data[ index ].stop ) {
+                                       stopQueue( data[ index ] );
+                               }
+                       } else {
+                               for ( index in data ) {
+                                       if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+                                               stopQueue( data[ index ] );
+                                       }
+                               }
+                       }
+
+                       for ( index = timers.length; index--; ) {
+                               if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+                                       timers[ index ].anim.stop( gotoEnd );
+                                       dequeue = false;
+                                       timers.splice( index, 1 );
+                               }
+                       }
+
+                       // start the next in the queue if the last step wasn't forced
+                       // timers currently will call their complete callbacks, which will dequeue
+                       // but only if they were gotoEnd
+                       if ( dequeue || !gotoEnd ) {
+                               jQuery.dequeue( this, type );
+                       }
+               });
+       },
+       finish: function( type ) {
+               if ( type !== false ) {
+                       type = type || "fx";
+               }
+               return this.each(function() {
+                       var index,
+                               data = jQuery._data( this ),
+                               queue = data[ type + "queue" ],
+                               hooks = data[ type + "queueHooks" ],
+                               timers = jQuery.timers,
+                               length = queue ? queue.length : 0;
+
+                       // enable finishing flag on private data
+                       data.finish = true;
+
+                       // empty the queue first
+                       jQuery.queue( this, type, [] );
+
+                       if ( hooks && hooks.cur && hooks.cur.finish ) {
+                               hooks.cur.finish.call( this );
+                       }
+
+                       // look for any active animations, and finish them
+                       for ( index = timers.length; index--; ) {
+                               if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+                                       timers[ index ].anim.stop( true );
+                                       timers.splice( index, 1 );
+                               }
+                       }
+
+                       // look for any animations in the old queue and finish them
+                       for ( index = 0; index < length; index++ ) {
+                               if ( queue[ index ] && queue[ index ].finish ) {
+                                       queue[ index ].finish.call( this );
+                               }
+                       }
+
+                       // turn off finishing flag
+                       delete data.finish;
+               });
+       }
+});
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+       var which,
+               attrs = { height: type },
+               i = 0;
+
+       // if we include width, step value is 1 to do all cssExpand values,
+       // if we don't include width, step value is 2 to skip over Left and Right
+       includeWidth = includeWidth? 1 : 0;
+       for( ; i < 4 ; i += 2 - includeWidth ) {
+               which = cssExpand[ i ];
+               attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+       }
+
+       if ( includeWidth ) {
+               attrs.opacity = attrs.width = type;
+       }
+
+       return attrs;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+       slideDown: genFx("show"),
+       slideUp: genFx("hide"),
+       slideToggle: genFx("toggle"),
+       fadeIn: { opacity: "show" },
+       fadeOut: { opacity: "hide" },
+       fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return this.animate( props, speed, easing, callback );
+       };
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+       var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+               complete: fn || !fn && easing ||
+                       jQuery.isFunction( speed ) && speed,
+               duration: speed,
+               easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+       };
+
+       opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+               opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+       // normalize opt.queue - true/undefined/null -> "fx"
+       if ( opt.queue == null || opt.queue === true ) {
+               opt.queue = "fx";
+       }
+
+       // Queueing
+       opt.old = opt.complete;
+
+       opt.complete = function() {
+               if ( jQuery.isFunction( opt.old ) ) {
+                       opt.old.call( this );
+               }
+
+               if ( opt.queue ) {
+                       jQuery.dequeue( this, opt.queue );
+               }
+       };
+
+       return opt;
+};
+
+jQuery.easing = {
+       linear: function( p ) {
+               return p;
+       },
+       swing: function( p ) {
+               return 0.5 - Math.cos( p*Math.PI ) / 2;
+       }
+};
+
+jQuery.timers = [];
+jQuery.fx = Tween.prototype.init;
+jQuery.fx.tick = function() {
+       var timer,
+               timers = jQuery.timers,
+               i = 0;
+
+       fxNow = jQuery.now();
+
+       for ( ; i < timers.length; i++ ) {
+               timer = timers[ i ];
+               // Checks the timer has not already been removed
+               if ( !timer() && timers[ i ] === timer ) {
+                       timers.splice( i--, 1 );
+               }
+       }
+
+       if ( !timers.length ) {
+               jQuery.fx.stop();
+       }
+       fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+       if ( timer() && jQuery.timers.push( timer ) ) {
+               jQuery.fx.start();
+       }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+       if ( !timerId ) {
+               timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+       }
+};
+
+jQuery.fx.stop = function() {
+       clearInterval( timerId );
+       timerId = null;
+};
+
+jQuery.fx.speeds = {
+       slow: 600,
+       fast: 200,
+       // Default speed
+       _default: 400
+};
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+       jQuery.expr.filters.animated = function( elem ) {
+               return jQuery.grep(jQuery.timers, function( fn ) {
+                       return elem === fn.elem;
+               }).length;
+       };
+}
+jQuery.fn.offset = function( options ) {
+       if ( arguments.length ) {
+               return options === undefined ?
+                       this :
+                       this.each(function( i ) {
+                               jQuery.offset.setOffset( this, options, i );
+                       });
+       }
+
+       var docElem, win,
+               box = { top: 0, left: 0 },
+               elem = this[ 0 ],
+               doc = elem && elem.ownerDocument;
+
+       if ( !doc ) {
+               return;
+       }
+
+       docElem = doc.documentElement;
+
+       // Make sure it's not a disconnected DOM node
+       if ( !jQuery.contains( docElem, elem ) ) {
+               return box;
+       }
+
+       // If we don't have gBCR, just use 0,0 rather than error
+       // BlackBerry 5, iOS 3 (original iPhone)
+       if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
+               box = elem.getBoundingClientRect();
+       }
+       win = getWindow( doc );
+       return {
+               top: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),
+               left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
+       };
+};
+
+jQuery.offset = {
+
+       setOffset: function( elem, options, i ) {
+               var position = jQuery.css( elem, "position" );
+
+               // set position first, in-case top/left are set even on static elem
+               if ( position === "static" ) {
+                       elem.style.position = "relative";
+               }
+
+               var curElem = jQuery( elem ),
+                       curOffset = curElem.offset(),
+                       curCSSTop = jQuery.css( elem, "top" ),
+                       curCSSLeft = jQuery.css( elem, "left" ),
+                       calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+                       props = {}, curPosition = {}, curTop, curLeft;
+
+               // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+               if ( calculatePosition ) {
+                       curPosition = curElem.position();
+                       curTop = curPosition.top;
+                       curLeft = curPosition.left;
+               } else {
+                       curTop = parseFloat( curCSSTop ) || 0;
+                       curLeft = parseFloat( curCSSLeft ) || 0;
+               }
+
+               if ( jQuery.isFunction( options ) ) {
+                       options = options.call( elem, i, curOffset );
+               }
+
+               if ( options.top != null ) {
+                       props.top = ( options.top - curOffset.top ) + curTop;
+               }
+               if ( options.left != null ) {
+                       props.left = ( options.left - curOffset.left ) + curLeft;
+               }
+
+               if ( "using" in options ) {
+                       options.using.call( elem, props );
+               } else {
+                       curElem.css( props );
+               }
+       }
+};
+
+
+jQuery.fn.extend({
+
+       position: function() {
+               if ( !this[ 0 ] ) {
+                       return;
+               }
+
+               var offsetParent, offset,
+                       parentOffset = { top: 0, left: 0 },
+                       elem = this[ 0 ];
+
+               // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
+               if ( jQuery.css( elem, "position" ) === "fixed" ) {
+                       // we assume that getBoundingClientRect is available when computed position is fixed
+                       offset = elem.getBoundingClientRect();
+               } else {
+                       // Get *real* offsetParent
+                       offsetParent = this.offsetParent();
+
+                       // Get correct offsets
+                       offset = this.offset();
+                       if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+                               parentOffset = offsetParent.offset();
+                       }
+
+                       // Add offsetParent borders
+                       parentOffset.top  += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+                       parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+               }
+
+               // Subtract parent offsets and element margins
+               // note: when an element has margin: auto the offsetLeft and marginLeft
+               // are the same in Safari causing offset.left to incorrectly be 0
+               return {
+                       top:  offset.top  - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+                       left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
+               };
+       },
+
+       offsetParent: function() {
+               return this.map(function() {
+                       var offsetParent = this.offsetParent || document.documentElement;
+                       while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
+                               offsetParent = offsetParent.offsetParent;
+                       }
+                       return offsetParent || document.documentElement;
+               });
+       }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
+       var top = /Y/.test( prop );
+
+       jQuery.fn[ method ] = function( val ) {
+               return jQuery.access( this, function( elem, method, val ) {
+                       var win = getWindow( elem );
+
+                       if ( val === undefined ) {
+                               return win ? (prop in win) ? win[ prop ] :
+                                       win.document.documentElement[ method ] :
+                                       elem[ method ];
+                       }
+
+                       if ( win ) {
+                               win.scrollTo(
+                                       !top ? val : jQuery( win ).scrollLeft(),
+                                       top ? val : jQuery( win ).scrollTop()
+                               );
+
+                       } else {
+                               elem[ method ] = val;
+                       }
+               }, method, val, arguments.length, null );
+       };
+});
+
+function getWindow( elem ) {
+       return jQuery.isWindow( elem ) ?
+               elem :
+               elem.nodeType === 9 ?
+                       elem.defaultView || elem.parentWindow :
+                       false;
+}
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+       jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+               // margin is only for outerHeight, outerWidth
+               jQuery.fn[ funcName ] = function( margin, value ) {
+                       var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+                               extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+                       return jQuery.access( this, function( elem, type, value ) {
+                               var doc;
+
+                               if ( jQuery.isWindow( elem ) ) {
+                                       // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+                                       // isn't a whole lot we can do. See pull request at this URL for discussion:
+                                       // https://github.com/jquery/jquery/pull/764
+                                       return elem.document.documentElement[ "client" + name ];
+                               }
+
+                               // Get document width or height
+                               if ( elem.nodeType === 9 ) {
+                                       doc = elem.documentElement;
+
+                                       // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
+                                       // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
+                                       return Math.max(
+                                               elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+                                               elem.body[ "offset" + name ], doc[ "offset" + name ],
+                                               doc[ "client" + name ]
+                                       );
+                               }
+
+                               return value === undefined ?
+                                       // Get width or height on the element, requesting but not forcing parseFloat
+                                       jQuery.css( elem, type, extra ) :
+
+                                       // Set width or height on the element
+                                       jQuery.style( elem, type, value, extra );
+                       }, type, chainable ? margin : undefined, chainable, null );
+               };
+       });
+});
+// Limit scope pollution from any deprecated API
+// (function() {
+
+// })();
+// Expose jQuery to the global object
+window.jQuery = window.$ = jQuery;
+
+// Expose jQuery as an AMD module, but only for AMD loaders that
+// understand the issues with loading multiple versions of jQuery
+// in a page that all might call define(). The loader will indicate
+// they have special allowances for multiple jQuery versions by
+// specifying define.amd.jQuery = true. Register as a named module,
+// since jQuery can be concatenated with other files that may use define,
+// but not use a proper concatenation script that understands anonymous
+// AMD modules. A named AMD is safest and most robust way to register.
+// Lowercase jquery is used because AMD module names are derived from
+// file names, and jQuery is normally delivered in a lowercase file name.
+// Do this after creating the global so that if an AMD module wants to call
+// noConflict to hide this version of jQuery, it will work.
+if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
+       define( "jquery", [], function () { return jQuery; } );
+}
+
+})( window );
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/unit/extending.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/unit/extending.js
new file mode 100644 (file)
index 0000000..4b4c6e8
--- /dev/null
@@ -0,0 +1,95 @@
+module("extending", { teardown: moduleTeardown });
+
+test("custom pseudos", function() {
+       expect( 6 );
+
+       Sizzle.selectors.filters.foundation = Sizzle.selectors.filters.root;
+       deepEqual( Sizzle(":foundation"), [ document.documentElement ], "Copy element filter with new name" );
+       delete Sizzle.selectors.filters.foundation;
+
+       Sizzle.selectors.setFilters.primary = Sizzle.selectors.setFilters.first;
+       t( "Copy set filter with new name", "div:primary", ["qunit"] );
+       delete Sizzle.selectors.setFilters.primary;
+
+       Sizzle.selectors.filters.aristotlean = Sizzle.selectors.createPseudo(function() {
+               return function( elem ) {
+                       return !!elem.id;
+               };
+       });
+       t( "Custom element filter", "#foo :aristotlean", [ "sndp", "en", "yahoo", "sap", "anchor2", "simon" ] );
+       delete Sizzle.selectors.filters.aristotlean;
+
+       Sizzle.selectors.filters.endswith = Sizzle.selectors.createPseudo(function( text ) {
+               return function( elem ) {
+                       return Sizzle.getText( elem ).slice( -text.length ) === text;
+               };
+       });
+       t( "Custom element filter with argument", "a:endswith(ogle)", ["google"] );
+       delete Sizzle.selectors.filters.endswith;
+
+       Sizzle.selectors.setFilters.second = Sizzle.selectors.createPseudo(function() {
+               return Sizzle.selectors.createPseudo(function( seed, matches ) {
+                       if ( seed[1] ) {
+                               matches[1] = seed[1];
+                               seed[1] = false;
+                       }
+               });
+       });
+       t( "Custom set filter", "#qunit-fixture p:second", ["ap"] );
+       delete Sizzle.selectors.filters.second;
+
+       Sizzle.selectors.setFilters.slice = Sizzle.selectors.createPseudo(function( argument ) {
+               var bounds = argument.split(":");
+               return Sizzle.selectors.createPseudo(function( seed, matches ) {
+                       var i = bounds[1];
+
+                       // Match elements found at the specified indexes
+                       while ( --i >= bounds[0] ) {
+                               if ( seed[i] ) {
+                                       matches[i] = seed[i];
+                                       seed[i] = false;
+                               }
+                       }
+               });
+       });
+       t( "Custom set filter with argument", "#qunit-fixture p:slice(1:3)", [ "ap", "sndp" ] );
+       delete Sizzle.selectors.filters.slice;
+});
+
+test("backwards-compatible custom pseudos", function() {
+       expect( 3 );
+
+       Sizzle.selectors.filters.icontains = function( elem, i, match ) {
+               return Sizzle.getText( elem ).toLowerCase().indexOf( (match[3] || "").toLowerCase() ) > -1;
+       };
+       t( "Custom element filter with argument", "a:icontains(THIS BLOG ENTRY)", ["simon1"] );
+       delete Sizzle.selectors.filters.icontains;
+
+       Sizzle.selectors.setFilters.podium = function( elements, argument ) {
+               var count = argument == null || argument === "" ? 3 : +argument;
+               return elements.slice( 0, count );
+       };
+       // Using TAG as the first token here forces this setMatcher into a fail state
+       // Where the descendent combinator was lost
+       t( "Custom setFilter", "form#form :PODIUM", ["label-for", "text1", "text2"] );
+       t( "Custom setFilter with argument", "#form input:Podium(1)", ["text1"] );
+       delete Sizzle.selectors.setFilters.podium;
+});
+
+test("custom attribute getters", function() {
+       expect( 2 );
+
+       var original = Sizzle.selectors.attrHandle.hreflang,
+               selector = "a:contains('mark')[hreflang='http://diveintomark.org/en']";
+
+       Sizzle.selectors.attrHandle.hreflang = function( elem, name ) {
+               var href = elem.getAttribute("href"),
+                       lang = elem.getAttribute( name );
+               return lang && ( href + lang );
+       };
+
+       deepEqual( Sizzle(selector, createWithFriesXML()), [], "Custom attrHandle (preferred document)" );
+       t( "Custom attrHandle (preferred document)", selector, ["mark"] );
+
+       Sizzle.selectors.attrHandle.hreflang = original;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/unit/selector.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/unit/selector.js
new file mode 100644 (file)
index 0000000..db5ca7f
--- /dev/null
@@ -0,0 +1,1149 @@
+module("selector", { teardown: moduleTeardown });
+
+// #### NOTE: ####
+// jQuery should not be used in this module
+// except for DOM manipulation
+// If jQuery is mandatory for the selection, move the test to jquery/test/unit/selector.js
+// Use t() or Sizzle()
+// ###############
+
+/*
+       ======== QUnit Reference ========
+       http://docs.jquery.com/QUnit
+
+       Test methods:
+               expect(numAssertions)
+               stop()
+               start()
+                       note: QUnit's eventual addition of an argument to stop/start is ignored in this test suite
+                       so that start and stop can be passed as callbacks without worrying about
+                               their parameters
+       Test assertions:
+               ok(value, [message])
+               equal(actual, expected, [message])
+               notEqual(actual, expected, [message])
+               deepEqual(actual, expected, [message])
+               notDeepEqual(actual, expected, [message])
+               strictEqual(actual, expected, [message])
+               notStrictEqual(actual, expected, [message])
+               raises(block, [expected], [message])
+
+       ======== testinit.js reference ========
+       See data/testinit.js
+
+       q(...);
+               Returns an array of elements with the given IDs
+               @example q("main", "foo", "bar") => [<div id="main">, <span id="foo">, <input id="bar">]
+
+       t( testName, selector, [ "array", "of", "ids" ] );
+               Asserts that a select matches the given IDs
+               @example t("Check for something", "//[a]", ["foo", "baar"]);
+
+       url( "some/url.php" );
+               Add random number to url to stop caching
+               @example url("data/test.html") => "data/test.html?10538358428943"
+               @example url("data/test.php?foo=bar") => "data/test.php?foo=bar&10538358345554"
+*/
+
+test("element", function() {
+       expect( 39 );
+
+       var form, all, good, i, obj1, lengthtest,
+               siblingTest, siblingNext, iframe, iframeDoc, html;
+
+       equal( Sizzle("").length, 0, "Empty selector returns an empty array" );
+       deepEqual( Sizzle("div", document.createTextNode("")), [], "Text element as context fails silently" );
+       form = document.getElementById("form");
+       ok( !Sizzle.matchesSelector( form, "" ), "Empty string passed to matchesSelector does not match" );
+       equal( Sizzle(" ").length, 0, "Empty selector returns an empty array" );
+       equal( Sizzle("\t").length, 0, "Empty selector returns an empty array" );
+
+       ok( Sizzle("*").length >= 30, "Select all" );
+       all = Sizzle("*");
+       good = true;
+       for ( i = 0; i < all.length; i++ ) {
+               if ( all[i].nodeType === 8 ) {
+                       good = false;
+               }
+       }
+       ok( good, "Select all elements, no comment nodes" );
+       t( "Element Selector", "html", ["html"] );
+       t( "Element Selector", "body", ["body"] );
+       t( "Element Selector", "#qunit-fixture p", ["firstp","ap","sndp","en","sap","first"] );
+
+       t( "Leading space", " #qunit-fixture p", ["firstp","ap","sndp","en","sap","first"] );
+       t( "Leading tab", "\t#qunit-fixture p", ["firstp","ap","sndp","en","sap","first"] );
+       t( "Leading carriage return", "\r#qunit-fixture p", ["firstp","ap","sndp","en","sap","first"] );
+       t( "Leading line feed", "\n#qunit-fixture p", ["firstp","ap","sndp","en","sap","first"] );
+       t( "Leading form feed", "\f#qunit-fixture p", ["firstp","ap","sndp","en","sap","first"] );
+       t( "Trailing space", "#qunit-fixture p ", ["firstp","ap","sndp","en","sap","first"] );
+       t( "Trailing tab", "#qunit-fixture p\t", ["firstp","ap","sndp","en","sap","first"] );
+       t( "Trailing carriage return", "#qunit-fixture p\r", ["firstp","ap","sndp","en","sap","first"] );
+       t( "Trailing line feed", "#qunit-fixture p\n", ["firstp","ap","sndp","en","sap","first"] );
+       t( "Trailing form feed", "#qunit-fixture p\f", ["firstp","ap","sndp","en","sap","first"] );
+
+       t( "Parent Element", "dl ol", ["empty", "listWithTabIndex"] );
+       t( "Parent Element (non-space descendant combinator)", "dl\tol", ["empty", "listWithTabIndex"] );
+       obj1 = document.getElementById("object1");
+       equal( Sizzle("param", obj1).length, 2, "Object/param as context" );
+
+       deepEqual( Sizzle("select", form), q("select1","select2","select3","select4","select5"), "Finding selects with a context." );
+
+       // Check for unique-ness and sort order
+       deepEqual( Sizzle("p, div p"), Sizzle("p"), "Check for duplicates: p, div p" );
+
+       t( "Checking sort order", "h2, h1", ["qunit-header", "qunit-banner", "qunit-userAgent"] );
+       t( "Checking sort order", "h2:first, h1:first", ["qunit-header", "qunit-banner"] );
+       t( "Checking sort order", "#qunit-fixture p, #qunit-fixture p a", ["firstp", "simon1", "ap", "google", "groups", "anchor1", "mark", "sndp", "en", "yahoo", "sap", "anchor2", "simon", "first"] );
+
+       // Test Conflict ID
+       lengthtest = document.getElementById("lengthtest");
+       deepEqual( Sizzle("#idTest", lengthtest), q("idTest"), "Finding element with id of ID." );
+       deepEqual( Sizzle("[name='id']", lengthtest), q("idTest"), "Finding element with id of ID." );
+       deepEqual( Sizzle("input[id='idTest']", lengthtest), q("idTest"), "Finding elements with id of ID." );
+
+       siblingTest = document.getElementById("siblingTest");
+       deepEqual( Sizzle("div em", siblingTest), [], "Element-rooted QSA does not select based on document context" );
+       deepEqual( Sizzle("div em, div em, div em:not(div em)", siblingTest), [], "Element-rooted QSA does not select based on document context" );
+       deepEqual( Sizzle("div em, em\\,", siblingTest), [], "Escaped commas do not get treated with an id in element-rooted QSA" );
+
+       siblingNext = document.getElementById("siblingnext");
+       document.createDocumentFragment().appendChild( siblingTest );
+       deepEqual( Sizzle( "em + :not(:has(*)):not(:empty), foo", siblingTest ), [ siblingNext ],
+               "Non-qSA path correctly sets detached context for sibling selectors (jQuery #14351)" );
+
+       iframe = document.getElementById("iframe"),
+               iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
+       iframeDoc.open();
+       iframeDoc.write("<body><p id='foo'>bar</p></body>");
+       iframeDoc.close();
+       deepEqual(
+               Sizzle( "p:contains(bar)", iframeDoc ),
+               [ iframeDoc.getElementById("foo") ],
+               "Other document as context"
+       );
+
+       html = "";
+       for ( i = 0; i < 100; i++ ) {
+               html = "<div>" + html + "</div>";
+       }
+       html = jQuery( html ).appendTo( document.body );
+       ok( !!Sizzle("body div div div").length, "No stack or performance problems with large amounts of descendents" );
+       ok( !!Sizzle("body>div div div").length, "No stack or performance problems with large amounts of descendents" );
+       html.remove();
+
+       // Real use case would be using .watch in browsers with window.watch (see Issue #157)
+       q("qunit-fixture")[0].appendChild( document.createElement("toString") ).id = "toString";
+       t( "Element name matches Object.prototype property", "toString#toString", ["toString"] );
+});
+
+test("XML Document Selectors", function() {
+       var xml = createWithFriesXML();
+       expect( 11 );
+
+       equal( Sizzle("foo_bar", xml).length, 1, "Element Selector with underscore" );
+       equal( Sizzle(".component", xml).length, 1, "Class selector" );
+       equal( Sizzle("[class*=component]", xml).length, 1, "Attribute selector for class" );
+       equal( Sizzle("property[name=prop2]", xml).length, 1, "Attribute selector with name" );
+       equal( Sizzle("[name=prop2]", xml).length, 1, "Attribute selector with name" );
+       equal( Sizzle("#seite1", xml).length, 1, "Attribute selector with ID" );
+       equal( Sizzle("component#seite1", xml).length, 1, "Attribute selector with ID" );
+       equal( Sizzle.matches( "#seite1", Sizzle("component", xml) ).length, 1, "Attribute selector filter with ID" );
+       equal( Sizzle("meta property thing", xml).length, 2, "Descendent selector and dir caching" );
+       ok( Sizzle.matchesSelector( xml.lastChild, "soap\\:Envelope" ), "Check for namespaced element" );
+
+       xml = jQuery.parseXML("<?xml version='1.0' encoding='UTF-8'?><root><elem id='1'/></root>");
+       equal( Sizzle( "elem:not(:has(*))", xml ).length, 1,
+               "Non-qSA path correctly handles numeric ids (jQuery #14142)" );
+});
+
+test("broken", function() {
+       expect( 26 );
+
+       var attrbad,
+               broken = function( name, selector ) {
+                       throws(function() {
+                               // Setting context to null here somehow avoids QUnit's window.error handling
+                               // making the e & e.message correct
+                               // For whatever reason, without this,
+                               // Sizzle.error will be called but no error will be seen in oldIE
+                               Sizzle.call( null, selector );
+                       }, function( e ) {
+                               return e.message.indexOf("Syntax error") >= 0;
+                       }, name + ": " + selector );
+               };
+
+       broken( "Broken Selector", "[" );
+       broken( "Broken Selector", "(" );
+       broken( "Broken Selector", "{" );
+       broken( "Broken Selector", "<" );
+       broken( "Broken Selector", "()" );
+       broken( "Broken Selector", "<>" );
+       broken( "Broken Selector", "{}" );
+       broken( "Broken Selector", "," );
+       broken( "Broken Selector", ",a" );
+       broken( "Broken Selector", "a," );
+       // Hangs on IE 9 if regular expression is inefficient
+       broken( "Broken Selector", "[id=012345678901234567890123456789");
+       broken( "Doesn't exist", ":visble" );
+       broken( "Nth-child", ":nth-child" );
+       // Sigh again. IE 9 thinks this is also a real selector
+       // not super critical that we fix this case
+       //broken( "Nth-child", ":nth-child(-)" );
+       // Sigh. WebKit thinks this is a real selector in qSA
+       // They've already fixed this and it'll be coming into
+       // current browsers soon. Currently, Safari 5.0 still has this problem
+       // broken( "Nth-child", ":nth-child(asdf)", [] );
+       broken( "Nth-child", ":nth-child(2n+-0)" );
+       broken( "Nth-child", ":nth-child(2+0)" );
+       broken( "Nth-child", ":nth-child(- 1n)" );
+       broken( "Nth-child", ":nth-child(-1 n)" );
+       broken( "First-child", ":first-child(n)" );
+       broken( "Last-child", ":last-child(n)" );
+       broken( "Only-child", ":only-child(n)" );
+       broken( "Nth-last-last-child", ":nth-last-last-child(1)" );
+       broken( "First-last-child", ":first-last-child" );
+       broken( "Last-last-child", ":last-last-child" );
+       broken( "Only-last-child", ":only-last-child" );
+
+       // Make sure attribute value quoting works correctly. See: #6093
+       attrbad = jQuery("<input type='hidden' value='2' name='foo.baz' id='attrbad1'/><input type='hidden' value='2' name='foo[baz]' id='attrbad2'/>").appendTo("#qunit-fixture");
+
+       broken( "Attribute not escaped", "input[name=foo.baz]", [] );
+       // Shouldn't be matching those inner brackets
+       broken( "Attribute not escaped", "input[name=foo[baz]]", [] );
+});
+
+test("id", function() {
+       expect( 34 );
+
+       var fiddle, a;
+
+       t( "ID Selector", "#body", ["body"] );
+       t( "ID Selector w/ Element", "body#body", ["body"] );
+       t( "ID Selector w/ Element", "ul#first", [] );
+       t( "ID selector with existing ID descendant", "#firstp #simon1", ["simon1"] );
+       t( "ID selector with non-existant descendant", "#firstp #foobar", [] );
+       t( "ID selector using UTF8", "#台北Táiběi", ["台北Táiběi"] );
+       t( "Multiple ID selectors using UTF8", "#台北Táiběi, #台北", ["台北Táiběi","台北"] );
+       t( "Descendant ID selector using UTF8", "div #台北", ["台北"] );
+       t( "Child ID selector using UTF8", "form > #台北", ["台北"] );
+
+       t( "Escaped ID", "#foo\\:bar", ["foo:bar"] );
+       t( "Escaped ID with descendent", "#foo\\:bar span:not(:input)", ["foo_descendent"] );
+       t( "Escaped ID", "#test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
+       t( "Descendant escaped ID", "div #foo\\:bar", ["foo:bar"] );
+       t( "Descendant escaped ID", "div #test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
+       t( "Child escaped ID", "form > #foo\\:bar", ["foo:bar"] );
+       t( "Child escaped ID", "form > #test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
+
+       fiddle = jQuery("<div id='fiddle\\Foo'><span id='fiddleSpan'></span></div>").appendTo("#qunit-fixture");
+       deepEqual( Sizzle( "> span", Sizzle("#fiddle\\\\Foo")[0] ), q([ "fiddleSpan" ]), "Escaped ID as context" );
+       fiddle.remove();
+
+       t( "ID Selector, child ID present", "#form > #radio1", ["radio1"] ); // bug #267
+       t( "ID Selector, not an ancestor ID", "#form #first", [] );
+       t( "ID Selector, not a child ID", "#form > #option1a", [] );
+
+       t( "All Children of ID", "#foo > *", ["sndp", "en", "sap"] );
+       t( "All Children of ID with no children", "#firstUL > *", [] );
+
+       equal( Sizzle("#tName1")[0].id, "tName1", "ID selector with same value for a name attribute" );
+       t( "ID selector non-existing but name attribute on an A tag",         "#tName2",      [] );
+       t( "Leading ID selector non-existing but name attribute on an A tag", "#tName2 span", [] );
+       t( "Leading ID selector existing, retrieving the child",              "#tName1 span", ["tName1-span"] );
+       equal( Sizzle("div > div #tName1")[0].id, Sizzle("#tName1-span")[0].parentNode.id, "Ending with ID" );
+
+       a = jQuery("<a id='backslash\\foo'></a>").appendTo("#qunit-fixture");
+       t( "ID Selector contains backslash", "#backslash\\\\foo", ["backslash\\foo"] );
+
+       t( "ID Selector on Form with an input that has a name of 'id'", "#lengthtest", ["lengthtest"] );
+
+       t( "ID selector with non-existant ancestor", "#asdfasdf #foobar", [] ); // bug #986
+
+       deepEqual( Sizzle("div#form", document.body), [], "ID selector within the context of another element" );
+
+       t( "Underscore ID", "#types_all", ["types_all"] );
+       t( "Dash ID", "#qunit-fixture", ["qunit-fixture"] );
+
+       t( "ID with weird characters in it", "#name\\+value", ["name+value"] );
+});
+
+test("class", function() {
+       expect( 26 );
+
+       t( "Class Selector", ".blog", ["mark","simon"] );
+       t( "Class Selector", ".GROUPS", ["groups"] );
+       t( "Class Selector", ".blog.link", ["simon"] );
+       t( "Class Selector w/ Element", "a.blog", ["mark","simon"] );
+       t( "Parent Class Selector", "p .blog", ["mark","simon"] );
+
+       t( "Class selector using UTF8", ".台北Táiběi", ["utf8class1"] );
+       //t( "Class selector using UTF8", ".台北", ["utf8class1","utf8class2"] );
+       t( "Class selector using UTF8", ".台北Táiběi.台北", ["utf8class1"] );
+       t( "Class selector using UTF8", ".台北Táiběi, .台北", ["utf8class1","utf8class2"] );
+       t( "Descendant class selector using UTF8", "div .台北Táiběi", ["utf8class1"] );
+       t( "Child class selector using UTF8", "form > .台北Táiběi", ["utf8class1"] );
+
+       t( "Escaped Class", ".foo\\:bar", ["foo:bar"] );
+       t( "Escaped Class", ".test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
+       t( "Descendant escaped Class", "div .foo\\:bar", ["foo:bar"] );
+       t( "Descendant escaped Class", "div .test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
+       t( "Child escaped Class", "form > .foo\\:bar", ["foo:bar"] );
+       t( "Child escaped Class", "form > .test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
+
+       var div = document.createElement("div");
+       div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+       deepEqual( Sizzle(".e", div), [ div.firstChild ], "Finding a second class." );
+
+       div.lastChild.className = "e";
+
+       deepEqual( Sizzle(".e", div), [ div.firstChild, div.lastChild ], "Finding a modified class." );
+
+       ok( !Sizzle.matchesSelector( div, ".null"), ".null does not match an element with no class" );
+       ok( !Sizzle.matchesSelector( div.firstChild, ".null div"), ".null does not match an element with no class" );
+       div.className = "null";
+       ok( Sizzle.matchesSelector( div, ".null"), ".null matches element with class 'null'" );
+       ok( Sizzle.matchesSelector( div.firstChild, ".null div"), "caching system respects DOM changes" );
+       ok( !Sizzle.matchesSelector( document, ".foo" ), "testing class on document doesn't error" );
+       ok( !Sizzle.matchesSelector( window, ".foo" ), "testing class on window doesn't error" );
+
+       div.lastChild.className += " hasOwnProperty toString";
+       deepEqual( Sizzle(".e.hasOwnProperty.toString", div), [ div.lastChild ], "Classes match Object.prototype properties" );
+
+       div = jQuery("<div><svg width='200' height='250' version='1.1' xmlns='http://www.w3.org/2000/svg'><rect x='10' y='10' width='30' height='30' class='foo'></rect></svg></div>")[0];
+       equal( Sizzle(".foo", div).length, 1, "Class selector against SVG" );
+});
+
+test("name", function() {
+       expect( 14 );
+
+       var form;
+
+       t( "Name selector", "input[name=action]", ["text1"] );
+       t( "Name selector with single quotes", "input[name='action']", ["text1"] );
+       t( "Name selector with double quotes", "input[name=\"action\"]", ["text1"] );
+
+       t( "Name selector non-input", "[name=example]", ["name-is-example"] );
+       t( "Name selector non-input", "[name=div]", ["name-is-div"] );
+       t( "Name selector non-input", "*[name=iframe]", ["iframe"] );
+
+       t( "Name selector for grouped input", "input[name='types[]']", ["types_all", "types_anime", "types_movie"] );
+
+       form = document.getElementById("form");
+       deepEqual( Sizzle("input[name=action]", form), q("text1"), "Name selector within the context of another element" );
+       deepEqual( Sizzle("input[name='foo[bar]']", form), q("hidden2"), "Name selector for grouped form element within the context of another element" );
+
+       form = jQuery("<form><input name='id'/></form>").appendTo("body");
+       equal( Sizzle("input", form[0]).length, 1, "Make sure that rooted queries on forms (with possible expandos) work." );
+
+       form.remove();
+
+       t( "Find elements that have similar IDs", "[name=tName1]", ["tName1ID"] );
+       t( "Find elements that have similar IDs", "[name=tName2]", ["tName2ID"] );
+       t( "Find elements that have similar IDs", "#tName2ID", ["tName2ID"] );
+
+       t( "Case-sensitivity", "[name=tname1]", [] );
+});
+
+test("multiple", function() {
+       expect(6);
+
+       t( "Comma Support", "h2, #qunit-fixture p", ["qunit-banner","qunit-userAgent","firstp","ap","sndp","en","sap","first"] );
+       t( "Comma Support", "h2 , #qunit-fixture p", ["qunit-banner","qunit-userAgent","firstp","ap","sndp","en","sap","first"] );
+       t( "Comma Support", "h2 , #qunit-fixture p", ["qunit-banner","qunit-userAgent","firstp","ap","sndp","en","sap","first"] );
+       t( "Comma Support", "h2,#qunit-fixture p", ["qunit-banner","qunit-userAgent","firstp","ap","sndp","en","sap","first"] );
+       t( "Comma Support", "h2,#qunit-fixture p ", ["qunit-banner","qunit-userAgent","firstp","ap","sndp","en","sap","first"] );
+       t( "Comma Support", "h2\t,\r#qunit-fixture p\n", ["qunit-banner","qunit-userAgent","firstp","ap","sndp","en","sap","first"] );
+});
+
+test("child and adjacent", function() {
+       expect( 42 );
+
+       var siblingFirst, en, nothiddendiv;
+
+       t( "Child", "p > a", ["simon1","google","groups","mark","yahoo","simon"] );
+       t( "Child", "p> a", ["simon1","google","groups","mark","yahoo","simon"] );
+       t( "Child", "p >a", ["simon1","google","groups","mark","yahoo","simon"] );
+       t( "Child", "p>a", ["simon1","google","groups","mark","yahoo","simon"] );
+       t( "Child w/ Class", "p > a.blog", ["mark","simon"] );
+       t( "All Children", "code > *", ["anchor1","anchor2"] );
+       t( "All Grandchildren", "p > * > *", ["anchor1","anchor2"] );
+       t( "Adjacent", "#qunit-fixture a + a", ["groups", "tName2ID"] );
+       t( "Adjacent", "#qunit-fixture a +a", ["groups", "tName2ID"] );
+       t( "Adjacent", "#qunit-fixture a+ a", ["groups", "tName2ID"] );
+       t( "Adjacent", "#qunit-fixture a+a", ["groups", "tName2ID"] );
+       t( "Adjacent", "p + p", ["ap","en","sap"] );
+       t( "Adjacent", "p#firstp + p", ["ap"] );
+       t( "Adjacent", "p[lang=en] + p", ["sap"] );
+       t( "Adjacent", "a.GROUPS + code + a", ["mark"] );
+       t( "Comma, Child, and Adjacent", "#qunit-fixture a + a, code > a", ["groups","anchor1","anchor2","tName2ID"] );
+       t( "Element Preceded By", "#qunit-fixture p ~ div", ["foo", "nothiddendiv", "moretests","tabindex-tests", "liveHandlerOrder", "siblingTest"] );
+       t( "Element Preceded By", "#first ~ div", ["moretests","tabindex-tests", "liveHandlerOrder", "siblingTest"] );
+       t( "Element Preceded By", "#groups ~ a", ["mark"] );
+       t( "Element Preceded By", "#length ~ input", ["idTest"] );
+       t( "Element Preceded By", "#siblingfirst ~ em", ["siblingnext", "siblingthird"] );
+       t( "Element Preceded By (multiple)", "#siblingTest em ~ em ~ em ~ span", ["siblingspan"] );
+       t( "Element Preceded By, Containing", "#liveHandlerOrder ~ div em:contains('1')", ["siblingfirst"] );
+
+       siblingFirst = document.getElementById("siblingfirst");
+
+       deepEqual( Sizzle("~ em", siblingFirst), q("siblingnext", "siblingthird"), "Element Preceded By with a context." );
+       deepEqual( Sizzle("+ em", siblingFirst), q("siblingnext"), "Element Directly Preceded By with a context." );
+       deepEqual( Sizzle("~ em:first", siblingFirst), q("siblingnext"), "Element Preceded By positional with a context." );
+
+       en = document.getElementById("en");
+       deepEqual( Sizzle("+ p, a", en), q("yahoo", "sap"), "Compound selector with context, beginning with sibling test." );
+       deepEqual( Sizzle("a, + p", en), q("yahoo", "sap"), "Compound selector with context, containing sibling test." );
+
+       t( "Multiple combinators selects all levels", "#siblingTest em *", ["siblingchild", "siblinggrandchild", "siblinggreatgrandchild"] );
+       t( "Multiple combinators selects all levels", "#siblingTest > em *", ["siblingchild", "siblinggrandchild", "siblinggreatgrandchild"] );
+       t( "Multiple sibling combinators doesn't miss general siblings", "#siblingTest > em:first-child + em ~ span", ["siblingspan"] );
+       t( "Combinators are not skipped when mixing general and specific", "#siblingTest > em:contains('x') + em ~ span", [] );
+
+       equal( Sizzle("#listWithTabIndex").length, 1, "Parent div for next test is found via ID (#8310)" );
+       equal( Sizzle("#listWithTabIndex li:eq(2) ~ li").length, 1, "Find by general sibling combinator (#8310)" );
+       equal( Sizzle("#__sizzle__").length, 0, "Make sure the temporary id assigned by sizzle is cleared out (#8310)" );
+       equal( Sizzle("#listWithTabIndex").length, 1, "Parent div for previous test is still found via ID (#8310)" );
+
+       t( "Verify deep class selector", "div.blah > p > a", [] );
+
+       t( "No element deep selector", "div.foo > span > a", [] );
+
+       nothiddendiv = document.getElementById("nothiddendiv");
+       deepEqual( Sizzle("> :first", nothiddendiv), q("nothiddendivchild"), "Verify child context positional selector" );
+       deepEqual( Sizzle("> :eq(0)", nothiddendiv), q("nothiddendivchild"), "Verify child context positional selector" );
+       deepEqual( Sizzle("> *:first", nothiddendiv), q("nothiddendivchild"), "Verify child context positional selector" );
+
+       t( "Non-existant ancestors", ".fototab > .thumbnails > a", [] );
+});
+
+test("attributes", function() {
+       expect( 76 );
+
+       var opt, input, attrbad, div;
+
+       t( "Attribute Exists", "#qunit-fixture a[title]", ["google"] );
+       t( "Attribute Exists (case-insensitive)", "#qunit-fixture a[TITLE]", ["google"] );
+       t( "Attribute Exists", "#qunit-fixture *[title]", ["google"] );
+       t( "Attribute Exists", "#qunit-fixture [title]", ["google"] );
+       t( "Attribute Exists", "#qunit-fixture a[ title ]", ["google"] );
+
+       t( "Boolean attribute exists", "#select2 option[selected]", ["option2d"]);
+       t( "Boolean attribute equals", "#select2 option[selected='selected']", ["option2d"]);
+
+       t( "Attribute Equals", "#qunit-fixture a[rel='bookmark']", ["simon1"] );
+       t( "Attribute Equals", "#qunit-fixture a[rel='bookmark']", ["simon1"] );
+       t( "Attribute Equals", "#qunit-fixture a[rel=bookmark]", ["simon1"] );
+       t( "Attribute Equals", "#qunit-fixture a[href='http://www.google.com/']", ["google"] );
+       t( "Attribute Equals", "#qunit-fixture a[ rel = 'bookmark' ]", ["simon1"] );
+       t( "Attribute Equals Number", "#qunit-fixture option[value=1]", ["option1b","option2b","option3b","option4b","option5c"] );
+       t( "Attribute Equals Number", "#qunit-fixture li[tabIndex=-1]", ["foodWithNegativeTabIndex"] );
+
+       document.getElementById("anchor2").href = "#2";
+       t( "href Attribute", "p a[href^=#]", ["anchor2"] );
+       t( "href Attribute", "p a[href*=#]", ["simon1", "anchor2"] );
+
+       t( "for Attribute", "form label[for]", ["label-for"] );
+       t( "for Attribute in form", "#form [for=action]", ["label-for"] );
+
+       t( "Attribute containing []", "input[name^='foo[']", ["hidden2"] );
+       t( "Attribute containing []", "input[name^='foo[bar]']", ["hidden2"] );
+       t( "Attribute containing []", "input[name*='[bar]']", ["hidden2"] );
+       t( "Attribute containing []", "input[name$='bar]']", ["hidden2"] );
+       t( "Attribute containing []", "input[name$='[bar]']", ["hidden2"] );
+       t( "Attribute containing []", "input[name$='foo[bar]']", ["hidden2"] );
+       t( "Attribute containing []", "input[name*='foo[bar]']", ["hidden2"] );
+
+       deepEqual( Sizzle( "input[data-comma='0,1']" ), [ document.getElementById("el12087") ], "Without context, single-quoted attribute containing ','" );
+       deepEqual( Sizzle( "input[data-comma=\"0,1\"]" ), [ document.getElementById("el12087") ], "Without context, double-quoted attribute containing ','" );
+       deepEqual( Sizzle( "input[data-comma='0,1']", document.getElementById("t12087") ), [ document.getElementById("el12087") ], "With context, single-quoted attribute containing ','" );
+       deepEqual( Sizzle( "input[data-comma=\"0,1\"]", document.getElementById("t12087") ), [ document.getElementById("el12087") ], "With context, double-quoted attribute containing ','" );
+
+       t( "Multiple Attribute Equals", "#form input[type='radio'], #form input[type='hidden']", ["radio1", "radio2", "hidden1"] );
+       t( "Multiple Attribute Equals", "#form input[type='radio'], #form input[type=\"hidden\"]", ["radio1", "radio2", "hidden1"] );
+       t( "Multiple Attribute Equals", "#form input[type='radio'], #form input[type=hidden]", ["radio1", "radio2", "hidden1"] );
+
+       t( "Attribute selector using UTF8", "span[lang=中文]", ["台北"] );
+
+       t( "Attribute Begins With", "a[href ^= 'http://www']", ["google","yahoo"] );
+       t( "Attribute Ends With", "a[href $= 'org/']", ["mark"] );
+       t( "Attribute Contains", "a[href *= 'google']", ["google","groups"] );
+       t( "Attribute Is Not Equal", "#ap a[hreflang!='en']", ["google","groups","anchor1"] );
+
+       opt = document.getElementById("option1a");
+       opt.setAttribute( "test", "" );
+
+       ok( Sizzle.matchesSelector( opt, "[id*=option1][type!=checkbox]" ), "Attribute Is Not Equal Matches" );
+       ok( Sizzle.matchesSelector( opt, "[id*=option1]" ), "Attribute With No Quotes Contains Matches" );
+       ok( Sizzle.matchesSelector( opt, "[test=]" ), "Attribute With No Quotes No Content Matches" );
+       ok( !Sizzle.matchesSelector( opt, "[test^='']" ), "Attribute with empty string value does not match startsWith selector (^=)" );
+       ok( Sizzle.matchesSelector( opt, "[id=option1a]" ), "Attribute With No Quotes Equals Matches" );
+       ok( Sizzle.matchesSelector( document.getElementById("simon1"), "a[href*=#]" ), "Attribute With No Quotes Href Contains Matches" );
+
+       t( "Empty values", "#select1 option[value='']", ["option1a"] );
+       t( "Empty values", "#select1 option[value!='']", ["option1b","option1c","option1d"] );
+
+       t( "Select options via :selected", "#select1 option:selected", ["option1a"] );
+       t( "Select options via :selected", "#select2 option:selected", ["option2d"] );
+       t( "Select options via :selected", "#select3 option:selected", ["option3b", "option3c"] );
+       t( "Select options via :selected", "select[name='select2'] option:selected", ["option2d"] );
+
+       t( "Grouped Form Elements", "input[name='foo[bar]']", ["hidden2"] );
+
+       input = document.getElementById("text1");
+       input.title = "Don't click me";
+
+       ok( Sizzle.matchesSelector( input, "input[title=\"Don't click me\"]" ), "Quote within attribute value does not mess up tokenizer" );
+
+       // Uncomment if the boolHook is removed
+       // var check2 = document.getElementById("check2");
+       // check2.checked = true;
+       // ok( !Sizzle.matches("[checked]", [ check2 ] ), "Dynamic boolean attributes match when they should with Sizzle.matches (#11115)" );
+
+       // jQuery #12303
+       input.setAttribute( "data-pos", ":first" );
+       ok( Sizzle.matchesSelector( input, "input[data-pos=\\:first]"), "POS within attribute value is treated as an attribute value" );
+       ok( Sizzle.matchesSelector( input, "input[data-pos=':first']"), "POS within attribute value is treated as an attribute value" );
+       ok( Sizzle.matchesSelector( input, ":input[data-pos=':first']"), "POS within attribute value after pseudo is treated as an attribute value" );
+       input.removeAttribute("data-pos");
+
+       // Make sure attribute value quoting works correctly. See jQuery #6093; #6428; #13894
+       // Use seeded results to bypass querySelectorAll optimizations
+       attrbad = jQuery(
+               "<input type='hidden' id='attrbad_space' name='foo bar'/>" +
+               "<input type='hidden' id='attrbad_dot' value='2' name='foo.baz'/>" +
+               "<input type='hidden' id='attrbad_brackets' value='2' name='foo[baz]'/>" +
+               "<input type='hidden' id='attrbad_injection' data-attr='foo_baz&#39;]'/>" +
+               "<input type='hidden' id='attrbad_quote' data-attr='&#39;'/>" +
+               "<input type='hidden' id='attrbad_backslash' data-attr='&#92;'/>" +
+               "<input type='hidden' id='attrbad_backslash_quote' data-attr='&#92;&#39;'/>" +
+               "<input type='hidden' id='attrbad_backslash_backslash' data-attr='&#92;&#92;'/>" +
+               "<input type='hidden' id='attrbad_unicode' data-attr='&#x4e00;'/>"
+       ).appendTo("#qunit-fixture").get();
+
+       t( "Underscores don't need escaping", "input[id=types_all]", ["types_all"] );
+
+       deepEqual( Sizzle( "input[name=foo\\ bar]", null, null, attrbad ), q("attrbad_space"),
+               "Escaped space" );
+       deepEqual( Sizzle( "input[name=foo\\.baz]", null, null, attrbad ), q("attrbad_dot"),
+               "Escaped dot" );
+       deepEqual( Sizzle( "input[name=foo\\[baz\\]]", null, null, attrbad ), q("attrbad_brackets"),
+               "Escaped brackets" );
+       deepEqual( Sizzle( "input[data-attr='foo_baz\\']']", null, null, attrbad ), q("attrbad_injection"),
+               "Escaped quote + right bracket" );
+
+       deepEqual( Sizzle( "input[data-attr='\\'']", null, null, attrbad ), q("attrbad_quote"),
+               "Quoted quote" );
+       deepEqual( Sizzle( "input[data-attr='\\\\']", null, null, attrbad ), q("attrbad_backslash"),
+               "Quoted backslash" );
+       deepEqual( Sizzle( "input[data-attr='\\\\\\'']", null, null, attrbad ), q("attrbad_backslash_quote"),
+               "Quoted backslash quote" );
+       deepEqual( Sizzle( "input[data-attr='\\\\\\\\']", null, null, attrbad ), q("attrbad_backslash_backslash"),
+               "Quoted backslash backslash" );
+
+       deepEqual( Sizzle( "input[data-attr='\\5C\\\\']", null, null, attrbad ), q("attrbad_backslash_backslash"),
+               "Quoted backslash backslash (numeric escape)" );
+       deepEqual( Sizzle( "input[data-attr='\\5C \\\\']", null, null, attrbad ), q("attrbad_backslash_backslash"),
+               "Quoted backslash backslash (numeric escape with trailing space)" );
+       deepEqual( Sizzle( "input[data-attr='\\5C\t\\\\']", null, null, attrbad ), q("attrbad_backslash_backslash"),
+               "Quoted backslash backslash (numeric escape with trailing tab)" );
+       deepEqual( Sizzle( "input[data-attr='\\04e00']", null, null, attrbad ), q("attrbad_unicode"),
+               "Long numeric escape (BMP)" );
+       document.getElementById("attrbad_unicode").setAttribute( "data-attr", "\uD834\uDF06A" );
+       // It was too much code to fix Safari 5.x Supplemental Plane crashes (see ba5f09fa404379a87370ec905ffa47f8ac40aaa3)
+       // deepEqual( Sizzle( "input[data-attr='\\01D306A']", null, null, attrbad ), q("attrbad_unicode"),
+       //      "Long numeric escape (non-BMP)" );
+
+       t( "input[type=text]", "#form input[type=text]", ["text1", "text2", "hidden2", "name"] );
+       t( "input[type=search]", "#form input[type=search]", ["search"] );
+       t( "script[src] (jQuery #13777)", "#moretests script[src]", ["script-src"] );
+
+       // #3279
+       div = document.createElement("div");
+       div.innerHTML = "<div id='foo' xml:test='something'></div>";
+
+       deepEqual( Sizzle( "[xml\\:test]", div ), [ div.firstChild ], "Finding by attribute with escaped characters." );
+
+       div = document.getElementById("foo");
+       t( "Object.prototype property \"constructor\" (negative)", "[constructor]", [] );
+       t( "Gecko Object.prototype property \"watch\" (negative)", "[watch]", [] );
+       div.setAttribute( "constructor", "foo" );
+       div.setAttribute( "watch", "bar" );
+       t( "Object.prototype property \"constructor\"", "[constructor='foo']", ["foo"] );
+       t( "Gecko Object.prototype property \"watch\"", "[watch='bar']", ["foo"] );
+
+       t( "Value attribute is retrieved correctly", "input[value=Test]", ["text1", "text2"] );
+});
+
+test("pseudo - (parent|empty)", function() {
+       expect( 3 );
+       t( "Empty", "ul:empty", ["firstUL"] );
+       t( "Empty with comment node", "ol:empty", ["empty"] );
+       t( "Is A Parent", "#qunit-fixture p:parent", ["firstp","ap","sndp","en","sap","first"] );
+});
+
+test("pseudo - (first|last|only)-(child|of-type)", function() {
+       expect( 12 );
+
+       t( "First Child", "p:first-child", ["firstp","sndp"] );
+       t( "First Child (leading id)", "#qunit-fixture p:first-child", ["firstp","sndp"] );
+       t( "First Child (leading class)", ".nothiddendiv div:first-child", ["nothiddendivchild"] );
+       t( "First Child (case-insensitive)", "#qunit-fixture p:FIRST-CHILD", ["firstp","sndp"] );
+
+       t( "Last Child", "p:last-child", ["sap"] );
+       t( "Last Child (leading id)", "#qunit-fixture a:last-child", ["simon1","anchor1","mark","yahoo","anchor2","simon","liveLink1","liveLink2"] );
+
+       t( "Only Child", "#qunit-fixture a:only-child", ["simon1","anchor1","yahoo","anchor2","liveLink1","liveLink2"] );
+
+       t( "First-of-type", "#qunit-fixture > p:first-of-type", ["firstp"] );
+       t( "Last-of-type", "#qunit-fixture > p:last-of-type", ["first"] );
+       t( "Only-of-type", "#qunit-fixture > :only-of-type", ["name+value", "firstUL", "empty", "floatTest", "iframe", "table"] );
+
+       // Verify that the child position isn't being cached improperly
+       var secondChildren = jQuery("p:nth-child(2)").before("<div></div>");
+
+       t( "No longer second child", "p:nth-child(2)", [] );
+       secondChildren.prev().remove();
+       t( "Restored second child", "p:nth-child(2)", ["ap","en"] );
+});
+
+test("pseudo - nth-child", function() {
+       expect( 30 );
+
+       t( "Nth-child", "p:nth-child(1)", ["firstp","sndp"] );
+       t( "Nth-child (with whitespace)", "p:nth-child( 1 )", ["firstp","sndp"] );
+       t( "Nth-child (case-insensitive)", "#form select:first option:NTH-child(3)", ["option1c"] );
+       t( "Not nth-child", "#qunit-fixture p:not(:nth-child(1))", ["ap","en","sap","first"] );
+
+       t( "Nth-child(2)", "#qunit-fixture form#form > *:nth-child(2)", ["text1"] );
+       t( "Nth-child(2)", "#qunit-fixture form#form > :nth-child(2)", ["text1"] );
+
+       t( "Nth-child(-1)", "#form select:first option:nth-child(-1)", [] );
+       t( "Nth-child(3)", "#form select:first option:nth-child(3)", ["option1c"] );
+       t( "Nth-child(0n+3)", "#form select:first option:nth-child(0n+3)", ["option1c"] );
+       t( "Nth-child(1n+0)", "#form select:first option:nth-child(1n+0)", ["option1a", "option1b", "option1c", "option1d"] );
+       t( "Nth-child(1n)", "#form select:first option:nth-child(1n)", ["option1a", "option1b", "option1c", "option1d"] );
+       t( "Nth-child(n)", "#form select:first option:nth-child(n)", ["option1a", "option1b", "option1c", "option1d"] );
+       t( "Nth-child(even)", "#form select:first option:nth-child(even)", ["option1b", "option1d"] );
+       t( "Nth-child(odd)", "#form select:first option:nth-child(odd)", ["option1a", "option1c"] );
+       t( "Nth-child(2n)", "#form select:first option:nth-child(2n)", ["option1b", "option1d"] );
+       t( "Nth-child(2n+1)", "#form select:first option:nth-child(2n+1)", ["option1a", "option1c"] );
+       t( "Nth-child(2n + 1)", "#form select:first option:nth-child(2n + 1)", ["option1a", "option1c"] );
+       t( "Nth-child(+2n + 1)", "#form select:first option:nth-child(+2n + 1)", ["option1a", "option1c"] );
+       t( "Nth-child(3n)", "#form select:first option:nth-child(3n)", ["option1c"] );
+       t( "Nth-child(3n+1)", "#form select:first option:nth-child(3n+1)", ["option1a", "option1d"] );
+       t( "Nth-child(3n+2)", "#form select:first option:nth-child(3n+2)", ["option1b"] );
+       t( "Nth-child(3n+3)", "#form select:first option:nth-child(3n+3)", ["option1c"] );
+       t( "Nth-child(3n-1)", "#form select:first option:nth-child(3n-1)", ["option1b"] );
+       t( "Nth-child(3n-2)", "#form select:first option:nth-child(3n-2)", ["option1a", "option1d"] );
+       t( "Nth-child(3n-3)", "#form select:first option:nth-child(3n-3)", ["option1c"] );
+       t( "Nth-child(3n+0)", "#form select:first option:nth-child(3n+0)", ["option1c"] );
+       t( "Nth-child(-1n+3)", "#form select:first option:nth-child(-1n+3)", ["option1a", "option1b", "option1c"] );
+       t( "Nth-child(-n+3)", "#form select:first option:nth-child(-n+3)", ["option1a", "option1b", "option1c"] );
+       t( "Nth-child(-1n + 3)", "#form select:first option:nth-child(-1n + 3)", ["option1a", "option1b", "option1c"] );
+
+       deepEqual( Sizzle( ":nth-child(n)", null, null, [ document.createElement("a") ].concat( q("ap") ) ), q("ap"), "Seeded nth-child" );
+});
+
+test("pseudo - nth-last-child", function() {
+       expect( 30 );
+
+       t( "Nth-last-child", "form:nth-last-child(5)", ["testForm"] );
+       t( "Nth-last-child (with whitespace)", "form:nth-last-child( 5 )", ["testForm"] );
+       t( "Nth-last-child (case-insensitive)", "#form select:first option:NTH-last-child(3)", ["option1b"] );
+       t( "Not nth-last-child", "#qunit-fixture p:not(:nth-last-child(1))", ["firstp", "ap", "sndp", "en", "first"] );
+
+       t( "Nth-last-child(-1)", "#form select:first option:nth-last-child(-1)", [] );
+       t( "Nth-last-child(3)", "#form select:first :nth-last-child(3)", ["option1b"] );
+       t( "Nth-last-child(3)", "#form select:first *:nth-last-child(3)", ["option1b"] );
+       t( "Nth-last-child(3)", "#form select:first option:nth-last-child(3)", ["option1b"] );
+       t( "Nth-last-child(0n+3)", "#form select:first option:nth-last-child(0n+3)", ["option1b"] );
+       t( "Nth-last-child(1n+0)", "#form select:first option:nth-last-child(1n+0)", ["option1a", "option1b", "option1c", "option1d"] );
+       t( "Nth-last-child(1n)", "#form select:first option:nth-last-child(1n)", ["option1a", "option1b", "option1c", "option1d"] );
+       t( "Nth-last-child(n)", "#form select:first option:nth-last-child(n)", ["option1a", "option1b", "option1c", "option1d"] );
+       t( "Nth-last-child(even)", "#form select:first option:nth-last-child(even)", ["option1a", "option1c"] );
+       t( "Nth-last-child(odd)", "#form select:first option:nth-last-child(odd)", ["option1b", "option1d"] );
+       t( "Nth-last-child(2n)", "#form select:first option:nth-last-child(2n)", ["option1a", "option1c"] );
+       t( "Nth-last-child(2n+1)", "#form select:first option:nth-last-child(2n+1)", ["option1b", "option1d"] );
+       t( "Nth-last-child(2n + 1)", "#form select:first option:nth-last-child(2n + 1)", ["option1b", "option1d"] );
+       t( "Nth-last-child(+2n + 1)", "#form select:first option:nth-last-child(+2n + 1)", ["option1b", "option1d"] );
+       t( "Nth-last-child(3n)", "#form select:first option:nth-last-child(3n)", ["option1b"] );
+       t( "Nth-last-child(3n+1)", "#form select:first option:nth-last-child(3n+1)", ["option1a", "option1d"] );
+       t( "Nth-last-child(3n+2)", "#form select:first option:nth-last-child(3n+2)", ["option1c"] );
+       t( "Nth-last-child(3n+3)", "#form select:first option:nth-last-child(3n+3)", ["option1b"] );
+       t( "Nth-last-child(3n-1)", "#form select:first option:nth-last-child(3n-1)", ["option1c"] );
+       t( "Nth-last-child(3n-2)", "#form select:first option:nth-last-child(3n-2)", ["option1a", "option1d"] );
+       t( "Nth-last-child(3n-3)", "#form select:first option:nth-last-child(3n-3)", ["option1b"] );
+       t( "Nth-last-child(3n+0)", "#form select:first option:nth-last-child(3n+0)", ["option1b"] );
+       t( "Nth-last-child(-1n+3)", "#form select:first option:nth-last-child(-1n+3)", ["option1b", "option1c", "option1d"] );
+       t( "Nth-last-child(-n+3)", "#form select:first option:nth-last-child(-n+3)", ["option1b", "option1c", "option1d"] );
+       t( "Nth-last-child(-1n + 3)", "#form select:first option:nth-last-child(-1n + 3)", ["option1b", "option1c", "option1d"] );
+
+       deepEqual( Sizzle( ":nth-last-child(n)", null, null, [ document.createElement("a") ].concat( q("ap") ) ), q("ap"), "Seeded nth-last-child" );
+});
+
+test("pseudo - nth-of-type", function() {
+       expect( 9 );
+       t( "Nth-of-type(-1)", ":nth-of-type(-1)", [] );
+       t( "Nth-of-type(3)", "#ap :nth-of-type(3)", ["mark"] );
+       t( "Nth-of-type(n)", "#ap :nth-of-type(n)", ["google", "groups", "code1", "anchor1", "mark"] );
+       t( "Nth-of-type(0n+3)", "#ap :nth-of-type(0n+3)", ["mark"] );
+       t( "Nth-of-type(2n)", "#ap :nth-of-type(2n)", ["groups"] );
+       t( "Nth-of-type(even)", "#ap :nth-of-type(even)", ["groups"] );
+       t( "Nth-of-type(2n+1)", "#ap :nth-of-type(2n+1)", ["google", "code1", "anchor1", "mark"] );
+       t( "Nth-of-type(odd)", "#ap :nth-of-type(odd)", ["google", "code1", "anchor1", "mark"] );
+       t( "Nth-of-type(-n+2)", "#qunit-fixture > :nth-of-type(-n+2)", ["firstp", "ap", "foo", "nothiddendiv", "name+value", "firstUL", "empty", "form", "floatTest", "iframe", "lengthtest", "table"] );
+});
+
+test("pseudo - nth-last-of-type", function() {
+       expect( 9 );
+       t( "Nth-last-of-type(-1)", ":nth-last-of-type(-1)", [] );
+       t( "Nth-last-of-type(3)", "#ap :nth-last-of-type(3)", ["google"] );
+       t( "Nth-last-of-type(n)", "#ap :nth-last-of-type(n)", ["google", "groups", "code1", "anchor1", "mark"] );
+       t( "Nth-last-of-type(0n+3)", "#ap :nth-last-of-type(0n+3)", ["google"] );
+       t( "Nth-last-of-type(2n)", "#ap :nth-last-of-type(2n)", ["groups"] );
+       t( "Nth-last-of-type(even)", "#ap :nth-last-of-type(even)", ["groups"] );
+       t( "Nth-last-of-type(2n+1)", "#ap :nth-last-of-type(2n+1)", ["google", "code1", "anchor1", "mark"] );
+       t( "Nth-last-of-type(odd)", "#ap :nth-last-of-type(odd)", ["google", "code1", "anchor1", "mark"] );
+       t( "Nth-last-of-type(-n+2)", "#qunit-fixture > :nth-last-of-type(-n+2)", ["ap", "name+value", "first", "firstUL", "empty", "floatTest", "iframe", "table", "name-tests", "testForm", "liveHandlerOrder", "siblingTest"] );
+});
+
+test("pseudo - has", function() {
+       expect( 3 );
+
+       t( "Basic test", "p:has(a)", ["firstp","ap","en","sap"] );
+       t( "Basic test (irrelevant whitespace)", "p:has( a )", ["firstp","ap","en","sap"] );
+       t( "Nested with overlapping candidates", "#qunit-fixture div:has(div:has(div:not([id])))", [ "moretests", "t2037" ] );
+});
+
+test("pseudo - misc", function() {
+       expect( 39 );
+
+       var select, tmp, input;
+
+       t( "Headers", ":header", ["qunit-header", "qunit-banner", "qunit-userAgent"] );
+       t( "Headers(case-insensitive)", ":Header", ["qunit-header", "qunit-banner", "qunit-userAgent"] );
+       t( "Multiple matches with the same context (cache check)", "#form select:has(option:first-child:contains('o'))", ["select1", "select2", "select3", "select4"] );
+
+       ok( Sizzle("#qunit-fixture :not(:has(:has(*)))").length, "All not grandparents" );
+
+       select = document.getElementById("select1");
+       ok( Sizzle.matchesSelector( select, ":has(option)" ), "Has Option Matches" );
+
+       ok( Sizzle("a:contains('')").length, "Empty string contains" );
+       t( "Text Contains", "a:contains(Google)", ["google","groups"] );
+       t( "Text Contains", "a:contains(Google Groups)", ["groups"] );
+
+       t( "Text Contains", "a:contains('Google Groups (Link)')", ["groups"] );
+       t( "Text Contains", "a:contains(\"(Link)\")", ["groups"] );
+       t( "Text Contains", "a:contains(Google Groups (Link))", ["groups"] );
+       t( "Text Contains", "a:contains((Link))", ["groups"] );
+
+
+       tmp = document.createElement("div");
+       tmp.id = "tmp_input";
+       document.body.appendChild( tmp );
+
+       jQuery.each( [ "button", "submit", "reset" ], function( i, type ) {
+               var els = jQuery(
+                       "<input id='input_%' type='%'/><button id='button_%' type='%'>test</button>"
+                       .replace( /%/g, type )
+               ).appendTo( tmp );
+
+               t( "Input Buttons :" + type, "#tmp_input :" + type, [ "input_" + type, "button_" + type ] );
+
+               ok( Sizzle.matchesSelector( els[0], ":" + type ), "Input Matches :" + type );
+               ok( Sizzle.matchesSelector( els[1], ":" + type ), "Button Matches :" + type );
+       });
+
+       document.body.removeChild( tmp );
+
+       // Recreate tmp
+       tmp = document.createElement("div");
+       tmp.id = "tmp_input";
+       tmp.innerHTML = "<span>Hello I am focusable.</span>";
+       // Setting tabIndex should make the element focusable
+       // http://dev.w3.org/html5/spec/single-page.html#focus-management
+       document.body.appendChild( tmp );
+       tmp.tabIndex = 0;
+       tmp.focus();
+       if ( document.activeElement !== tmp || (document.hasFocus && !document.hasFocus()) ||
+               (document.querySelectorAll && !document.querySelectorAll("div:focus").length) ) {
+               ok( true, "The div was not focused. Skip checking the :focus match." );
+               ok( true, "The div was not focused. Skip checking the :focus match." );
+       } else {
+               t( "tabIndex element focused", ":focus", [ "tmp_input" ] );
+               ok( Sizzle.matchesSelector( tmp, ":focus" ), ":focus matches tabIndex div" );
+       }
+
+       // Blur tmp
+       tmp.blur();
+       document.body.focus();
+       ok( !Sizzle.matchesSelector( tmp, ":focus" ), ":focus doesn't match tabIndex div" );
+       document.body.removeChild( tmp );
+
+       // Input focus/active
+       input = document.createElement("input");
+       input.type = "text";
+       input.id = "focus-input";
+
+       document.body.appendChild( input );
+       input.focus();
+
+       // Inputs can't be focused unless the document has focus
+       if ( document.activeElement !== input || (document.hasFocus && !document.hasFocus()) ||
+               (document.querySelectorAll && !document.querySelectorAll("input:focus").length) ) {
+               ok( true, "The input was not focused. Skip checking the :focus match." );
+               ok( true, "The input was not focused. Skip checking the :focus match." );
+       } else {
+               t( "Element focused", "input:focus", [ "focus-input" ] );
+               ok( Sizzle.matchesSelector( input, ":focus" ), ":focus matches" );
+       }
+
+       input.blur();
+
+       // When IE is out of focus, blur does not work. Force it here.
+       if ( document.activeElement === input ) {
+               document.body.focus();
+       }
+
+       ok( !Sizzle.matchesSelector( input, ":focus" ), ":focus doesn't match" );
+       document.body.removeChild( input );
+
+
+
+       deepEqual(
+               Sizzle( "[id='select1'] *:not(:last-child), [id='select2'] *:not(:last-child)", q("qunit-fixture")[0] ),
+               q( "option1a", "option1b", "option1c", "option2a", "option2b", "option2c" ),
+               "caching system tolerates recursive selection"
+       );
+
+       // Tokenization edge cases
+       t( "Sequential pseudos", "#qunit-fixture p:has(:contains(mark)):has(code)", ["ap"] );
+       t( "Sequential pseudos", "#qunit-fixture p:has(:contains(mark)):has(code):contains(This link)", ["ap"] );
+
+       t( "Pseudo argument containing ')'", "p:has(>a.GROUPS[src!=')'])", ["ap"] );
+       t( "Pseudo argument containing ')'", "p:has(>a.GROUPS[src!=')'])", ["ap"] );
+       t( "Pseudo followed by token containing ')'", "p:contains(id=\"foo\")[id!=\\)]", ["sndp"] );
+       t( "Pseudo followed by token containing ')'", "p:contains(id=\"foo\")[id!=')']", ["sndp"] );
+
+       t( "Multi-pseudo", "#ap:has(*), #ap:has(*)", ["ap"] );
+       t( "Multi-positional", "#ap:gt(0), #ap:lt(1)", ["ap"] );
+       t( "Multi-pseudo with leading nonexistent id", "#nonexistent:has(*), #ap:has(*)", ["ap"] );
+       t( "Multi-positional with leading nonexistent id", "#nonexistent:gt(0), #ap:lt(1)", ["ap"] );
+
+       t( "Tokenization stressor", "a[class*=blog]:not(:has(*, :contains(!)), :contains(!)), br:contains(]), p:contains(]), :not(:empty):not(:parent)", ["ap", "mark","yahoo","simon"] );
+});
+
+
+test("pseudo - :not", function() {
+       expect( 43 );
+
+       t( "Not", "a.blog:not(.link)", ["mark"] );
+       t( ":not() with :first", "#foo p:not(:first) .link", ["simon"] );
+
+       t( "Not - multiple", "#form option:not(:contains(Nothing),#option1b,:selected)", ["option1c", "option1d", "option2b", "option2c", "option3d", "option3e", "option4e", "option5b", "option5c"] );
+       t( "Not - recursive", "#form option:not(:not(:selected))[id^='option3']", [ "option3b", "option3c"] );
+
+       t( ":not() failing interior", "#qunit-fixture p:not(.foo)", ["firstp","ap","sndp","en","sap","first"] );
+       t( ":not() failing interior", "#qunit-fixture p:not(div.foo)", ["firstp","ap","sndp","en","sap","first"] );
+       t( ":not() failing interior", "#qunit-fixture p:not(p.foo)", ["firstp","ap","sndp","en","sap","first"] );
+       t( ":not() failing interior", "#qunit-fixture p:not(#blargh)", ["firstp","ap","sndp","en","sap","first"] );
+       t( ":not() failing interior", "#qunit-fixture p:not(div#blargh)", ["firstp","ap","sndp","en","sap","first"] );
+       t( ":not() failing interior", "#qunit-fixture p:not(p#blargh)", ["firstp","ap","sndp","en","sap","first"] );
+
+       t( ":not Multiple", "#qunit-fixture p:not(a)", ["firstp","ap","sndp","en","sap","first"] );
+       t( ":not Multiple", "#qunit-fixture p:not( a )", ["firstp","ap","sndp","en","sap","first"] );
+       t( ":not Multiple", "#qunit-fixture p:not( p )", [] );
+       t( ":not Multiple", "#qunit-fixture p:not(a, b)", ["firstp","ap","sndp","en","sap","first"] );
+       t( ":not Multiple", "#qunit-fixture p:not(a, b, div)", ["firstp","ap","sndp","en","sap","first"] );
+       t( ":not Multiple", "p:not(p)", [] );
+       t( ":not Multiple", "p:not(a,p)", [] );
+       t( ":not Multiple", "p:not(p,a)", [] );
+       t( ":not Multiple", "p:not(a,p,b)", [] );
+       t( ":not Multiple", ":input:not(:image,:input,:submit)", [] );
+       t( ":not Multiple", "#qunit-fixture p:not(:has(a), :nth-child(1))", ["first"] );
+
+       t( "No element not selector", ".container div:not(.excluded) div", [] );
+
+       t( ":not() Existing attribute", "#form select:not([multiple])", ["select1", "select2", "select5"]);
+       t( ":not() Equals attribute", "#form select:not([name=select1])", ["select2", "select3", "select4","select5"]);
+       t( ":not() Equals quoted attribute", "#form select:not([name='select1'])", ["select2", "select3", "select4", "select5"]);
+
+       t( ":not() Multiple Class", "#foo a:not(.blog)", ["yahoo", "anchor2"] );
+       t( ":not() Multiple Class", "#foo a:not(.link)", ["yahoo", "anchor2"] );
+       t( ":not() Multiple Class", "#foo a:not(.blog.link)", ["yahoo", "anchor2"] );
+
+       t( ":not chaining (compound)", "#qunit-fixture div[id]:not(:has(div, span)):not(:has(*))", ["nothiddendivchild", "divWithNoTabIndex"] );
+       t( ":not chaining (with attribute)", "#qunit-fixture form[id]:not([action$='formaction']):not(:button)", ["lengthtest", "name-tests", "testForm"] );
+       t( ":not chaining (colon in attribute)", "#qunit-fixture form[id]:not([action='form:action']):not(:button)", ["form", "lengthtest", "name-tests", "testForm"] );
+       t( ":not chaining (colon in attribute and nested chaining)", "#qunit-fixture form[id]:not([action='form:action']:button):not(:input)", ["form", "lengthtest", "name-tests", "testForm"] );
+       t( ":not chaining", "#form select:not(.select1):contains(Nothing) > option:not(option)", [] );
+
+       t( "positional :not()", "#foo p:not(:last)", ["sndp", "en"] );
+       t( "positional :not() prefix", "#foo p:not(:last) a", ["yahoo"] );
+       t( "compound positional :not()", "#foo p:not(:first, :last)", ["en"] );
+       t( "compound positional :not()", "#foo p:not(:first, :even)", ["en"] );
+       t( "compound positional :not()", "#foo p:not(:first, :odd)", ["sap"] );
+       t( "reordered compound positional :not()", "#foo p:not(:odd, :first)", ["sap"] );
+
+       t( "positional :not() with pre-filter", "#foo p:not([id]:first)", ["en", "sap"] );
+       t( "positional :not() with post-filter", "#foo p:not(:first[id])", ["en", "sap"] );
+       t( "positional :not() with pre-filter", "#foo p:not([lang]:first)", ["sndp", "sap"] );
+       t( "positional :not() with post-filter", "#foo p:not(:first[lang])", ["sndp", "en", "sap"] );
+});
+
+test("pseudo - position", function() {
+       expect( 33 );
+
+       t( "First element", "div:first", ["qunit"] );
+       t( "First element(case-insensitive)", "div:fiRst", ["qunit"] );
+       t( "nth Element", "#qunit-fixture p:nth(1)", ["ap"] );
+       t( "First Element", "#qunit-fixture p:first", ["firstp"] );
+       t( "Last Element", "p:last", ["first"] );
+       t( "Even Elements", "#qunit-fixture p:even", ["firstp","sndp","sap"] );
+       t( "Odd Elements", "#qunit-fixture p:odd", ["ap","en","first"] );
+       t( "Position Equals", "#qunit-fixture p:eq(1)", ["ap"] );
+       t( "Position Equals (negative)", "#qunit-fixture p:eq(-1)", ["first"] );
+       t( "Position Greater Than", "#qunit-fixture p:gt(0)", ["ap","sndp","en","sap","first"] );
+       t( "Position Less Than", "#qunit-fixture p:lt(3)", ["firstp","ap","sndp"] );
+
+       t( "Check position filtering", "div#nothiddendiv:eq(0)", ["nothiddendiv"] );
+       t( "Check position filtering", "div#nothiddendiv:last", ["nothiddendiv"] );
+       t( "Check position filtering", "div#nothiddendiv:not(:gt(0))", ["nothiddendiv"] );
+       t( "Check position filtering", "#foo > :not(:first)", ["en", "sap"] );
+       t( "Check position filtering", "#qunit-fixture select > :not(:gt(2))", ["option1a", "option1b", "option1c"] );
+       t( "Check position filtering", "#qunit-fixture select:lt(2) :not(:first)", ["option1b", "option1c", "option1d", "option2a", "option2b", "option2c", "option2d"] );
+       t( "Check position filtering", "div.nothiddendiv:eq(0)", ["nothiddendiv"] );
+       t( "Check position filtering", "div.nothiddendiv:last", ["nothiddendiv"] );
+       t( "Check position filtering", "div.nothiddendiv:not(:lt(0))", ["nothiddendiv"] );
+
+       t( "Check element position", "#qunit-fixture div div:eq(0)", ["nothiddendivchild"] );
+       t( "Check element position", "#select1 option:eq(3)", ["option1d"] );
+       t( "Check element position", "#qunit-fixture div div:eq(10)", ["names-group"] );
+       t( "Check element position", "#qunit-fixture div div:first", ["nothiddendivchild"] );
+       t( "Check element position", "#qunit-fixture div > div:first", ["nothiddendivchild"] );
+       t( "Check element position", "#dl div:first div:first", ["foo"] );
+       t( "Check element position", "#dl div:first > div:first", ["foo"] );
+       t( "Check element position", "div#nothiddendiv:first > div:first", ["nothiddendivchild"] );
+       t( "Chained pseudo after a pos pseudo", "#listWithTabIndex li:eq(0):contains(Rice)", ["foodWithNegativeTabIndex"] );
+
+       t( "Check sort order with POS and comma", "#qunit-fixture em>em>em>em:first-child,div>em:first", ["siblingfirst", "siblinggreatgrandchild"] );
+
+       t( "Isolated position", ":last", ["last"] );
+
+       deepEqual( Sizzle( "*:lt(2) + *", null, [], Sizzle("#qunit-fixture > p") ), q("ap"), "Seeded pos with trailing relative" );
+
+       // jQuery #12526
+       var context = jQuery("#qunit-fixture").append("<div id='jquery12526'></div>")[0];
+       deepEqual( Sizzle( ":last", context ), q("jquery12526"), "Post-manipulation positional" );
+});
+
+test("pseudo - form", function() {
+       expect( 10 );
+
+       var extraTexts = jQuery("<input id=\"impliedText\"/><input id=\"capitalText\" type=\"TEXT\">").appendTo("#form");
+
+       t( "Form element :input", "#form :input", ["text1", "text2", "radio1", "radio2", "check1", "check2", "hidden1", "hidden2", "name", "search", "button", "area1", "select1", "select2", "select3", "select4", "select5", "impliedText", "capitalText"] );
+       t( "Form element :radio", "#form :radio", ["radio1", "radio2"] );
+       t( "Form element :checkbox", "#form :checkbox", ["check1", "check2"] );
+       t( "Form element :text", "#form :text", ["text1", "text2", "hidden2", "name", "impliedText", "capitalText"] );
+       t( "Form element :radio:checked", "#form :radio:checked", ["radio2"] );
+       t( "Form element :checkbox:checked", "#form :checkbox:checked", ["check1"] );
+       t( "Form element :radio:checked, :checkbox:checked", "#form :radio:checked, #form :checkbox:checked", ["radio2", "check1"] );
+
+       t( "Selected Option Element", "#form option:selected", ["option1a","option2d","option3b","option3c","option4b","option4c","option4d","option5a"] );
+       t( "Selected Option Element are also :checked", "#form option:checked", ["option1a","option2d","option3b","option3c","option4b","option4c","option4d","option5a"] );
+       t( "Hidden inputs should be treated as enabled. See QSA test.", "#hidden1:enabled", ["hidden1"] );
+
+       extraTexts.remove();
+});
+
+test("pseudo - :target and :root", function() {
+       expect( 2 );
+
+       // Target
+       var oldHash,
+       $link = jQuery("<a/>").attr({
+               href: "#",
+               id: "new-link"
+       }).appendTo("#qunit-fixture");
+
+       oldHash = window.location.hash;
+       window.location.hash = "new-link";
+
+       t( ":target", ":target", ["new-link"] );
+
+       $link.remove();
+       window.location.hash = oldHash;
+
+       // Root
+       equal( Sizzle(":root")[0], document.documentElement, ":root selector" );
+});
+
+test("pseudo - :lang", function() {
+       expect( 105 );
+
+       var docElem = document.documentElement,
+               docXmlLang = docElem.getAttribute("xml:lang"),
+               docLang = docElem.lang,
+               foo = document.getElementById("foo"),
+               anchor = document.getElementById("anchor2"),
+               xml = createWithFriesXML(),
+               testLang = function( text, elem, container, lang, extra ) {
+                       var message,
+                               full = lang + "-" + extra;
+
+                       message = "lang=" + lang + " " + text;
+                       container.setAttribute( container.ownerDocument.documentElement.nodeName === "HTML" ? "lang" : "xml:lang", lang );
+                       assertMatch( message, elem, ":lang(" + lang + ")" );
+                       assertMatch( message, elem, ":lang(" + mixCase(lang) + ")" );
+                       assertNoMatch( message, elem, ":lang(" + full + ")" );
+                       assertNoMatch( message, elem, ":lang(" + mixCase(full) + ")" );
+                       assertNoMatch( message, elem, ":lang(" + lang + "-)" );
+                       assertNoMatch( message, elem, ":lang(" + full + "-)" );
+                       assertNoMatch( message, elem, ":lang(" + lang + "glish)" );
+                       assertNoMatch( message, elem, ":lang(" + full + "glish)" );
+
+                       message = "lang=" + full + " " + text;
+                       container.setAttribute( container.ownerDocument.documentElement.nodeName === "HTML" ? "lang" : "xml:lang", full );
+                       assertMatch( message, elem, ":lang(" + lang + ")" );
+                       assertMatch( message, elem, ":lang(" + mixCase(lang) + ")" );
+                       assertMatch( message, elem, ":lang(" + full + ")" );
+                       assertMatch( message, elem, ":lang(" + mixCase(full) + ")" );
+                       assertNoMatch( message, elem, ":lang(" + lang + "-)" );
+                       assertNoMatch( message, elem, ":lang(" + full + "-)" );
+                       assertNoMatch( message, elem, ":lang(" + lang + "glish)" );
+                       assertNoMatch( message, elem, ":lang(" + full + "glish)" );
+               },
+               mixCase = function( str ) {
+                       var ret = str.split(""),
+                               i = ret.length;
+                       while ( i-- ) {
+                               if ( i & 1 ) {
+                                       ret[i] = ret[i].toUpperCase();
+                               }
+                       }
+                       return ret.join("");
+               },
+               assertMatch = function( text, elem, selector ) {
+                       ok( Sizzle.matchesSelector( elem, selector ), text + " match " + selector );
+               },
+               assertNoMatch = function( text, elem, selector ) {
+                       ok( !Sizzle.matchesSelector( elem, selector ), text + " fail " + selector );
+               };
+
+       // Prefixing and inheritance
+       ok( Sizzle.matchesSelector( docElem, ":lang(" + docElem.lang + ")" ), "starting :lang" );
+       testLang( "document", anchor, docElem, "en", "us" );
+       testLang( "grandparent", anchor, anchor.parentNode.parentNode, "yue", "hk" );
+       ok( !Sizzle.matchesSelector( anchor, ":lang(en), :lang(en-us)" ),
+               ":lang does not look above an ancestor with specified lang" );
+       testLang( "self", anchor, anchor, "es", "419" );
+       ok( !Sizzle.matchesSelector( anchor, ":lang(en), :lang(en-us), :lang(yue), :lang(yue-hk)" ),
+               ":lang does not look above self with specified lang" );
+
+       // Searching by language tag
+       anchor.parentNode.parentNode.lang = "arab";
+       anchor.parentNode.lang = anchor.parentNode.id = "ara-sa";
+       anchor.lang = "ara";
+       deepEqual( Sizzle( ":lang(ara)", foo ), [ anchor.parentNode, anchor ], "Find by :lang" );
+
+       // Selector validity
+       anchor.parentNode.lang = "ara";
+       anchor.lang = "ara\\b";
+       deepEqual( Sizzle( ":lang(ara\\b)", foo ), [], ":lang respects backslashes" );
+       deepEqual( Sizzle( ":lang(ara\\\\b)", foo ), [ anchor ], ":lang respects escaped backslashes" );
+       throws(function() {
+               Sizzle.call( null, "dl:lang(c++)" );
+       }, function( e ) {
+               return e.message.indexOf("Syntax error") >= 0;
+       }, ":lang value must be a valid identifier" );
+
+       // XML
+       foo = jQuery( "response", xml )[0];
+       anchor = jQuery( "#seite1", xml )[0];
+       testLang( "XML document", anchor, xml.documentElement, "en", "us" );
+       testLang( "XML grandparent", anchor, foo, "yue", "hk" );
+       ok( !Sizzle.matchesSelector( anchor, ":lang(en), :lang(en-us)" ),
+               "XML :lang does not look above an ancestor with specified lang" );
+       testLang( "XML self", anchor, anchor, "es", "419" );
+       ok( !Sizzle.matchesSelector( anchor, ":lang(en), :lang(en-us), :lang(yue), :lang(yue-hk)" ),
+               "XML :lang does not look above self with specified lang" );
+
+       // Cleanup
+       if ( docXmlLang == null ) {
+               docElem.removeAttribute("xml:lang");
+       } else {
+               docElem.setAttribute( "xml:lang", docXmlLang );
+       }
+       docElem.lang = docLang;
+});
+
+test("caching", function() {
+       expect( 2 );
+       Sizzle( ":not(code)", document.getElementById("ap") );
+       deepEqual( Sizzle( ":not(code)", document.getElementById("foo") ), q("sndp", "en", "yahoo", "sap", "anchor2", "simon"), "Reusing selector with new context" );
+
+       t( "Deep ancestry caching in post-positional element matcher (jQuery #14657)",
+               "#qunit-fixture a:lt(3):parent",
+               [ "simon1", "google", "groups" ] );
+});
+
+asyncTest( "Iframe dispatch should not affect Sizzle, see jQuery #13936", 1, function() {
+       var loaded = false,
+               thrown = false,
+               iframe = document.getElementById("iframe"),
+               iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
+
+       jQuery( iframe ).on( "load", function() {
+               var form;
+
+               try {
+                       iframeDoc = this.contentDocument || this.contentWindow.document;
+                       form = Sizzle( "#navigate", iframeDoc )[ 0 ];
+               } catch ( e ) {
+                       thrown = e;
+               }
+
+               if ( loaded ) {
+                       strictEqual( thrown, false, "No error thrown from post-reload Sizzle call" );
+                       start();
+               } else {
+                       loaded = true;
+                       form.submit();
+               }
+       });
+
+       iframeDoc.open();
+       iframeDoc.write("<body><form id='navigate'></form></body>");
+       iframeDoc.close();
+});
+
+test("matchesSelector", function() {
+       expect( 6 );
+
+       var el = document.getElementById("simon1"),
+               disconnected = document.createElement("div");
+
+       ok( Sizzle.matchesSelector( el, "[rel='bookmark']" ), "quoted attribute" );
+       ok( Sizzle.matchesSelector( el, "[rel=bookmark]" ), "unquoted attribute" );
+       ok( Sizzle.matchesSelector( el, "[\nrel = bookmark\t]" ), "unquoted attribute with non-semantic whitespace" );
+
+       ok( Sizzle.matchesSelector( disconnected, "div" ), "disconnected element" );
+
+       ok( Sizzle.matchesSelector( el, "* > *" ), "child combinator (matching)" );
+       ok( !Sizzle.matchesSelector( disconnected, "* > *" ), "child combinator (not matching)" );
+});
+
+test("select() with pre-compiled function", function() {
+       expect( 6 );
+
+       jQuery.each([ "#qunit-fixture #first", "ol#listWithTabIndex > li[tabindex]", "#liveSpan1" ],
+       function( i, selector ) {
+               var compiled = Sizzle.compile( selector );
+               equal( Sizzle.select( compiled, document ).length, 1, "Should match using a compiled selector function" );
+               equal( Sizzle.select( compiled, Sizzle( "#first")[0] ).length, 0, "Should not match with different context" );
+       });
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/unit/utilities.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/sizzle/test/unit/utilities.js
new file mode 100644 (file)
index 0000000..d51888d
--- /dev/null
@@ -0,0 +1,169 @@
+module("utilities", { teardown: moduleTeardown });
+
+function testAttr( doc ) {
+       expect( 9 );
+
+       var el;
+       if ( doc ) {
+               // XML
+               el = doc.createElement( "input" );
+               el.setAttribute( "type", "checkbox" );
+       } else {
+               // Set checked on creation by creating with a fragment
+               // See http://jsfiddle.net/8sVgA/1/show/light in oldIE
+               el = jQuery( "<input type='checkbox' checked='checked' />" )[0];
+       }
+
+       // Set it again for good measure
+       el.setAttribute( "checked", "checked" );
+       el.setAttribute( "id", "id" );
+       el.setAttribute( "value", "on" );
+
+       strictEqual( Sizzle.attr( el, "nonexistent" ), null, "nonexistent" );
+       strictEqual( Sizzle.attr( el, "id" ), "id", "existent" );
+       strictEqual( Sizzle.attr( el, "value" ), "on", "value" );
+       strictEqual( Sizzle.attr( el, "checked" ), "checked", "boolean" );
+       strictEqual( Sizzle.attr( el, "href" ), null, "interpolation risk" );
+       strictEqual( Sizzle.attr( el, "constructor" ), null,
+               "Object.prototype property \"constructor\" (negative)" );
+       strictEqual( Sizzle.attr( el, "watch" ), null,
+               "Gecko Object.prototype property \"watch\" (negative)" );
+       el.setAttribute( "constructor", "foo" );
+       el.setAttribute( "watch", "bar" );
+       strictEqual( Sizzle.attr( el, "constructor" ), "foo",
+               "Object.prototype property \"constructor\"" );
+       strictEqual( Sizzle.attr( el, "watch" ), "bar",
+               "Gecko Object.prototype property \"watch\"" );
+}
+
+test("Sizzle.attr (HTML)", function() {
+       testAttr();
+});
+
+test("Sizzle.attr (XML)", function() {
+       testAttr( jQuery.parseXML("<root/>") );
+});
+
+test("Sizzle.contains", function() {
+       expect( 16 );
+
+       var container = document.getElementById("nonnodes"),
+               element = container.firstChild,
+               text = element.nextSibling,
+               nonContained = container.nextSibling,
+               detached = document.createElement("a");
+       ok( element && element.nodeType === 1, "preliminary: found element" );
+       ok( text && text.nodeType === 3, "preliminary: found text" );
+       ok( nonContained, "preliminary: found non-descendant" );
+       ok( Sizzle.contains(container, element), "child" );
+       ok( Sizzle.contains(container.parentNode, element), "grandchild" );
+       ok( Sizzle.contains(container, text), "text child" );
+       ok( Sizzle.contains(container.parentNode, text), "text grandchild" );
+       ok( !Sizzle.contains(container, container), "self" );
+       ok( !Sizzle.contains(element, container), "parent" );
+       ok( !Sizzle.contains(container, nonContained), "non-descendant" );
+       ok( !Sizzle.contains(container, document), "document" );
+       ok( !Sizzle.contains(container, document.documentElement), "documentElement (negative)" );
+       ok( !Sizzle.contains(container, null), "Passing null does not throw an error" );
+       ok( Sizzle.contains(document, document.documentElement), "documentElement (positive)" );
+       ok( Sizzle.contains(document, element), "document container (positive)" );
+       ok( !Sizzle.contains(document, detached), "document container (negative)" );
+});
+
+if ( jQuery("<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='1' width='1'><g/></svg>")[0].firstChild ) {
+       test("Sizzle.contains in SVG (jQuery #10832)", function() {
+               expect( 4 );
+
+               var svg = jQuery(
+                       "<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='1' width='1'>" +
+                               "<g><circle cx='1' cy='1' r='1' /></g>" +
+                       "</svg>"
+               ).appendTo("#qunit-fixture")[0];
+
+               ok( Sizzle.contains( svg, svg.firstChild ), "root child" );
+               ok( Sizzle.contains( svg.firstChild, svg.firstChild.firstChild ), "element child" );
+               ok( Sizzle.contains( svg, svg.firstChild.firstChild ), "root granchild" );
+               ok( !Sizzle.contains( svg.firstChild.firstChild, svg.firstChild ), "parent (negative)" );
+       });
+}
+
+test("Sizzle.uniqueSort", function() {
+       expect( 14 );
+
+       function Arrayish( arr ) {
+               var i = this.length = arr.length;
+               while ( i-- ) {
+                       this[ i ] = arr[ i ];
+               }
+       }
+       Arrayish.prototype = {
+               slice: [].slice,
+               sort: [].sort,
+               splice: [].splice
+       };
+
+       var i, tests,
+               detached = [],
+               body = document.body,
+               fixture = document.getElementById("qunit-fixture"),
+               detached1 = document.createElement("p"),
+               detached2 = document.createElement("ul"),
+               detachedChild = detached1.appendChild( document.createElement("a") ),
+               detachedGrandchild = detachedChild.appendChild( document.createElement("b") );
+
+       for ( i = 0; i < 12; i++ ) {
+               detached.push( document.createElement("li") );
+               detached[i].id = "detached" + i;
+               detached2.appendChild( document.createElement("li") ).id = "detachedChild" + i;
+       }
+
+       tests = {
+               "Empty": {
+                       input: [],
+                       expected: []
+               },
+               "Single-element": {
+                       input: [ fixture ],
+                       expected: [ fixture ]
+               },
+               "No duplicates": {
+                       input: [ fixture, body ],
+                       expected: [ body, fixture ]
+               },
+               "Duplicates": {
+                       input: [ body, fixture, fixture, body ],
+                       expected: [ body, fixture ]
+               },
+               "Detached": {
+                       input: detached.slice( 0 ),
+                       expected: detached.slice( 0 )
+               },
+               "Detached children": {
+                       input: [
+                               detached2.childNodes[0],
+                               detached2.childNodes[1],
+                               detached2.childNodes[2],
+                               detached2.childNodes[3]
+                       ],
+                       expected: [
+                               detached2.childNodes[0],
+                               detached2.childNodes[1],
+                               detached2.childNodes[2],
+                               detached2.childNodes[3]
+                       ]
+               },
+               "Attached/detached mixture": {
+                       input: [ detached1, fixture, detached2, document, detachedChild, body, detachedGrandchild ],
+                       expected: [ document, body, fixture ],
+                       length: 3
+               }
+       };
+
+       jQuery.each( tests, function( label, test ) {
+               var length = test.length || test.input.length;
+               deepEqual( Sizzle.uniqueSort( test.input ).slice( 0, length ), test.expected, label + " (array)" );
+               deepEqual( Sizzle.uniqueSort( new Arrayish(test.input) ).slice( 0, length ), test.expected, label + " (quasi-array)" );
+       });
+});
+
+testIframeWithCallback( "Sizzle.uniqueSort works cross-window (jQuery #14381)", "mixed_sort.html", deepEqual );
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/traversing.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/traversing.js
new file mode 100644 (file)
index 0000000..d9ff0ae
--- /dev/null
@@ -0,0 +1,199 @@
+define([
+       "./core",
+       "./var/indexOf",
+       "./traversing/var/rneedsContext",
+       "./core/init",
+       "./traversing/findFilter",
+       "./selector"
+], function( jQuery, indexOf, rneedsContext ) {
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+       // Methods guaranteed to produce a unique set when starting from a unique set
+       guaranteedUnique = {
+               children: true,
+               contents: true,
+               next: true,
+               prev: true
+       };
+
+jQuery.extend({
+       dir: function( elem, dir, until ) {
+               var matched = [],
+                       truncate = until !== undefined;
+
+               while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
+                       if ( elem.nodeType === 1 ) {
+                               if ( truncate && jQuery( elem ).is( until ) ) {
+                                       break;
+                               }
+                               matched.push( elem );
+                       }
+               }
+               return matched;
+       },
+
+       sibling: function( n, elem ) {
+               var matched = [];
+
+               for ( ; n; n = n.nextSibling ) {
+                       if ( n.nodeType === 1 && n !== elem ) {
+                               matched.push( n );
+                       }
+               }
+
+               return matched;
+       }
+});
+
+jQuery.fn.extend({
+       has: function( target ) {
+               var targets = jQuery( target, this ),
+                       l = targets.length;
+
+               return this.filter(function() {
+                       var i = 0;
+                       for ( ; i < l; i++ ) {
+                               if ( jQuery.contains( this, targets[i] ) ) {
+                                       return true;
+                               }
+                       }
+               });
+       },
+
+       closest: function( selectors, context ) {
+               var cur,
+                       i = 0,
+                       l = this.length,
+                       matched = [],
+                       pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+                               jQuery( selectors, context || this.context ) :
+                               0;
+
+               for ( ; i < l; i++ ) {
+                       for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+                               // Always skip document fragments
+                               if ( cur.nodeType < 11 && (pos ?
+                                       pos.index(cur) > -1 :
+
+                                       // Don't pass non-elements to Sizzle
+                                       cur.nodeType === 1 &&
+                                               jQuery.find.matchesSelector(cur, selectors)) ) {
+
+                                       matched.push( cur );
+                                       break;
+                               }
+                       }
+               }
+
+               return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
+       },
+
+       // Determine the position of an element within the set
+       index: function( elem ) {
+
+               // No argument, return index in parent
+               if ( !elem ) {
+                       return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+               }
+
+               // Index in selector
+               if ( typeof elem === "string" ) {
+                       return indexOf.call( jQuery( elem ), this[ 0 ] );
+               }
+
+               // Locate the position of the desired element
+               return indexOf.call( this,
+
+                       // If it receives a jQuery object, the first element is used
+                       elem.jquery ? elem[ 0 ] : elem
+               );
+       },
+
+       add: function( selector, context ) {
+               return this.pushStack(
+                       jQuery.unique(
+                               jQuery.merge( this.get(), jQuery( selector, context ) )
+                       )
+               );
+       },
+
+       addBack: function( selector ) {
+               return this.add( selector == null ?
+                       this.prevObject : this.prevObject.filter(selector)
+               );
+       }
+});
+
+function sibling( cur, dir ) {
+       while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
+       return cur;
+}
+
+jQuery.each({
+       parent: function( elem ) {
+               var parent = elem.parentNode;
+               return parent && parent.nodeType !== 11 ? parent : null;
+       },
+       parents: function( elem ) {
+               return jQuery.dir( elem, "parentNode" );
+       },
+       parentsUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "parentNode", until );
+       },
+       next: function( elem ) {
+               return sibling( elem, "nextSibling" );
+       },
+       prev: function( elem ) {
+               return sibling( elem, "previousSibling" );
+       },
+       nextAll: function( elem ) {
+               return jQuery.dir( elem, "nextSibling" );
+       },
+       prevAll: function( elem ) {
+               return jQuery.dir( elem, "previousSibling" );
+       },
+       nextUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "nextSibling", until );
+       },
+       prevUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "previousSibling", until );
+       },
+       siblings: function( elem ) {
+               return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+       },
+       children: function( elem ) {
+               return jQuery.sibling( elem.firstChild );
+       },
+       contents: function( elem ) {
+               return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+       }
+}, function( name, fn ) {
+       jQuery.fn[ name ] = function( until, selector ) {
+               var matched = jQuery.map( this, fn, until );
+
+               if ( name.slice( -5 ) !== "Until" ) {
+                       selector = until;
+               }
+
+               if ( selector && typeof selector === "string" ) {
+                       matched = jQuery.filter( selector, matched );
+               }
+
+               if ( this.length > 1 ) {
+                       // Remove duplicates
+                       if ( !guaranteedUnique[ name ] ) {
+                               jQuery.unique( matched );
+                       }
+
+                       // Reverse order for parents* and prev-derivatives
+                       if ( rparentsprev.test( name ) ) {
+                               matched.reverse();
+                       }
+               }
+
+               return this.pushStack( matched );
+       };
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/traversing/findFilter.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/traversing/findFilter.js
new file mode 100644 (file)
index 0000000..dd70a73
--- /dev/null
@@ -0,0 +1,100 @@
+define([
+       "../core",
+       "../var/indexOf",
+       "./var/rneedsContext",
+       "../selector"
+], function( jQuery, indexOf, rneedsContext ) {
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+       if ( jQuery.isFunction( qualifier ) ) {
+               return jQuery.grep( elements, function( elem, i ) {
+                       /* jshint -W018 */
+                       return !!qualifier.call( elem, i, elem ) !== not;
+               });
+
+       }
+
+       if ( qualifier.nodeType ) {
+               return jQuery.grep( elements, function( elem ) {
+                       return ( elem === qualifier ) !== not;
+               });
+
+       }
+
+       if ( typeof qualifier === "string" ) {
+               if ( risSimple.test( qualifier ) ) {
+                       return jQuery.filter( qualifier, elements, not );
+               }
+
+               qualifier = jQuery.filter( qualifier, elements );
+       }
+
+       return jQuery.grep( elements, function( elem ) {
+               return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
+       });
+}
+
+jQuery.filter = function( expr, elems, not ) {
+       var elem = elems[ 0 ];
+
+       if ( not ) {
+               expr = ":not(" + expr + ")";
+       }
+
+       return elems.length === 1 && elem.nodeType === 1 ?
+               jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+               jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+                       return elem.nodeType === 1;
+               }));
+};
+
+jQuery.fn.extend({
+       find: function( selector ) {
+               var i,
+                       len = this.length,
+                       ret = [],
+                       self = this;
+
+               if ( typeof selector !== "string" ) {
+                       return this.pushStack( jQuery( selector ).filter(function() {
+                               for ( i = 0; i < len; i++ ) {
+                                       if ( jQuery.contains( self[ i ], this ) ) {
+                                               return true;
+                                       }
+                               }
+                       }) );
+               }
+
+               for ( i = 0; i < len; i++ ) {
+                       jQuery.find( selector, self[ i ], ret );
+               }
+
+               // Needed because $( selector, context ) becomes $( context ).find( selector )
+               ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+               ret.selector = this.selector ? this.selector + " " + selector : selector;
+               return ret;
+       },
+       filter: function( selector ) {
+               return this.pushStack( winnow(this, selector || [], false) );
+       },
+       not: function( selector ) {
+               return this.pushStack( winnow(this, selector || [], true) );
+       },
+       is: function( selector ) {
+               return !!winnow(
+                       this,
+
+                       // If this is a positional/relative selector, check membership in the returned set
+                       // so $("p:first").is("p:last") won't return true for a doc with two "p".
+                       typeof selector === "string" && rneedsContext.test( selector ) ?
+                               jQuery( selector ) :
+                               selector || [],
+                       false
+               ).length;
+       }
+});
+
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/traversing/var/rneedsContext.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/traversing/var/rneedsContext.js
new file mode 100644 (file)
index 0000000..3d6ae40
--- /dev/null
@@ -0,0 +1,6 @@
+define([
+       "../../core",
+       "../../selector"
+], function( jQuery ) {
+       return jQuery.expr.match.needsContext;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/arr.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/arr.js
new file mode 100644 (file)
index 0000000..b18fc9c
--- /dev/null
@@ -0,0 +1,3 @@
+define(function() {
+       return [];
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/class2type.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/class2type.js
new file mode 100644 (file)
index 0000000..e674c3b
--- /dev/null
@@ -0,0 +1,4 @@
+define(function() {
+       // [[Class]] -> type pairs
+       return {};
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/concat.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/concat.js
new file mode 100644 (file)
index 0000000..7dcf77e
--- /dev/null
@@ -0,0 +1,5 @@
+define([
+       "./arr"
+], function( arr ) {
+       return arr.concat;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/hasOwn.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/hasOwn.js
new file mode 100644 (file)
index 0000000..32c002a
--- /dev/null
@@ -0,0 +1,5 @@
+define([
+       "./class2type"
+], function( class2type ) {
+       return class2type.hasOwnProperty;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/indexOf.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/indexOf.js
new file mode 100644 (file)
index 0000000..cdbe3c7
--- /dev/null
@@ -0,0 +1,5 @@
+define([
+       "./arr"
+], function( arr ) {
+       return arr.indexOf;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/pnum.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/pnum.js
new file mode 100644 (file)
index 0000000..4070447
--- /dev/null
@@ -0,0 +1,3 @@
+define(function() {
+       return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/push.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/push.js
new file mode 100644 (file)
index 0000000..ad6f0a1
--- /dev/null
@@ -0,0 +1,5 @@
+define([
+       "./arr"
+], function( arr ) {
+       return arr.push;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/rnotwhite.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/rnotwhite.js
new file mode 100644 (file)
index 0000000..7c69bec
--- /dev/null
@@ -0,0 +1,3 @@
+define(function() {
+       return (/\S+/g);
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/slice.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/slice.js
new file mode 100644 (file)
index 0000000..614d46c
--- /dev/null
@@ -0,0 +1,5 @@
+define([
+       "./arr"
+], function( arr ) {
+       return arr.slice;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/strundefined.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/strundefined.js
new file mode 100644 (file)
index 0000000..04e16b0
--- /dev/null
@@ -0,0 +1,3 @@
+define(function() {
+       return typeof undefined;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/support.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/support.js
new file mode 100644 (file)
index 0000000..b25dbc7
--- /dev/null
@@ -0,0 +1,4 @@
+define(function() {
+       // All support tests are defined in their respective modules.
+       return {};
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/toString.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/var/toString.js
new file mode 100644 (file)
index 0000000..ca92d22
--- /dev/null
@@ -0,0 +1,5 @@
+define([
+       "./class2type"
+], function( class2type ) {
+       return class2type.toString;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/wrap.js b/atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/wrap.js
new file mode 100644 (file)
index 0000000..4958251
--- /dev/null
@@ -0,0 +1,79 @@
+define([
+       "./core",
+       "./core/init",
+       "./manipulation", // clone
+       "./traversing" // parent, contents
+], function( jQuery ) {
+
+jQuery.fn.extend({
+       wrapAll: function( html ) {
+               var wrap;
+
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function( i ) {
+                               jQuery( this ).wrapAll( html.call(this, i) );
+                       });
+               }
+
+               if ( this[ 0 ] ) {
+
+                       // The elements to wrap the target around
+                       wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+                       if ( this[ 0 ].parentNode ) {
+                               wrap.insertBefore( this[ 0 ] );
+                       }
+
+                       wrap.map(function() {
+                               var elem = this;
+
+                               while ( elem.firstElementChild ) {
+                                       elem = elem.firstElementChild;
+                               }
+
+                               return elem;
+                       }).append( this );
+               }
+
+               return this;
+       },
+
+       wrapInner: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function( i ) {
+                               jQuery( this ).wrapInner( html.call(this, i) );
+                       });
+               }
+
+               return this.each(function() {
+                       var self = jQuery( this ),
+                               contents = self.contents();
+
+                       if ( contents.length ) {
+                               contents.wrapAll( html );
+
+                       } else {
+                               self.append( html );
+                       }
+               });
+       },
+
+       wrap: function( html ) {
+               var isFunction = jQuery.isFunction( html );
+
+               return this.each(function( i ) {
+                       jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+               });
+       },
+
+       unwrap: function() {
+               return this.parent().each(function() {
+                       if ( !jQuery.nodeName( this, "body" ) ) {
+                               jQuery( this ).replaceWith( this.childNodes );
+                       }
+               }).end();
+       }
+});
+
+return jQuery;
+});
diff --git a/atom/packages/ex-mode/node_modules/space-pen/package.json b/atom/packages/ex-mode/node_modules/space-pen/package.json
new file mode 100644 (file)
index 0000000..e2c70fb
--- /dev/null
@@ -0,0 +1,73 @@
+{
+  "name": "space-pen",
+  "version": "5.1.1",
+  "description": "Write markup on the final frontier",
+  "main": "./lib/space-pen.js",
+  "scripts": {
+    "prepublish": "grunt prepublish",
+    "test": "grunt test",
+    "start": "grunt start"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/space-pen/raw/master/LICENSE"
+    }
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/space-pen.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/space-pen/issues"
+  },
+  "devDependencies": {
+    "express": "~3.4.0",
+    "coffee-script": "~1.6.3",
+    "grunt-contrib-coffee": "~0.7.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-coffeelint": "0.0.6",
+    "browserify": "~2.34.1",
+    "jasmine-focused": "~0.15.0",
+    "grunt-shell": "~0.5.0",
+    "coffeeify": "~0.5.1",
+    "grunt-contrib-connect": "~0.5.0",
+    "grunt-atomdoc": "^1.0.0"
+  },
+  "dependencies": {
+    "grim": "^1.0.0",
+    "jquery": "^2.1.3",
+    "underscore-plus": "1.x"
+  },
+  "gitHead": "c5694286b4faaf07eb1a7fbd03e6ebb8c34fc554",
+  "homepage": "https://github.com/atom/space-pen",
+  "_id": "space-pen@5.1.1",
+  "_shasum": "f7cc61ed3e371718aa05d54608ca7784deb7bc89",
+  "_from": "space-pen@>=5.1.1 <6.0.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "f7cc61ed3e371718aa05d54608ca7784deb7bc89",
+    "tarball": "http://registry.npmjs.org/space-pen/-/space-pen-5.1.1.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/space-pen/-/space-pen-5.1.1.tgz"
+}
diff --git a/atom/packages/ex-mode/node_modules/underscore-plus/LICENSE.md b/atom/packages/ex-mode/node_modules/underscore-plus/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/ex-mode/node_modules/underscore-plus/README.md b/atom/packages/ex-mode/node_modules/underscore-plus/README.md
new file mode 100644 (file)
index 0000000..dd7b4c0
--- /dev/null
@@ -0,0 +1,14 @@
+# underscore-plus [![Build Status](https://travis-ci.org/atom/underscore-plus.svg?branch=master)](https://travis-ci.org/atom/underscore-plus)
+
+Takes the great [underscore](http://underscorejs.org/) library and adds a few
+more things.
+
+## Using
+
+```sh
+npm install underscore-plus
+```
+
+```coffeescript
+_ = require 'underscore-plus' # Has all underscore methods and more
+```
diff --git a/atom/packages/ex-mode/node_modules/underscore-plus/lib/underscore-plus.js b/atom/packages/ex-mode/node_modules/underscore-plus/lib/underscore-plus.js
new file mode 100644 (file)
index 0000000..32eb482
--- /dev/null
@@ -0,0 +1,522 @@
+(function() {
+  var isEqual, isPlainObject, macModifierKeyMap, nonMacModifierKeyMap, plus, shiftKeyMap, splitKeyPath, _,
+    __slice = [].slice;
+
+  _ = require('underscore');
+
+  macModifierKeyMap = {
+    cmd: '\u2318',
+    ctrl: '\u2303',
+    alt: '\u2325',
+    option: '\u2325',
+    shift: '\u21e7',
+    enter: '\u23ce',
+    left: '\u2190',
+    right: '\u2192',
+    up: '\u2191',
+    down: '\u2193'
+  };
+
+  nonMacModifierKeyMap = {
+    cmd: 'Cmd',
+    ctrl: 'Ctrl',
+    alt: 'Alt',
+    option: 'Alt',
+    shift: 'Shift',
+    enter: 'Enter',
+    left: 'Left',
+    right: 'Right',
+    up: 'Up',
+    down: 'Down'
+  };
+
+  shiftKeyMap = {
+    '~': '`',
+    '_': '-',
+    '+': '=',
+    '|': '\\',
+    '{': '[',
+    '}': ']',
+    ':': ';',
+    '"': '\'',
+    '<': ',',
+    '>': '.',
+    '?': '/'
+  };
+
+  splitKeyPath = function(keyPath) {
+    var char, i, keyPathArray, startIndex, _i, _len;
+    startIndex = 0;
+    keyPathArray = [];
+    if (keyPath == null) {
+      return keyPathArray;
+    }
+    for (i = _i = 0, _len = keyPath.length; _i < _len; i = ++_i) {
+      char = keyPath[i];
+      if (char === '.' && (i === 0 || keyPath[i - 1] !== '\\')) {
+        keyPathArray.push(keyPath.substring(startIndex, i));
+        startIndex = i + 1;
+      }
+    }
+    keyPathArray.push(keyPath.substr(startIndex, keyPath.length));
+    return keyPathArray;
+  };
+
+  isPlainObject = function(value) {
+    return _.isObject(value) && !_.isArray(value);
+  };
+
+  plus = {
+    adviseBefore: function(object, methodName, advice) {
+      var original;
+      original = object[methodName];
+      return object[methodName] = function() {
+        var args;
+        args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+        if (advice.apply(this, args) !== false) {
+          return original.apply(this, args);
+        }
+      };
+    },
+    camelize: function(string) {
+      if (string) {
+        return string.replace(/[_-]+(\w)/g, function(m) {
+          return m[1].toUpperCase();
+        });
+      } else {
+        return '';
+      }
+    },
+    capitalize: function(word) {
+      if (!word) {
+        return '';
+      }
+      if (word.toLowerCase() === 'github') {
+        return 'GitHub';
+      } else {
+        return word[0].toUpperCase() + word.slice(1);
+      }
+    },
+    compactObject: function(object) {
+      var key, newObject, value;
+      newObject = {};
+      for (key in object) {
+        value = object[key];
+        if (value != null) {
+          newObject[key] = value;
+        }
+      }
+      return newObject;
+    },
+    dasherize: function(string) {
+      if (!string) {
+        return '';
+      }
+      string = string[0].toLowerCase() + string.slice(1);
+      return string.replace(/([A-Z])|(_)/g, function(m, letter) {
+        if (letter) {
+          return "-" + letter.toLowerCase();
+        } else {
+          return "-";
+        }
+      });
+    },
+    deepClone: function(object) {
+      if (_.isArray(object)) {
+        return object.map(function(value) {
+          return plus.deepClone(value);
+        });
+      } else if (_.isObject(object) && !_.isFunction(object)) {
+        return plus.mapObject(object, (function(_this) {
+          return function(key, value) {
+            return [key, plus.deepClone(value)];
+          };
+        })(this));
+      } else {
+        return object;
+      }
+    },
+    deepExtend: function(target) {
+      var i, key, object, result, _i, _len, _ref;
+      result = target;
+      i = 0;
+      while (++i < arguments.length) {
+        object = arguments[i];
+        if (isPlainObject(result) && isPlainObject(object)) {
+          _ref = Object.keys(object);
+          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+            key = _ref[_i];
+            result[key] = plus.deepExtend(result[key], object[key]);
+          }
+        } else {
+          result = plus.deepClone(object);
+        }
+      }
+      return result;
+    },
+    deepContains: function(array, target) {
+      var object, _i, _len;
+      if (array == null) {
+        return false;
+      }
+      for (_i = 0, _len = array.length; _i < _len; _i++) {
+        object = array[_i];
+        if (_.isEqual(object, target)) {
+          return true;
+        }
+      }
+      return false;
+    },
+    endsWith: function(string, suffix) {
+      if (suffix == null) {
+        suffix = '';
+      }
+      if (string) {
+        return string.indexOf(suffix, string.length - suffix.length) !== -1;
+      } else {
+        return false;
+      }
+    },
+    escapeAttribute: function(string) {
+      if (string) {
+        return string.replace(/"/g, '&quot;').replace(/\n/g, '').replace(/\\/g, '-');
+      } else {
+        return '';
+      }
+    },
+    escapeRegExp: function(string) {
+      if (string) {
+        return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+      } else {
+        return '';
+      }
+    },
+    humanizeEventName: function(eventName, eventDoc) {
+      var event, namespace, namespaceDoc, _ref;
+      _ref = eventName.split(':'), namespace = _ref[0], event = _ref[1];
+      if (event == null) {
+        return plus.undasherize(namespace);
+      }
+      namespaceDoc = plus.undasherize(namespace);
+      if (eventDoc == null) {
+        eventDoc = plus.undasherize(event);
+      }
+      return "" + namespaceDoc + ": " + eventDoc;
+    },
+    humanizeKey: function(key, platform) {
+      var modifierKeyMap;
+      if (platform == null) {
+        platform = process.platform;
+      }
+      if (!key) {
+        return key;
+      }
+      modifierKeyMap = platform === 'darwin' ? macModifierKeyMap : nonMacModifierKeyMap;
+      if (modifierKeyMap[key]) {
+        return modifierKeyMap[key];
+      } else if (key.length === 1 && (shiftKeyMap[key] != null)) {
+        return [modifierKeyMap.shift, shiftKeyMap[key]];
+      } else if (key.length === 1 && key === key.toUpperCase() && key.toUpperCase() !== key.toLowerCase()) {
+        return [modifierKeyMap.shift, key.toUpperCase()];
+      } else if (key.length === 1 || /f[0-9]{1,2}/.test(key)) {
+        return key.toUpperCase();
+      } else {
+        if (platform === 'darwin') {
+          return key;
+        } else {
+          return plus.capitalize(key);
+        }
+      }
+    },
+    humanizeKeystroke: function(keystroke, platform) {
+      var humanizedKeystrokes, index, key, keys, keystrokes, splitKeystroke, _i, _j, _len, _len1;
+      if (platform == null) {
+        platform = process.platform;
+      }
+      if (!keystroke) {
+        return keystroke;
+      }
+      keystrokes = keystroke.split(' ');
+      humanizedKeystrokes = [];
+      for (_i = 0, _len = keystrokes.length; _i < _len; _i++) {
+        keystroke = keystrokes[_i];
+        keys = [];
+        splitKeystroke = keystroke.split('-');
+        for (index = _j = 0, _len1 = splitKeystroke.length; _j < _len1; index = ++_j) {
+          key = splitKeystroke[index];
+          if (key === '' && splitKeystroke[index - 1] === '') {
+            key = '-';
+          }
+          if (key) {
+            keys.push(plus.humanizeKey(key, platform));
+          }
+        }
+        keys = _.uniq(_.flatten(keys));
+        if (platform === 'darwin') {
+          keys = keys.join('');
+        } else {
+          keys = keys.join('+');
+        }
+        humanizedKeystrokes.push(keys);
+      }
+      return humanizedKeystrokes.join(' ');
+    },
+    isSubset: function(potentialSubset, potentialSuperset) {
+      return _.every(potentialSubset, function(element) {
+        return _.include(potentialSuperset, element);
+      });
+    },
+    losslessInvert: function(hash) {
+      var inverted, key, value;
+      inverted = {};
+      for (key in hash) {
+        value = hash[key];
+        if (inverted[value] == null) {
+          inverted[value] = [];
+        }
+        inverted[value].push(key);
+      }
+      return inverted;
+    },
+    mapObject: function(object, iterator) {
+      var key, newObject, value, _i, _len, _ref, _ref1;
+      newObject = {};
+      _ref = Object.keys(object);
+      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+        key = _ref[_i];
+        _ref1 = iterator(key, object[key]), key = _ref1[0], value = _ref1[1];
+        newObject[key] = value;
+      }
+      return newObject;
+    },
+    multiplyString: function(string, n) {
+      var finalString, i;
+      finalString = "";
+      i = 0;
+      while (i < n) {
+        finalString += string;
+        i++;
+      }
+      return finalString;
+    },
+    pluralize: function(count, singular, plural) {
+      if (count == null) {
+        count = 0;
+      }
+      if (plural == null) {
+        plural = singular + 's';
+      }
+      if (count === 1) {
+        return "" + count + " " + singular;
+      } else {
+        return "" + count + " " + plural;
+      }
+    },
+    remove: function(array, element) {
+      var index;
+      index = array.indexOf(element);
+      if (index >= 0) {
+        array.splice(index, 1);
+      }
+      return array;
+    },
+    setValueForKeyPath: function(object, keyPath, value) {
+      var key, keys;
+      keys = splitKeyPath(keyPath);
+      while (keys.length > 1) {
+        key = keys.shift();
+        if (object[key] == null) {
+          object[key] = {};
+        }
+        object = object[key];
+      }
+      if (value != null) {
+        return object[keys.shift()] = value;
+      } else {
+        return delete object[keys.shift()];
+      }
+    },
+    hasKeyPath: function(object, keyPath) {
+      var key, keys, _i, _len;
+      keys = splitKeyPath(keyPath);
+      for (_i = 0, _len = keys.length; _i < _len; _i++) {
+        key = keys[_i];
+        if (!object.hasOwnProperty(key)) {
+          return false;
+        }
+        object = object[key];
+      }
+      return true;
+    },
+    spliceWithArray: function(originalArray, start, length, insertedArray, chunkSize) {
+      var chunkStart, _i, _ref, _results;
+      if (chunkSize == null) {
+        chunkSize = 100000;
+      }
+      if (insertedArray.length < chunkSize) {
+        return originalArray.splice.apply(originalArray, [start, length].concat(__slice.call(insertedArray)));
+      } else {
+        originalArray.splice(start, length);
+        _results = [];
+        for (chunkStart = _i = 0, _ref = insertedArray.length; chunkSize > 0 ? _i <= _ref : _i >= _ref; chunkStart = _i += chunkSize) {
+          _results.push(originalArray.splice.apply(originalArray, [start + chunkStart, 0].concat(__slice.call(insertedArray.slice(chunkStart, chunkStart + chunkSize)))));
+        }
+        return _results;
+      }
+    },
+    sum: function(array) {
+      var elt, sum, _i, _len;
+      sum = 0;
+      for (_i = 0, _len = array.length; _i < _len; _i++) {
+        elt = array[_i];
+        sum += elt;
+      }
+      return sum;
+    },
+    uncamelcase: function(string) {
+      var result;
+      if (!string) {
+        return '';
+      }
+      result = string.replace(/([A-Z])|_+/g, function(match, letter) {
+        if (letter == null) {
+          letter = '';
+        }
+        return " " + letter;
+      });
+      return plus.capitalize(result.trim());
+    },
+    undasherize: function(string) {
+      if (string) {
+        return string.split('-').map(plus.capitalize).join(' ');
+      } else {
+        return '';
+      }
+    },
+    underscore: function(string) {
+      if (!string) {
+        return '';
+      }
+      string = string[0].toLowerCase() + string.slice(1);
+      return string.replace(/([A-Z])|-+/g, function(match, letter) {
+        if (letter == null) {
+          letter = '';
+        }
+        return "_" + (letter.toLowerCase());
+      });
+    },
+    valueForKeyPath: function(object, keyPath) {
+      var key, keys, _i, _len;
+      keys = splitKeyPath(keyPath);
+      for (_i = 0, _len = keys.length; _i < _len; _i++) {
+        key = keys[_i];
+        object = object[key];
+        if (object == null) {
+          return;
+        }
+      }
+      return object;
+    },
+    isEqual: function(a, b, aStack, bStack) {
+      if (_.isArray(aStack) && _.isArray(bStack)) {
+        return isEqual(a, b, aStack, bStack);
+      } else {
+        return isEqual(a, b);
+      }
+    },
+    isEqualForProperties: function() {
+      var a, b, properties, property, _i, _len;
+      a = arguments[0], b = arguments[1], properties = 3 <= arguments.length ? __slice.call(arguments, 2) : [];
+      for (_i = 0, _len = properties.length; _i < _len; _i++) {
+        property = properties[_i];
+        if (!_.isEqual(a[property], b[property])) {
+          return false;
+        }
+      }
+      return true;
+    }
+  };
+
+  isEqual = function(a, b, aStack, bStack) {
+    var aCtor, aCtorValid, aElement, aKeyCount, aValue, bCtor, bCtorValid, bKeyCount, bValue, equal, i, key, stackIndex, _i, _len;
+    if (aStack == null) {
+      aStack = [];
+    }
+    if (bStack == null) {
+      bStack = [];
+    }
+    if (a === b) {
+      return _.isEqual(a, b);
+    }
+    if (_.isFunction(a) || _.isFunction(b)) {
+      return _.isEqual(a, b);
+    }
+    stackIndex = aStack.length;
+    while (stackIndex--) {
+      if (aStack[stackIndex] === a) {
+        return bStack[stackIndex] === b;
+      }
+    }
+    aStack.push(a);
+    bStack.push(b);
+    equal = false;
+    if (_.isFunction(a != null ? a.isEqual : void 0)) {
+      equal = a.isEqual(b, aStack, bStack);
+    } else if (_.isFunction(b != null ? b.isEqual : void 0)) {
+      equal = b.isEqual(a, bStack, aStack);
+    } else if (_.isArray(a) && _.isArray(b) && a.length === b.length) {
+      equal = true;
+      for (i = _i = 0, _len = a.length; _i < _len; i = ++_i) {
+        aElement = a[i];
+        if (!isEqual(aElement, b[i], aStack, bStack)) {
+          equal = false;
+          break;
+        }
+      }
+    } else if (_.isRegExp(a) && _.isRegExp(b)) {
+      equal = _.isEqual(a, b);
+    } else if (_.isElement(a) && _.isElement(b)) {
+      equal = a === b;
+    } else if (_.isObject(a) && _.isObject(b)) {
+      aCtor = a.constructor;
+      bCtor = b.constructor;
+      aCtorValid = _.isFunction(aCtor) && aCtor instanceof aCtor;
+      bCtorValid = _.isFunction(bCtor) && bCtor instanceof bCtor;
+      if (aCtor !== bCtor && !(aCtorValid && bCtorValid)) {
+        equal = false;
+      } else {
+        aKeyCount = 0;
+        equal = true;
+        for (key in a) {
+          aValue = a[key];
+          if (!_.has(a, key)) {
+            continue;
+          }
+          aKeyCount++;
+          if (!(_.has(b, key) && isEqual(aValue, b[key], aStack, bStack))) {
+            equal = false;
+            break;
+          }
+        }
+        if (equal) {
+          bKeyCount = 0;
+          for (key in b) {
+            bValue = b[key];
+            if (_.has(b, key)) {
+              bKeyCount++;
+            }
+          }
+          equal = aKeyCount === bKeyCount;
+        }
+      }
+    } else {
+      equal = _.isEqual(a, b);
+    }
+    aStack.pop();
+    bStack.pop();
+    return equal;
+  };
+
+  module.exports = _.extend({}, _, plus);
+
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/LICENSE b/atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/LICENSE
new file mode 100644 (file)
index 0000000..0d6b873
--- /dev/null
@@ -0,0 +1,23 @@
+Copyright (c) 2009-2014 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/atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/README.md b/atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/README.md
new file mode 100644 (file)
index 0000000..c2ba259
--- /dev/null
@@ -0,0 +1,22 @@
+                       __
+                      /\ \                                                         __
+     __  __    ___    \_\ \     __   _ __   ____    ___    ___   _ __    __       /\_\    ____
+    /\ \/\ \ /' _ `\  /'_  \  /'__`\/\  __\/ ,__\  / ___\ / __`\/\  __\/'__`\     \/\ \  /',__\
+    \ \ \_\ \/\ \/\ \/\ \ \ \/\  __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\  __/  __  \ \ \/\__, `\
+     \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/
+      \/___/  \/_/\/_/\/__,_ /\/____/ \/_/ \/___/  \/____/\/___/  \/_/ \/____/\/_//\ \_\ \/___/
+                                                                                  \ \____/
+                                                                                   \/___/
+
+Underscore.js is a utility-belt library for JavaScript that provides
+support for the usual functional suspects (each, map, reduce, filter...)
+without extending any core JavaScript objects.
+
+For Docs, License, Tests, and pre-packed downloads, see:
+http://underscorejs.org
+
+Underscore is an open-sourced component of DocumentCloud:
+https://github.com/documentcloud
+
+Many thanks to our contributors:
+https://github.com/jashkenas/underscore/contributors
diff --git a/atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/package.json b/atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/package.json
new file mode 100644 (file)
index 0000000..505b2f4
--- /dev/null
@@ -0,0 +1,67 @@
+{
+  "name": "underscore",
+  "description": "JavaScript's functional programming helper library.",
+  "homepage": "http://underscorejs.org",
+  "keywords": [
+    "util",
+    "functional",
+    "server",
+    "client",
+    "browser"
+  ],
+  "author": {
+    "name": "Jeremy Ashkenas",
+    "email": "jeremy@documentcloud.org"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/jashkenas/underscore.git"
+  },
+  "main": "underscore.js",
+  "version": "1.6.0",
+  "devDependencies": {
+    "docco": "0.6.x",
+    "phantomjs": "1.9.0-1",
+    "uglify-js": "2.4.x"
+  },
+  "scripts": {
+    "test": "phantomjs test/vendor/runner.js test/index.html?noglobals=true",
+    "build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js",
+    "doc": "docco underscore.js"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "https://raw.github.com/jashkenas/underscore/master/LICENSE"
+    }
+  ],
+  "files": [
+    "underscore.js",
+    "underscore-min.js",
+    "LICENSE"
+  ],
+  "bugs": {
+    "url": "https://github.com/jashkenas/underscore/issues"
+  },
+  "_id": "underscore@1.6.0",
+  "dist": {
+    "shasum": "8b38b10cacdef63337b8b24e4ff86d45aea529a8",
+    "tarball": "http://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz"
+  },
+  "_from": "underscore@>=1.6.0 <1.7.0",
+  "_npmVersion": "1.3.21",
+  "_npmUser": {
+    "name": "jashkenas",
+    "email": "jashkenas@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "jashkenas",
+      "email": "jashkenas@gmail.com"
+    }
+  ],
+  "directories": {},
+  "_shasum": "8b38b10cacdef63337b8b24e4ff86d45aea529a8",
+  "_resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/underscore-min.js b/atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/underscore-min.js
new file mode 100644 (file)
index 0000000..3434d6c
--- /dev/null
@@ -0,0 +1,6 @@
+//     Underscore.js 1.6.0
+//     http://underscorejs.org
+//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,w=Object.keys,_=i.bind,j=function(n){return n instanceof j?n:this instanceof j?void(this._wrapped=n):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.6.0";var A=j.each=j.forEach=function(n,t,e){if(null==n)return n;if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return;return n};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var O="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},j.find=j.detect=function(n,t,r){var e;return k(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var k=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:k(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,j.property(t))},j.where=function(n,t){return j.filter(n,j.matches(t))},j.findWhere=function(n,t){return j.find(n,j.matches(t))},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);var e=-1/0,u=-1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;o>u&&(e=n,u=o)}),e},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);var e=1/0,u=1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;u>o&&(e=n,u=o)}),e},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e},j.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=j.values(n)),n[j.random(n.length-1)]):j.shuffle(n).slice(0,Math.max(0,t))};var E=function(n){return null==n?j.identity:j.isFunction(n)?n:j.property(n)};j.sortBy=function(n,t,r){return t=E(t),j.pluck(j.map(n,function(n,e,u){return{value:n,index:e,criteria:t.call(r,n,e,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=E(r),A(t,function(i,a){var o=r.call(e,i,a,t);n(u,o,i)}),u}};j.groupBy=F(function(n,t,r){j.has(n,t)?n[t].push(r):n[t]=[r]}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=E(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])<u?i=o+1:a=o}return i},j.toArray=function(n){return n?j.isArray(n)?o.call(n):n.length===+n.length?j.map(n,j.identity):j.values(n):[]},j.size=function(n){return null==n?0:n.length===+n.length?n.length:j.keys(n).length},j.first=j.head=j.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:0>t?[]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var M=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):M(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return M(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.partition=function(n,t){var r=[],e=[];return A(n,function(n){(t(n)?r:e).push(n)}),[r,e]},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.contains(t,n)})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===j&&(e[u]=arguments[r++]);for(;r<arguments.length;)e.push(arguments[r++]);return n.apply(this,e)}},j.bindAll=function(n){var t=o.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return A(t,function(t){n[t]=j.bind(n[t],n)}),n},j.memoize=function(n,t){var r={};return t||(t=j.identity),function(){var e=t.apply(this,arguments);return j.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},j.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},j.defer=function(n){return j.delay.apply(j,[n,1].concat(o.call(arguments,1)))},j.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var c=function(){o=r.leading===!1?0:j.now(),a=null,i=n.apply(e,u),e=u=null};return function(){var l=j.now();o||r.leading!==!1||(o=l);var f=t-(l-o);return e=this,u=arguments,0>=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u),e=u=null):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o,c=function(){var l=j.now()-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u),i=u=null))};return function(){i=this,u=arguments,a=j.now();var l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u),i=u=null),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return j.partial(t,n)},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=function(n){if(!j.isObject(n))return[];if(w)return w(n);var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o)&&"constructor"in n&&"constructor"in t)return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.constant=function(n){return function(){return n}},j.property=function(n){return function(t){return t[n]}},j.matches=function(n){return function(t){if(t===n)return!0;for(var r in n)if(n[r]!==t[r])return!1;return!0}},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},j.now=Date.now||function(){return(new Date).getTime()};var T={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"}};T.unescape=j.invert(T.escape);var I={escape:new RegExp("["+j.keys(T.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(T.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(I[n],function(t){return T[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","  ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),"function"==typeof define&&define.amd&&define("underscore",[],function(){return j})}).call(this);
+//# sourceMappingURL=underscore-min.map
\ No newline at end of file
diff --git a/atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/underscore.js b/atom/packages/ex-mode/node_modules/underscore-plus/node_modules/underscore/underscore.js
new file mode 100644 (file)
index 0000000..9a4cabe
--- /dev/null
@@ -0,0 +1,1343 @@
+//     Underscore.js 1.6.0
+//     http://underscorejs.org
+//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+
+(function() {
+
+  // Baseline setup
+  // --------------
+
+  // Establish the root object, `window` in the browser, or `exports` on the server.
+  var root = this;
+
+  // Save the previous value of the `_` variable.
+  var previousUnderscore = root._;
+
+  // Establish the object that gets returned to break out of a loop iteration.
+  var breaker = {};
+
+  // Save bytes in the minified (but not gzipped) version:
+  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+  // Create quick reference variables for speed access to core prototypes.
+  var
+    push             = ArrayProto.push,
+    slice            = ArrayProto.slice,
+    concat           = ArrayProto.concat,
+    toString         = ObjProto.toString,
+    hasOwnProperty   = ObjProto.hasOwnProperty;
+
+  // All **ECMAScript 5** native function implementations that we hope to use
+  // are declared here.
+  var
+    nativeForEach      = ArrayProto.forEach,
+    nativeMap          = ArrayProto.map,
+    nativeReduce       = ArrayProto.reduce,
+    nativeReduceRight  = ArrayProto.reduceRight,
+    nativeFilter       = ArrayProto.filter,
+    nativeEvery        = ArrayProto.every,
+    nativeSome         = ArrayProto.some,
+    nativeIndexOf      = ArrayProto.indexOf,
+    nativeLastIndexOf  = ArrayProto.lastIndexOf,
+    nativeIsArray      = Array.isArray,
+    nativeKeys         = Object.keys,
+    nativeBind         = FuncProto.bind;
+
+  // Create a safe reference to the Underscore object for use below.
+  var _ = function(obj) {
+    if (obj instanceof _) return obj;
+    if (!(this instanceof _)) return new _(obj);
+    this._wrapped = obj;
+  };
+
+  // Export the Underscore object for **Node.js**, with
+  // backwards-compatibility for the old `require()` API. If we're in
+  // the browser, add `_` as a global object via a string identifier,
+  // for Closure Compiler "advanced" mode.
+  if (typeof exports !== 'undefined') {
+    if (typeof module !== 'undefined' && module.exports) {
+      exports = module.exports = _;
+    }
+    exports._ = _;
+  } else {
+    root._ = _;
+  }
+
+  // Current version.
+  _.VERSION = '1.6.0';
+
+  // Collection Functions
+  // --------------------
+
+  // The cornerstone, an `each` implementation, aka `forEach`.
+  // Handles objects with the built-in `forEach`, arrays, and raw objects.
+  // Delegates to **ECMAScript 5**'s native `forEach` if available.
+  var each = _.each = _.forEach = function(obj, iterator, context) {
+    if (obj == null) return obj;
+    if (nativeForEach && obj.forEach === nativeForEach) {
+      obj.forEach(iterator, context);
+    } else if (obj.length === +obj.length) {
+      for (var i = 0, length = obj.length; i < length; i++) {
+        if (iterator.call(context, obj[i], i, obj) === breaker) return;
+      }
+    } else {
+      var keys = _.keys(obj);
+      for (var i = 0, length = keys.length; i < length; i++) {
+        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
+      }
+    }
+    return obj;
+  };
+
+  // Return the results of applying the iterator to each element.
+  // Delegates to **ECMAScript 5**'s native `map` if available.
+  _.map = _.collect = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+    each(obj, function(value, index, list) {
+      results.push(iterator.call(context, value, index, list));
+    });
+    return results;
+  };
+
+  var reduceError = 'Reduce of empty array with no initial value';
+
+  // **Reduce** builds up a single result from a list of values, aka `inject`,
+  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduce && obj.reduce === nativeReduce) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+    }
+    each(obj, function(value, index, list) {
+      if (!initial) {
+        memo = value;
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, value, index, list);
+      }
+    });
+    if (!initial) throw new TypeError(reduceError);
+    return memo;
+  };
+
+  // The right-associative version of reduce, also known as `foldr`.
+  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+    }
+    var length = obj.length;
+    if (length !== +length) {
+      var keys = _.keys(obj);
+      length = keys.length;
+    }
+    each(obj, function(value, index, list) {
+      index = keys ? keys[--length] : --length;
+      if (!initial) {
+        memo = obj[index];
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, obj[index], index, list);
+      }
+    });
+    if (!initial) throw new TypeError(reduceError);
+    return memo;
+  };
+
+  // Return the first value which passes a truth test. Aliased as `detect`.
+  _.find = _.detect = function(obj, predicate, context) {
+    var result;
+    any(obj, function(value, index, list) {
+      if (predicate.call(context, value, index, list)) {
+        result = value;
+        return true;
+      }
+    });
+    return result;
+  };
+
+  // Return all the elements that pass a truth test.
+  // Delegates to **ECMAScript 5**'s native `filter` if available.
+  // Aliased as `select`.
+  _.filter = _.select = function(obj, predicate, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
+    each(obj, function(value, index, list) {
+      if (predicate.call(context, value, index, list)) results.push(value);
+    });
+    return results;
+  };
+
+  // Return all the elements for which a truth test fails.
+  _.reject = function(obj, predicate, context) {
+    return _.filter(obj, function(value, index, list) {
+      return !predicate.call(context, value, index, list);
+    }, context);
+  };
+
+  // Determine whether all of the elements match a truth test.
+  // Delegates to **ECMAScript 5**'s native `every` if available.
+  // Aliased as `all`.
+  _.every = _.all = function(obj, predicate, context) {
+    predicate || (predicate = _.identity);
+    var result = true;
+    if (obj == null) return result;
+    if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context);
+    each(obj, function(value, index, list) {
+      if (!(result = result && predicate.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if at least one element in the object matches a truth test.
+  // Delegates to **ECMAScript 5**'s native `some` if available.
+  // Aliased as `any`.
+  var any = _.some = _.any = function(obj, predicate, context) {
+    predicate || (predicate = _.identity);
+    var result = false;
+    if (obj == null) return result;
+    if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
+    each(obj, function(value, index, list) {
+      if (result || (result = predicate.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if the array or object contains a given value (using `===`).
+  // Aliased as `include`.
+  _.contains = _.include = function(obj, target) {
+    if (obj == null) return false;
+    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+    return any(obj, function(value) {
+      return value === target;
+    });
+  };
+
+  // Invoke a method (with arguments) on every item in a collection.
+  _.invoke = function(obj, method) {
+    var args = slice.call(arguments, 2);
+    var isFunc = _.isFunction(method);
+    return _.map(obj, function(value) {
+      return (isFunc ? method : value[method]).apply(value, args);
+    });
+  };
+
+  // Convenience version of a common use case of `map`: fetching a property.
+  _.pluck = function(obj, key) {
+    return _.map(obj, _.property(key));
+  };
+
+  // Convenience version of a common use case of `filter`: selecting only objects
+  // containing specific `key:value` pairs.
+  _.where = function(obj, attrs) {
+    return _.filter(obj, _.matches(attrs));
+  };
+
+  // Convenience version of a common use case of `find`: getting the first object
+  // containing specific `key:value` pairs.
+  _.findWhere = function(obj, attrs) {
+    return _.find(obj, _.matches(attrs));
+  };
+
+  // Return the maximum element or (element-based computation).
+  // Can't optimize arrays of integers longer than 65,535 elements.
+  // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)
+  _.max = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+      return Math.max.apply(Math, obj);
+    }
+    var result = -Infinity, lastComputed = -Infinity;
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      if (computed > lastComputed) {
+        result = value;
+        lastComputed = computed;
+      }
+    });
+    return result;
+  };
+
+  // Return the minimum element (or element-based computation).
+  _.min = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+      return Math.min.apply(Math, obj);
+    }
+    var result = Infinity, lastComputed = Infinity;
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      if (computed < lastComputed) {
+        result = value;
+        lastComputed = computed;
+      }
+    });
+    return result;
+  };
+
+  // Shuffle an array, using the modern version of the
+  // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
+  _.shuffle = function(obj) {
+    var rand;
+    var index = 0;
+    var shuffled = [];
+    each(obj, function(value) {
+      rand = _.random(index++);
+      shuffled[index - 1] = shuffled[rand];
+      shuffled[rand] = value;
+    });
+    return shuffled;
+  };
+
+  // Sample **n** random values from a collection.
+  // If **n** is not specified, returns a single random element.
+  // The internal `guard` argument allows it to work with `map`.
+  _.sample = function(obj, n, guard) {
+    if (n == null || guard) {
+      if (obj.length !== +obj.length) obj = _.values(obj);
+      return obj[_.random(obj.length - 1)];
+    }
+    return _.shuffle(obj).slice(0, Math.max(0, n));
+  };
+
+  // An internal function to generate lookup iterators.
+  var lookupIterator = function(value) {
+    if (value == null) return _.identity;
+    if (_.isFunction(value)) return value;
+    return _.property(value);
+  };
+
+  // Sort the object's values by a criterion produced by an iterator.
+  _.sortBy = function(obj, iterator, context) {
+    iterator = lookupIterator(iterator);
+    return _.pluck(_.map(obj, function(value, index, list) {
+      return {
+        value: value,
+        index: index,
+        criteria: iterator.call(context, value, index, list)
+      };
+    }).sort(function(left, right) {
+      var a = left.criteria;
+      var b = right.criteria;
+      if (a !== b) {
+        if (a > b || a === void 0) return 1;
+        if (a < b || b === void 0) return -1;
+      }
+      return left.index - right.index;
+    }), 'value');
+  };
+
+  // An internal function used for aggregate "group by" operations.
+  var group = function(behavior) {
+    return function(obj, iterator, context) {
+      var result = {};
+      iterator = lookupIterator(iterator);
+      each(obj, function(value, index) {
+        var key = iterator.call(context, value, index, obj);
+        behavior(result, key, value);
+      });
+      return result;
+    };
+  };
+
+  // Groups the object's values by a criterion. Pass either a string attribute
+  // to group by, or a function that returns the criterion.
+  _.groupBy = group(function(result, key, value) {
+    _.has(result, key) ? result[key].push(value) : result[key] = [value];
+  });
+
+  // Indexes the object's values by a criterion, similar to `groupBy`, but for
+  // when you know that your index values will be unique.
+  _.indexBy = group(function(result, key, value) {
+    result[key] = value;
+  });
+
+  // Counts instances of an object that group by a certain criterion. Pass
+  // either a string attribute to count by, or a function that returns the
+  // criterion.
+  _.countBy = group(function(result, key) {
+    _.has(result, key) ? result[key]++ : result[key] = 1;
+  });
+
+  // Use a comparator function to figure out the smallest index at which
+  // an object should be inserted so as to maintain order. Uses binary search.
+  _.sortedIndex = function(array, obj, iterator, context) {
+    iterator = lookupIterator(iterator);
+    var value = iterator.call(context, obj);
+    var low = 0, high = array.length;
+    while (low < high) {
+      var mid = (low + high) >>> 1;
+      iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid;
+    }
+    return low;
+  };
+
+  // Safely create a real, live array from anything iterable.
+  _.toArray = function(obj) {
+    if (!obj) return [];
+    if (_.isArray(obj)) return slice.call(obj);
+    if (obj.length === +obj.length) return _.map(obj, _.identity);
+    return _.values(obj);
+  };
+
+  // Return the number of elements in an object.
+  _.size = function(obj) {
+    if (obj == null) return 0;
+    return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;
+  };
+
+  // Array Functions
+  // ---------------
+
+  // Get the first element of an array. Passing **n** will return the first N
+  // values in the array. Aliased as `head` and `take`. The **guard** check
+  // allows it to work with `_.map`.
+  _.first = _.head = _.take = function(array, n, guard) {
+    if (array == null) return void 0;
+    if ((n == null) || guard) return array[0];
+    if (n < 0) return [];
+    return slice.call(array, 0, n);
+  };
+
+  // Returns everything but the last entry of the array. Especially useful on
+  // the arguments object. Passing **n** will return all the values in
+  // the array, excluding the last N. The **guard** check allows it to work with
+  // `_.map`.
+  _.initial = function(array, n, guard) {
+    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+  };
+
+  // Get the last element of an array. Passing **n** will return the last N
+  // values in the array. The **guard** check allows it to work with `_.map`.
+  _.last = function(array, n, guard) {
+    if (array == null) return void 0;
+    if ((n == null) || guard) return array[array.length - 1];
+    return slice.call(array, Math.max(array.length - n, 0));
+  };
+
+  // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
+  // Especially useful on the arguments object. Passing an **n** will return
+  // the rest N values in the array. The **guard**
+  // check allows it to work with `_.map`.
+  _.rest = _.tail = _.drop = function(array, n, guard) {
+    return slice.call(array, (n == null) || guard ? 1 : n);
+  };
+
+  // Trim out all falsy values from an array.
+  _.compact = function(array) {
+    return _.filter(array, _.identity);
+  };
+
+  // Internal implementation of a recursive `flatten` function.
+  var flatten = function(input, shallow, output) {
+    if (shallow && _.every(input, _.isArray)) {
+      return concat.apply(output, input);
+    }
+    each(input, function(value) {
+      if (_.isArray(value) || _.isArguments(value)) {
+        shallow ? push.apply(output, value) : flatten(value, shallow, output);
+      } else {
+        output.push(value);
+      }
+    });
+    return output;
+  };
+
+  // Flatten out an array, either recursively (by default), or just one level.
+  _.flatten = function(array, shallow) {
+    return flatten(array, shallow, []);
+  };
+
+  // Return a version of the array that does not contain the specified value(s).
+  _.without = function(array) {
+    return _.difference(array, slice.call(arguments, 1));
+  };
+
+  // Split an array into two arrays: one whose elements all satisfy the given
+  // predicate, and one whose elements all do not satisfy the predicate.
+  _.partition = function(array, predicate) {
+    var pass = [], fail = [];
+    each(array, function(elem) {
+      (predicate(elem) ? pass : fail).push(elem);
+    });
+    return [pass, fail];
+  };
+
+  // Produce a duplicate-free version of the array. If the array has already
+  // been sorted, you have the option of using a faster algorithm.
+  // Aliased as `unique`.
+  _.uniq = _.unique = function(array, isSorted, iterator, context) {
+    if (_.isFunction(isSorted)) {
+      context = iterator;
+      iterator = isSorted;
+      isSorted = false;
+    }
+    var initial = iterator ? _.map(array, iterator, context) : array;
+    var results = [];
+    var seen = [];
+    each(initial, function(value, index) {
+      if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) {
+        seen.push(value);
+        results.push(array[index]);
+      }
+    });
+    return results;
+  };
+
+  // Produce an array that contains the union: each distinct element from all of
+  // the passed-in arrays.
+  _.union = function() {
+    return _.uniq(_.flatten(arguments, true));
+  };
+
+  // Produce an array that contains every item shared between all the
+  // passed-in arrays.
+  _.intersection = function(array) {
+    var rest = slice.call(arguments, 1);
+    return _.filter(_.uniq(array), function(item) {
+      return _.every(rest, function(other) {
+        return _.contains(other, item);
+      });
+    });
+  };
+
+  // Take the difference between one array and a number of other arrays.
+  // Only the elements present in just the first array will remain.
+  _.difference = function(array) {
+    var rest = concat.apply(ArrayProto, slice.call(arguments, 1));
+    return _.filter(array, function(value){ return !_.contains(rest, value); });
+  };
+
+  // Zip together multiple lists into a single array -- elements that share
+  // an index go together.
+  _.zip = function() {
+    var length = _.max(_.pluck(arguments, 'length').concat(0));
+    var results = new Array(length);
+    for (var i = 0; i < length; i++) {
+      results[i] = _.pluck(arguments, '' + i);
+    }
+    return results;
+  };
+
+  // Converts lists into objects. Pass either a single array of `[key, value]`
+  // pairs, or two parallel arrays of the same length -- one of keys, and one of
+  // the corresponding values.
+  _.object = function(list, values) {
+    if (list == null) return {};
+    var result = {};
+    for (var i = 0, length = list.length; i < length; i++) {
+      if (values) {
+        result[list[i]] = values[i];
+      } else {
+        result[list[i][0]] = list[i][1];
+      }
+    }
+    return result;
+  };
+
+  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+  // we need this function. Return the position of the first occurrence of an
+  // item in an array, or -1 if the item is not included in the array.
+  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+  // If the array is large and already in sort order, pass `true`
+  // for **isSorted** to use binary search.
+  _.indexOf = function(array, item, isSorted) {
+    if (array == null) return -1;
+    var i = 0, length = array.length;
+    if (isSorted) {
+      if (typeof isSorted == 'number') {
+        i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted);
+      } else {
+        i = _.sortedIndex(array, item);
+        return array[i] === item ? i : -1;
+      }
+    }
+    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
+    for (; i < length; i++) if (array[i] === item) return i;
+    return -1;
+  };
+
+  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+  _.lastIndexOf = function(array, item, from) {
+    if (array == null) return -1;
+    var hasIndex = from != null;
+    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) {
+      return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item);
+    }
+    var i = (hasIndex ? from : array.length);
+    while (i--) if (array[i] === item) return i;
+    return -1;
+  };
+
+  // Generate an integer Array containing an arithmetic progression. A port of
+  // the native Python `range()` function. See
+  // [the Python documentation](http://docs.python.org/library/functions.html#range).
+  _.range = function(start, stop, step) {
+    if (arguments.length <= 1) {
+      stop = start || 0;
+      start = 0;
+    }
+    step = arguments[2] || 1;
+
+    var length = Math.max(Math.ceil((stop - start) / step), 0);
+    var idx = 0;
+    var range = new Array(length);
+
+    while(idx < length) {
+      range[idx++] = start;
+      start += step;
+    }
+
+    return range;
+  };
+
+  // Function (ahem) Functions
+  // ------------------
+
+  // Reusable constructor function for prototype setting.
+  var ctor = function(){};
+
+  // Create a function bound to a given object (assigning `this`, and arguments,
+  // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
+  // available.
+  _.bind = function(func, context) {
+    var args, bound;
+    if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+    if (!_.isFunction(func)) throw new TypeError;
+    args = slice.call(arguments, 2);
+    return bound = function() {
+      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+      ctor.prototype = func.prototype;
+      var self = new ctor;
+      ctor.prototype = null;
+      var result = func.apply(self, args.concat(slice.call(arguments)));
+      if (Object(result) === result) return result;
+      return self;
+    };
+  };
+
+  // Partially apply a function by creating a version that has had some of its
+  // arguments pre-filled, without changing its dynamic `this` context. _ acts
+  // as a placeholder, allowing any combination of arguments to be pre-filled.
+  _.partial = function(func) {
+    var boundArgs = slice.call(arguments, 1);
+    return function() {
+      var position = 0;
+      var args = boundArgs.slice();
+      for (var i = 0, length = args.length; i < length; i++) {
+        if (args[i] === _) args[i] = arguments[position++];
+      }
+      while (position < arguments.length) args.push(arguments[position++]);
+      return func.apply(this, args);
+    };
+  };
+
+  // Bind a number of an object's methods to that object. Remaining arguments
+  // are the method names to be bound. Useful for ensuring that all callbacks
+  // defined on an object belong to it.
+  _.bindAll = function(obj) {
+    var funcs = slice.call(arguments, 1);
+    if (funcs.length === 0) throw new Error('bindAll must be passed function names');
+    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+    return obj;
+  };
+
+  // Memoize an expensive function by storing its results.
+  _.memoize = function(func, hasher) {
+    var memo = {};
+    hasher || (hasher = _.identity);
+    return function() {
+      var key = hasher.apply(this, arguments);
+      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+    };
+  };
+
+  // Delays a function for the given number of milliseconds, and then calls
+  // it with the arguments supplied.
+  _.delay = function(func, wait) {
+    var args = slice.call(arguments, 2);
+    return setTimeout(function(){ return func.apply(null, args); }, wait);
+  };
+
+  // Defers a function, scheduling it to run after the current call stack has
+  // cleared.
+  _.defer = function(func) {
+    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+  };
+
+  // Returns a function, that, when invoked, will only be triggered at most once
+  // during a given window of time. Normally, the throttled function will run
+  // as much as it can, without ever going more than once per `wait` duration;
+  // but if you'd like to disable the execution on the leading edge, pass
+  // `{leading: false}`. To disable execution on the trailing edge, ditto.
+  _.throttle = function(func, wait, options) {
+    var context, args, result;
+    var timeout = null;
+    var previous = 0;
+    options || (options = {});
+    var later = function() {
+      previous = options.leading === false ? 0 : _.now();
+      timeout = null;
+      result = func.apply(context, args);
+      context = args = null;
+    };
+    return function() {
+      var now = _.now();
+      if (!previous && options.leading === false) previous = now;
+      var remaining = wait - (now - previous);
+      context = this;
+      args = arguments;
+      if (remaining <= 0) {
+        clearTimeout(timeout);
+        timeout = null;
+        previous = now;
+        result = func.apply(context, args);
+        context = args = null;
+      } else if (!timeout && options.trailing !== false) {
+        timeout = setTimeout(later, remaining);
+      }
+      return result;
+    };
+  };
+
+  // Returns a function, that, as long as it continues to be invoked, will not
+  // be triggered. The function will be called after it stops being called for
+  // N milliseconds. If `immediate` is passed, trigger the function on the
+  // leading edge, instead of the trailing.
+  _.debounce = function(func, wait, immediate) {
+    var timeout, args, context, timestamp, result;
+
+    var later = function() {
+      var last = _.now() - timestamp;
+      if (last < wait) {
+        timeout = setTimeout(later, wait - last);
+      } else {
+        timeout = null;
+        if (!immediate) {
+          result = func.apply(context, args);
+          context = args = null;
+        }
+      }
+    };
+
+    return function() {
+      context = this;
+      args = arguments;
+      timestamp = _.now();
+      var callNow = immediate && !timeout;
+      if (!timeout) {
+        timeout = setTimeout(later, wait);
+      }
+      if (callNow) {
+        result = func.apply(context, args);
+        context = args = null;
+      }
+
+      return result;
+    };
+  };
+
+  // Returns a function that will be executed at most one time, no matter how
+  // often you call it. Useful for lazy initialization.
+  _.once = function(func) {
+    var ran = false, memo;
+    return function() {
+      if (ran) return memo;
+      ran = true;
+      memo = func.apply(this, arguments);
+      func = null;
+      return memo;
+    };
+  };
+
+  // Returns the first function passed as an argument to the second,
+  // allowing you to adjust arguments, run code before and after, and
+  // conditionally execute the original function.
+  _.wrap = function(func, wrapper) {
+    return _.partial(wrapper, func);
+  };
+
+  // Returns a function that is the composition of a list of functions, each
+  // consuming the return value of the function that follows.
+  _.compose = function() {
+    var funcs = arguments;
+    return function() {
+      var args = arguments;
+      for (var i = funcs.length - 1; i >= 0; i--) {
+        args = [funcs[i].apply(this, args)];
+      }
+      return args[0];
+    };
+  };
+
+  // Returns a function that will only be executed after being called N times.
+  _.after = function(times, func) {
+    return function() {
+      if (--times < 1) {
+        return func.apply(this, arguments);
+      }
+    };
+  };
+
+  // Object Functions
+  // ----------------
+
+  // Retrieve the names of an object's properties.
+  // Delegates to **ECMAScript 5**'s native `Object.keys`
+  _.keys = function(obj) {
+    if (!_.isObject(obj)) return [];
+    if (nativeKeys) return nativeKeys(obj);
+    var keys = [];
+    for (var key in obj) if (_.has(obj, key)) keys.push(key);
+    return keys;
+  };
+
+  // Retrieve the values of an object's properties.
+  _.values = function(obj) {
+    var keys = _.keys(obj);
+    var length = keys.length;
+    var values = new Array(length);
+    for (var i = 0; i < length; i++) {
+      values[i] = obj[keys[i]];
+    }
+    return values;
+  };
+
+  // Convert an object into a list of `[key, value]` pairs.
+  _.pairs = function(obj) {
+    var keys = _.keys(obj);
+    var length = keys.length;
+    var pairs = new Array(length);
+    for (var i = 0; i < length; i++) {
+      pairs[i] = [keys[i], obj[keys[i]]];
+    }
+    return pairs;
+  };
+
+  // Invert the keys and values of an object. The values must be serializable.
+  _.invert = function(obj) {
+    var result = {};
+    var keys = _.keys(obj);
+    for (var i = 0, length = keys.length; i < length; i++) {
+      result[obj[keys[i]]] = keys[i];
+    }
+    return result;
+  };
+
+  // Return a sorted list of the function names available on the object.
+  // Aliased as `methods`
+  _.functions = _.methods = function(obj) {
+    var names = [];
+    for (var key in obj) {
+      if (_.isFunction(obj[key])) names.push(key);
+    }
+    return names.sort();
+  };
+
+  // Extend a given object with all the properties in passed-in object(s).
+  _.extend = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      if (source) {
+        for (var prop in source) {
+          obj[prop] = source[prop];
+        }
+      }
+    });
+    return obj;
+  };
+
+  // Return a copy of the object only containing the whitelisted properties.
+  _.pick = function(obj) {
+    var copy = {};
+    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+    each(keys, function(key) {
+      if (key in obj) copy[key] = obj[key];
+    });
+    return copy;
+  };
+
+   // Return a copy of the object without the blacklisted properties.
+  _.omit = function(obj) {
+    var copy = {};
+    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+    for (var key in obj) {
+      if (!_.contains(keys, key)) copy[key] = obj[key];
+    }
+    return copy;
+  };
+
+  // Fill in a given object with default properties.
+  _.defaults = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      if (source) {
+        for (var prop in source) {
+          if (obj[prop] === void 0) obj[prop] = source[prop];
+        }
+      }
+    });
+    return obj;
+  };
+
+  // Create a (shallow-cloned) duplicate of an object.
+  _.clone = function(obj) {
+    if (!_.isObject(obj)) return obj;
+    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+  };
+
+  // Invokes interceptor with the obj, and then returns obj.
+  // The primary purpose of this method is to "tap into" a method chain, in
+  // order to perform operations on intermediate results within the chain.
+  _.tap = function(obj, interceptor) {
+    interceptor(obj);
+    return obj;
+  };
+
+  // Internal recursive comparison function for `isEqual`.
+  var eq = function(a, b, aStack, bStack) {
+    // Identical objects are equal. `0 === -0`, but they aren't identical.
+    // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
+    if (a === b) return a !== 0 || 1 / a == 1 / b;
+    // A strict comparison is necessary because `null == undefined`.
+    if (a == null || b == null) return a === b;
+    // Unwrap any wrapped objects.
+    if (a instanceof _) a = a._wrapped;
+    if (b instanceof _) b = b._wrapped;
+    // Compare `[[Class]]` names.
+    var className = toString.call(a);
+    if (className != toString.call(b)) return false;
+    switch (className) {
+      // Strings, numbers, dates, and booleans are compared by value.
+      case '[object String]':
+        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+        // equivalent to `new String("5")`.
+        return a == String(b);
+      case '[object Number]':
+        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+        // other numeric values.
+        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+      case '[object Date]':
+      case '[object Boolean]':
+        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+        // millisecond representations. Note that invalid dates with millisecond representations
+        // of `NaN` are not equivalent.
+        return +a == +b;
+      // RegExps are compared by their source patterns and flags.
+      case '[object RegExp]':
+        return a.source == b.source &&
+               a.global == b.global &&
+               a.multiline == b.multiline &&
+               a.ignoreCase == b.ignoreCase;
+    }
+    if (typeof a != 'object' || typeof b != 'object') return false;
+    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+    var length = aStack.length;
+    while (length--) {
+      // Linear search. Performance is inversely proportional to the number of
+      // unique nested structures.
+      if (aStack[length] == a) return bStack[length] == b;
+    }
+    // Objects with different constructors are not equivalent, but `Object`s
+    // from different frames are.
+    var aCtor = a.constructor, bCtor = b.constructor;
+    if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
+                             _.isFunction(bCtor) && (bCtor instanceof bCtor))
+                        && ('constructor' in a && 'constructor' in b)) {
+      return false;
+    }
+    // Add the first object to the stack of traversed objects.
+    aStack.push(a);
+    bStack.push(b);
+    var size = 0, result = true;
+    // Recursively compare objects and arrays.
+    if (className == '[object Array]') {
+      // Compare array lengths to determine if a deep comparison is necessary.
+      size = a.length;
+      result = size == b.length;
+      if (result) {
+        // Deep compare the contents, ignoring non-numeric properties.
+        while (size--) {
+          if (!(result = eq(a[size], b[size], aStack, bStack))) break;
+        }
+      }
+    } else {
+      // Deep compare objects.
+      for (var key in a) {
+        if (_.has(a, key)) {
+          // Count the expected number of properties.
+          size++;
+          // Deep compare each member.
+          if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;
+        }
+      }
+      // Ensure that both objects contain the same number of properties.
+      if (result) {
+        for (key in b) {
+          if (_.has(b, key) && !(size--)) break;
+        }
+        result = !size;
+      }
+    }
+    // Remove the first object from the stack of traversed objects.
+    aStack.pop();
+    bStack.pop();
+    return result;
+  };
+
+  // Perform a deep comparison to check if two objects are equal.
+  _.isEqual = function(a, b) {
+    return eq(a, b, [], []);
+  };
+
+  // Is a given array, string, or object empty?
+  // An "empty" object has no enumerable own-properties.
+  _.isEmpty = function(obj) {
+    if (obj == null) return true;
+    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+    for (var key in obj) if (_.has(obj, key)) return false;
+    return true;
+  };
+
+  // Is a given value a DOM element?
+  _.isElement = function(obj) {
+    return !!(obj && obj.nodeType === 1);
+  };
+
+  // Is a given value an array?
+  // Delegates to ECMA5's native Array.isArray
+  _.isArray = nativeIsArray || function(obj) {
+    return toString.call(obj) == '[object Array]';
+  };
+
+  // Is a given variable an object?
+  _.isObject = function(obj) {
+    return obj === Object(obj);
+  };
+
+  // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.
+  each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
+    _['is' + name] = function(obj) {
+      return toString.call(obj) == '[object ' + name + ']';
+    };
+  });
+
+  // Define a fallback version of the method in browsers (ahem, IE), where
+  // there isn't any inspectable "Arguments" type.
+  if (!_.isArguments(arguments)) {
+    _.isArguments = function(obj) {
+      return !!(obj && _.has(obj, 'callee'));
+    };
+  }
+
+  // Optimize `isFunction` if appropriate.
+  if (typeof (/./) !== 'function') {
+    _.isFunction = function(obj) {
+      return typeof obj === 'function';
+    };
+  }
+
+  // Is a given object a finite number?
+  _.isFinite = function(obj) {
+    return isFinite(obj) && !isNaN(parseFloat(obj));
+  };
+
+  // Is the given value `NaN`? (NaN is the only number which does not equal itself).
+  _.isNaN = function(obj) {
+    return _.isNumber(obj) && obj != +obj;
+  };
+
+  // Is a given value a boolean?
+  _.isBoolean = function(obj) {
+    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+  };
+
+  // Is a given value equal to null?
+  _.isNull = function(obj) {
+    return obj === null;
+  };
+
+  // Is a given variable undefined?
+  _.isUndefined = function(obj) {
+    return obj === void 0;
+  };
+
+  // Shortcut function for checking if an object has a given property directly
+  // on itself (in other words, not on a prototype).
+  _.has = function(obj, key) {
+    return hasOwnProperty.call(obj, key);
+  };
+
+  // Utility Functions
+  // -----------------
+
+  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+  // previous owner. Returns a reference to the Underscore object.
+  _.noConflict = function() {
+    root._ = previousUnderscore;
+    return this;
+  };
+
+  // Keep the identity function around for default iterators.
+  _.identity = function(value) {
+    return value;
+  };
+
+  _.constant = function(value) {
+    return function () {
+      return value;
+    };
+  };
+
+  _.property = function(key) {
+    return function(obj) {
+      return obj[key];
+    };
+  };
+
+  // Returns a predicate for checking whether an object has a given set of `key:value` pairs.
+  _.matches = function(attrs) {
+    return function(obj) {
+      if (obj === attrs) return true; //avoid comparing an object to itself.
+      for (var key in attrs) {
+        if (attrs[key] !== obj[key])
+          return false;
+      }
+      return true;
+    }
+  };
+
+  // Run a function **n** times.
+  _.times = function(n, iterator, context) {
+    var accum = Array(Math.max(0, n));
+    for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
+    return accum;
+  };
+
+  // Return a random integer between min and max (inclusive).
+  _.random = function(min, max) {
+    if (max == null) {
+      max = min;
+      min = 0;
+    }
+    return min + Math.floor(Math.random() * (max - min + 1));
+  };
+
+  // A (possibly faster) way to get the current timestamp as an integer.
+  _.now = Date.now || function() { return new Date().getTime(); };
+
+  // List of HTML entities for escaping.
+  var entityMap = {
+    escape: {
+      '&': '&amp;',
+      '<': '&lt;',
+      '>': '&gt;',
+      '"': '&quot;',
+      "'": '&#x27;'
+    }
+  };
+  entityMap.unescape = _.invert(entityMap.escape);
+
+  // Regexes containing the keys and values listed immediately above.
+  var entityRegexes = {
+    escape:   new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'),
+    unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g')
+  };
+
+  // Functions for escaping and unescaping strings to/from HTML interpolation.
+  _.each(['escape', 'unescape'], function(method) {
+    _[method] = function(string) {
+      if (string == null) return '';
+      return ('' + string).replace(entityRegexes[method], function(match) {
+        return entityMap[method][match];
+      });
+    };
+  });
+
+  // If the value of the named `property` is a function then invoke it with the
+  // `object` as context; otherwise, return it.
+  _.result = function(object, property) {
+    if (object == null) return void 0;
+    var value = object[property];
+    return _.isFunction(value) ? value.call(object) : value;
+  };
+
+  // Add your own custom functions to the Underscore object.
+  _.mixin = function(obj) {
+    each(_.functions(obj), function(name) {
+      var func = _[name] = obj[name];
+      _.prototype[name] = function() {
+        var args = [this._wrapped];
+        push.apply(args, arguments);
+        return result.call(this, func.apply(_, args));
+      };
+    });
+  };
+
+  // Generate a unique integer id (unique within the entire client session).
+  // Useful for temporary DOM ids.
+  var idCounter = 0;
+  _.uniqueId = function(prefix) {
+    var id = ++idCounter + '';
+    return prefix ? prefix + id : id;
+  };
+
+  // By default, Underscore uses ERB-style template delimiters, change the
+  // following template settings to use alternative delimiters.
+  _.templateSettings = {
+    evaluate    : /<%([\s\S]+?)%>/g,
+    interpolate : /<%=([\s\S]+?)%>/g,
+    escape      : /<%-([\s\S]+?)%>/g
+  };
+
+  // When customizing `templateSettings`, if you don't want to define an
+  // interpolation, evaluation or escaping regex, we need one that is
+  // guaranteed not to match.
+  var noMatch = /(.)^/;
+
+  // Certain characters need to be escaped so that they can be put into a
+  // string literal.
+  var escapes = {
+    "'":      "'",
+    '\\':     '\\',
+    '\r':     'r',
+    '\n':     'n',
+    '\t':     't',
+    '\u2028': 'u2028',
+    '\u2029': 'u2029'
+  };
+
+  var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
+
+  // JavaScript micro-templating, similar to John Resig's implementation.
+  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+  // and correctly escapes quotes within interpolated code.
+  _.template = function(text, data, settings) {
+    var render;
+    settings = _.defaults({}, settings, _.templateSettings);
+
+    // Combine delimiters into one regular expression via alternation.
+    var matcher = new RegExp([
+      (settings.escape || noMatch).source,
+      (settings.interpolate || noMatch).source,
+      (settings.evaluate || noMatch).source
+    ].join('|') + '|$', 'g');
+
+    // Compile the template source, escaping string literals appropriately.
+    var index = 0;
+    var source = "__p+='";
+    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
+      source += text.slice(index, offset)
+        .replace(escaper, function(match) { return '\\' + escapes[match]; });
+
+      if (escape) {
+        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
+      }
+      if (interpolate) {
+        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
+      }
+      if (evaluate) {
+        source += "';\n" + evaluate + "\n__p+='";
+      }
+      index = offset + match.length;
+      return match;
+    });
+    source += "';\n";
+
+    // If a variable is not specified, place data values in local scope.
+    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
+
+    source = "var __t,__p='',__j=Array.prototype.join," +
+      "print=function(){__p+=__j.call(arguments,'');};\n" +
+      source + "return __p;\n";
+
+    try {
+      render = new Function(settings.variable || 'obj', '_', source);
+    } catch (e) {
+      e.source = source;
+      throw e;
+    }
+
+    if (data) return render(data, _);
+    var template = function(data) {
+      return render.call(this, data, _);
+    };
+
+    // Provide the compiled function source as a convenience for precompilation.
+    template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';
+
+    return template;
+  };
+
+  // Add a "chain" function, which will delegate to the wrapper.
+  _.chain = function(obj) {
+    return _(obj).chain();
+  };
+
+  // OOP
+  // ---------------
+  // If Underscore is called as a function, it returns a wrapped object that
+  // can be used OO-style. This wrapper holds altered versions of all the
+  // underscore functions. Wrapped objects may be chained.
+
+  // Helper function to continue chaining intermediate results.
+  var result = function(obj) {
+    return this._chain ? _(obj).chain() : obj;
+  };
+
+  // Add all of the Underscore functions to the wrapper object.
+  _.mixin(_);
+
+  // Add all mutator Array functions to the wrapper.
+  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      var obj = this._wrapped;
+      method.apply(obj, arguments);
+      if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];
+      return result.call(this, obj);
+    };
+  });
+
+  // Add all accessor Array functions to the wrapper.
+  each(['concat', 'join', 'slice'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      return result.call(this, method.apply(this._wrapped, arguments));
+    };
+  });
+
+  _.extend(_.prototype, {
+
+    // Start chaining a wrapped Underscore object.
+    chain: function() {
+      this._chain = true;
+      return this;
+    },
+
+    // Extracts the result from a wrapped and chained object.
+    value: function() {
+      return this._wrapped;
+    }
+
+  });
+
+  // AMD registration happens at the end for compatibility with AMD loaders
+  // that may not enforce next-turn semantics on modules. Even though general
+  // practice for AMD registration is to be anonymous, underscore registers
+  // as a named module because, like jQuery, it is a base library that is
+  // popular enough to be bundled in a third party lib, but not be part of
+  // an AMD load request. Those cases could generate an error when an
+  // anonymous define() is called outside of a loader request.
+  if (typeof define === 'function' && define.amd) {
+    define('underscore', [], function() {
+      return _;
+    });
+  }
+}).call(this);
diff --git a/atom/packages/ex-mode/node_modules/underscore-plus/package.json b/atom/packages/ex-mode/node_modules/underscore-plus/package.json
new file mode 100644 (file)
index 0000000..8bdcd9d
--- /dev/null
@@ -0,0 +1,79 @@
+{
+  "name": "underscore-plus",
+  "version": "1.6.6",
+  "description": "Underscore plus additional utilities",
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/underscore-plus/raw/master/LICENSE.md"
+    }
+  ],
+  "main": "./lib/underscore-plus.js",
+  "scripts": {
+    "prepublish": "grunt clean coffee lint",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/underscore-plus.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/underscore-plus/issues"
+  },
+  "homepage": "http://atom.github.io/underscore-plus",
+  "keywords": [
+    "underscore"
+  ],
+  "dependencies": {
+    "underscore": "~1.6.0"
+  },
+  "devDependencies": {
+    "jasmine-focused": "1.x",
+    "grunt-contrib-coffee": "~0.9.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "temp": "~0.5.0",
+    "rimraf": "~2.1.4"
+  },
+  "gitHead": "2046d1562896761e3c38b7a647ac30b87b46ea20",
+  "_id": "underscore-plus@1.6.6",
+  "_shasum": "65ecde1bdc441a35d89e650fd70dcf13ae439a7d",
+  "_from": "underscore-plus@>=1.0.0 <2.0.0",
+  "_npmVersion": "2.1.8",
+  "_nodeVersion": "0.10.33",
+  "_npmUser": {
+    "name": "maxbrunsfeld",
+    "email": "maxbrunsfeld@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "mcolyer",
+      "email": "matt@colyer.name"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    },
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "maxbrunsfeld",
+      "email": "maxbrunsfeld@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "65ecde1bdc441a35d89e650fd70dcf13ae439a7d",
+    "tarball": "http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.6.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.6.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/ex-mode/package.json b/atom/packages/ex-mode/package.json
new file mode 100644 (file)
index 0000000..efd1207
--- /dev/null
@@ -0,0 +1,1816 @@
+{
+  "name": "ex-mode",
+  "main": "./lib/ex-mode",
+  "version": "0.5.1",
+  "description": "Ex for Atom's vim-mode",
+  "activationCommands": {
+    "atom-workspace": "ex-mode:open"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/lloeki/ex-mode"
+  },
+  "license": "MIT",
+  "engines": {
+    "atom": ">=0.200.0 <2.0.0"
+  },
+  "dependencies": {
+    "underscore-plus": "1.x",
+    "event-kit": "^0.7.2",
+    "space-pen": "^5.1.1",
+    "atom-space-pen-views": "^2.0.4"
+  },
+  "consumedServices": {
+    "vim-mode": {
+      "versions": {
+        "^0.1.0": "consumeVim"
+      }
+    }
+  },
+  "providedServices": {
+    "ex-mode": {
+      "description": "Ex commands",
+      "versions": {
+        "0.20.0": "provideEx"
+      }
+    }
+  },
+  "readme": "# ex-mode package\n\nex-mode for Atom's vim-mode\n\n## Use\n\nInstall both [vim-mode](https://github.com/atom/vim-mode) and ex-mode. Type `:` in command mode. Enter `w` or `write`.\n\n## Extend\n\nUse the service to register commands, from your own package, or straight from `init.coffee`:\n\n```coffee\n# in Atom's init.coffee\natom.packages.onDidActivatePackage (pack) ->\n  if pack.name == 'ex-mode'\n    Ex = pack.mainModule.provideEx()\n    Ex.registerCommand 'z', -> console.log(\"Zzzzzz...\")\n```\n\nSee `lib/ex.coffee` for some examples commands. Contributions are very welcome!\n\n## Status\n\nGroundwork is done. More ex commands are easy to add and will be coming as time permits and contributions come in.\n\n## License\n\nMIT\n",
+  "readmeFilename": "README.md",
+  "bugs": {
+    "url": "https://github.com/lloeki/ex-mode/issues"
+  },
+  "homepage": "https://github.com/lloeki/ex-mode",
+  "_id": "ex-mode@0.5.1",
+  "_shasum": "8af9a669232d55ae62ee5b6d21750e864564a7fe",
+  "_resolved": "file:../d-11562-87793-1y2kizp/package.tgz",
+  "_from": "../d-11562-87793-1y2kizp/package.tgz",
+  "_atomModuleCache": {
+    "version": 1,
+    "dependencies": [
+      {
+        "name": "atom-space-pen-views",
+        "version": "2.0.5",
+        "path": "node_modules/atom-space-pen-views/lib/main.js"
+      },
+      {
+        "name": "fuzzaldrin",
+        "version": "2.1.0",
+        "path": "node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/fuzzaldrin.js"
+      },
+      {
+        "name": "event-kit",
+        "version": "0.7.2",
+        "path": "node_modules/event-kit/lib/event-kit.js"
+      },
+      {
+        "name": "grim",
+        "version": "0.12.0",
+        "path": "node_modules/event-kit/node_modules/grim/lib/grim.js"
+      },
+      {
+        "name": "emissary",
+        "version": "1.3.3",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emissary.js"
+      },
+      {
+        "name": "es6-weak-map",
+        "version": "0.1.4",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js"
+      },
+      {
+        "name": "d",
+        "version": "0.1.1",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js"
+      },
+      {
+        "name": "es5-ext",
+        "version": "0.10.7",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js"
+      },
+      {
+        "name": "es6-iterator",
+        "version": "0.1.3",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js"
+      },
+      {
+        "name": "es6-symbol",
+        "version": "2.0.1",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js"
+      },
+      {
+        "name": "mixto",
+        "version": "1.0.0",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js"
+      },
+      {
+        "name": "property-accessors",
+        "version": "1.1.3",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js"
+      },
+      {
+        "name": "space-pen",
+        "version": "5.1.1",
+        "path": "node_modules/space-pen/lib/space-pen.js"
+      },
+      {
+        "name": "grim",
+        "version": "1.4.1",
+        "path": "node_modules/space-pen/node_modules/grim/lib/grim.js"
+      },
+      {
+        "name": "coffeestack",
+        "version": "1.1.2",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/index.js"
+      },
+      {
+        "name": "coffee-script",
+        "version": "1.8.0",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/coffee-script.js"
+      },
+      {
+        "name": "mkdirp",
+        "version": "0.3.5",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/index.js"
+      },
+      {
+        "name": "fs-plus",
+        "version": "2.8.1",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/lib/fs-plus.js"
+      },
+      {
+        "name": "async",
+        "version": "0.2.10",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/lib/async.js"
+      },
+      {
+        "name": "mkdirp",
+        "version": "0.3.5",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/index.js"
+      },
+      {
+        "name": "rimraf",
+        "version": "2.2.8",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/rimraf.js"
+      },
+      {
+        "name": "source-map",
+        "version": "0.1.43",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map.js"
+      },
+      {
+        "name": "amdefine",
+        "version": "0.1.1",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/amdefine.js"
+      },
+      {
+        "name": "emissary",
+        "version": "1.3.3",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/emissary.js"
+      },
+      {
+        "name": "es6-weak-map",
+        "version": "0.1.4",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js"
+      },
+      {
+        "name": "d",
+        "version": "0.1.1",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js"
+      },
+      {
+        "name": "es5-ext",
+        "version": "0.10.7",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js"
+      },
+      {
+        "name": "es6-iterator",
+        "version": "0.1.3",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js"
+      },
+      {
+        "name": "es6-symbol",
+        "version": "2.0.1",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js"
+      },
+      {
+        "name": "mixto",
+        "version": "1.0.0",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js"
+      },
+      {
+        "name": "property-accessors",
+        "version": "1.1.3",
+        "path": "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js"
+      },
+      {
+        "name": "jquery",
+        "version": "2.1.4",
+        "path": "node_modules/space-pen/node_modules/jquery/dist/jquery.js"
+      },
+      {
+        "name": "underscore-plus",
+        "version": "1.6.6",
+        "path": "node_modules/underscore-plus/lib/underscore-plus.js"
+      },
+      {
+        "name": "underscore",
+        "version": "1.6.0",
+        "path": "node_modules/underscore-plus/node_modules/underscore/underscore.js"
+      }
+    ],
+    "extensions": {
+      ".coffee": [
+        "lib/command-error.coffee",
+        "lib/command.coffee",
+        "lib/ex-command-mode-input-element.coffee",
+        "lib/ex-mode.coffee",
+        "lib/ex-state.coffee",
+        "lib/ex-view-model.coffee",
+        "lib/ex.coffee",
+        "lib/find.coffee",
+        "lib/global-ex-state.coffee",
+        "lib/view-model.coffee"
+      ],
+      ".js": [
+        "node_modules/atom-space-pen-views/lib/main.js",
+        "node_modules/atom-space-pen-views/lib/scroll-view.js",
+        "node_modules/atom-space-pen-views/lib/select-list-view.js",
+        "node_modules/atom-space-pen-views/lib/text-editor-view.js",
+        "node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/filter.js",
+        "node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/fuzzaldrin.js",
+        "node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/matcher.js",
+        "node_modules/atom-space-pen-views/node_modules/fuzzaldrin/lib/scorer.js",
+        "node_modules/event-kit/lib/composite-disposable.js",
+        "node_modules/event-kit/lib/disposable.js",
+        "node_modules/event-kit/lib/emitter.js",
+        "node_modules/event-kit/lib/event-kit.js",
+        "node_modules/event-kit/node_modules/grim/lib/deprecation.js",
+        "node_modules/event-kit/node_modules/grim/lib/grim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/behavior.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emissary.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emitter.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/helpers.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/signal.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscriber.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscription.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js",
+        "node_modules/space-pen/lib/space-pen.js",
+        "node_modules/space-pen/node_modules/grim/lib/deprecation.js",
+        "node_modules/space-pen/node_modules/grim/lib/grim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/browser.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/cake.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/coffee-script.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/command.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/grammar.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/helpers.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/lexer.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/nodes.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/optparse.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/parser.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/register.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/repl.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/rewriter.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/scope.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script/sourcemap.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/examples/pow.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/register.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/repl.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/lib/fs-plus.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/lib/async.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/examples/pow.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/bin.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/rimraf.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/Makefile.dryice.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/assert-shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/mini-require.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/suffix-browser.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/test-prefix.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build/test-suffix.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/array-set.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/base64-vlq.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/base64.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/binary-search.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/mapping-list.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-map-consumer.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-map-generator.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/source-node.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map/util.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/amdefine.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/intercept.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/behavior.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/emissary.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/emitter.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/helpers.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/signal.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/subscriber.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/lib/subscription.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js",
+        "node_modules/space-pen/node_modules/jquery/dist/jquery.js",
+        "node_modules/space-pen/node_modules/jquery/dist/jquery.min.js",
+        "node_modules/space-pen/node_modules/jquery/src/ajax/jsonp.js",
+        "node_modules/space-pen/node_modules/jquery/src/ajax/load.js",
+        "node_modules/space-pen/node_modules/jquery/src/ajax/parseJSON.js",
+        "node_modules/space-pen/node_modules/jquery/src/ajax/parseXML.js",
+        "node_modules/space-pen/node_modules/jquery/src/ajax/script.js",
+        "node_modules/space-pen/node_modules/jquery/src/ajax/var/nonce.js",
+        "node_modules/space-pen/node_modules/jquery/src/ajax/var/rquery.js",
+        "node_modules/space-pen/node_modules/jquery/src/ajax/xhr.js",
+        "node_modules/space-pen/node_modules/jquery/src/ajax.js",
+        "node_modules/space-pen/node_modules/jquery/src/attributes/attr.js",
+        "node_modules/space-pen/node_modules/jquery/src/attributes/classes.js",
+        "node_modules/space-pen/node_modules/jquery/src/attributes/prop.js",
+        "node_modules/space-pen/node_modules/jquery/src/attributes/support.js",
+        "node_modules/space-pen/node_modules/jquery/src/attributes/val.js",
+        "node_modules/space-pen/node_modules/jquery/src/attributes.js",
+        "node_modules/space-pen/node_modules/jquery/src/callbacks.js",
+        "node_modules/space-pen/node_modules/jquery/src/core/access.js",
+        "node_modules/space-pen/node_modules/jquery/src/core/init.js",
+        "node_modules/space-pen/node_modules/jquery/src/core/parseHTML.js",
+        "node_modules/space-pen/node_modules/jquery/src/core/ready.js",
+        "node_modules/space-pen/node_modules/jquery/src/core/var/rsingleTag.js",
+        "node_modules/space-pen/node_modules/jquery/src/core.js",
+        "node_modules/space-pen/node_modules/jquery/src/css/addGetHookIf.js",
+        "node_modules/space-pen/node_modules/jquery/src/css/curCSS.js",
+        "node_modules/space-pen/node_modules/jquery/src/css/defaultDisplay.js",
+        "node_modules/space-pen/node_modules/jquery/src/css/hiddenVisibleSelectors.js",
+        "node_modules/space-pen/node_modules/jquery/src/css/support.js",
+        "node_modules/space-pen/node_modules/jquery/src/css/swap.js",
+        "node_modules/space-pen/node_modules/jquery/src/css/var/cssExpand.js",
+        "node_modules/space-pen/node_modules/jquery/src/css/var/getStyles.js",
+        "node_modules/space-pen/node_modules/jquery/src/css/var/isHidden.js",
+        "node_modules/space-pen/node_modules/jquery/src/css/var/rmargin.js",
+        "node_modules/space-pen/node_modules/jquery/src/css/var/rnumnonpx.js",
+        "node_modules/space-pen/node_modules/jquery/src/css.js",
+        "node_modules/space-pen/node_modules/jquery/src/data/Data.js",
+        "node_modules/space-pen/node_modules/jquery/src/data/accepts.js",
+        "node_modules/space-pen/node_modules/jquery/src/data/var/data_priv.js",
+        "node_modules/space-pen/node_modules/jquery/src/data/var/data_user.js",
+        "node_modules/space-pen/node_modules/jquery/src/data.js",
+        "node_modules/space-pen/node_modules/jquery/src/deferred.js",
+        "node_modules/space-pen/node_modules/jquery/src/deprecated.js",
+        "node_modules/space-pen/node_modules/jquery/src/dimensions.js",
+        "node_modules/space-pen/node_modules/jquery/src/effects/Tween.js",
+        "node_modules/space-pen/node_modules/jquery/src/effects/animatedSelector.js",
+        "node_modules/space-pen/node_modules/jquery/src/effects.js",
+        "node_modules/space-pen/node_modules/jquery/src/event/ajax.js",
+        "node_modules/space-pen/node_modules/jquery/src/event/alias.js",
+        "node_modules/space-pen/node_modules/jquery/src/event/support.js",
+        "node_modules/space-pen/node_modules/jquery/src/event.js",
+        "node_modules/space-pen/node_modules/jquery/src/exports/amd.js",
+        "node_modules/space-pen/node_modules/jquery/src/exports/global.js",
+        "node_modules/space-pen/node_modules/jquery/src/intro.js",
+        "node_modules/space-pen/node_modules/jquery/src/jquery.js",
+        "node_modules/space-pen/node_modules/jquery/src/manipulation/_evalUrl.js",
+        "node_modules/space-pen/node_modules/jquery/src/manipulation/support.js",
+        "node_modules/space-pen/node_modules/jquery/src/manipulation/var/rcheckableType.js",
+        "node_modules/space-pen/node_modules/jquery/src/manipulation.js",
+        "node_modules/space-pen/node_modules/jquery/src/offset.js",
+        "node_modules/space-pen/node_modules/jquery/src/outro.js",
+        "node_modules/space-pen/node_modules/jquery/src/queue/delay.js",
+        "node_modules/space-pen/node_modules/jquery/src/queue.js",
+        "node_modules/space-pen/node_modules/jquery/src/selector-native.js",
+        "node_modules/space-pen/node_modules/jquery/src/selector-sizzle.js",
+        "node_modules/space-pen/node_modules/jquery/src/selector.js",
+        "node_modules/space-pen/node_modules/jquery/src/serialize.js",
+        "node_modules/space-pen/node_modules/jquery/src/sizzle/dist/sizzle.js",
+        "node_modules/space-pen/node_modules/jquery/src/sizzle/dist/sizzle.min.js",
+        "node_modules/space-pen/node_modules/jquery/src/traversing/findFilter.js",
+        "node_modules/space-pen/node_modules/jquery/src/traversing/var/rneedsContext.js",
+        "node_modules/space-pen/node_modules/jquery/src/traversing.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/arr.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/class2type.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/concat.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/hasOwn.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/indexOf.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/pnum.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/push.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/rnotwhite.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/slice.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/strundefined.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/support.js",
+        "node_modules/space-pen/node_modules/jquery/src/var/toString.js",
+        "node_modules/space-pen/node_modules/jquery/src/wrap.js",
+        "node_modules/underscore-plus/lib/underscore-plus.js",
+        "node_modules/underscore-plus/node_modules/underscore/underscore-min.js",
+        "node_modules/underscore-plus/node_modules/underscore/underscore.js"
+      ],
+      ".json": [
+        "node_modules/atom-space-pen-views/node_modules/fuzzaldrin/package.json",
+        "node_modules/atom-space-pen-views/package.json",
+        "node_modules/event-kit/api.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/package.json",
+        "node_modules/event-kit/node_modules/grim/package.json",
+        "node_modules/event-kit/package.json",
+        "node_modules/space-pen/api.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/node_modules/mkdirp/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/component.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/async/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/mkdirp/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/node_modules/rimraf/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/node_modules/amdefine/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json",
+        "node_modules/space-pen/node_modules/grim/node_modules/emissary/package.json",
+        "node_modules/space-pen/node_modules/grim/package.json",
+        "node_modules/space-pen/node_modules/jquery/bower.json",
+        "node_modules/space-pen/node_modules/jquery/package.json",
+        "node_modules/space-pen/package.json",
+        "node_modules/underscore-plus/node_modules/underscore/package.json",
+        "node_modules/underscore-plus/package.json",
+        "package.json"
+      ]
+    },
+    "folders": [
+      {
+        "paths": [
+          "lib",
+          "",
+          "spec"
+        ],
+        "dependencies": {
+          "underscore-plus": "1.x",
+          "event-kit": "^0.7.2",
+          "space-pen": "^5.1.1",
+          "atom-space-pen-views": "^2.0.4"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/atom-space-pen-views/lib",
+          "node_modules/atom-space-pen-views"
+        ],
+        "dependencies": {
+          "fuzzaldrin": "^2.1.0",
+          "space-pen": "^5.0.1"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit",
+          "node_modules/event-kit/lib"
+        ],
+        "dependencies": {
+          "grim": "^0.12.0"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/lib",
+          "node_modules/event-kit/node_modules/grim"
+        ],
+        "dependencies": {
+          "underscore-plus": "^1.0.0",
+          "emissary": "^1.2.0"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary"
+        ],
+        "dependencies": {
+          "underscore-plus": "1.x",
+          "mixto": "1.x",
+          "property-accessors": "^1.1",
+          "es6-weak-map": "^0.1.2"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test"
+        ],
+        "dependencies": {
+          "d": "~0.1.1",
+          "es5-ext": "~0.10.6",
+          "es6-iterator": "~0.1.3",
+          "es6-symbol": "~2.0.1"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test"
+        ],
+        "dependencies": {
+          "es5-ext": "~0.10.2"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw"
+        ],
+        "dependencies": {
+          "es6-iterator": "~0.1.3",
+          "es6-symbol": "~2.0.1"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test"
+        ],
+        "dependencies": {
+          "d": "~0.1.1",
+          "es5-ext": "~0.10.5",
+          "es6-symbol": "~2.0.1"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test"
+        ],
+        "dependencies": {
+          "d": "~0.1.1",
+          "es5-ext": "~0.10.5"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors"
+        ],
+        "dependencies": {
+          "mixto": "1.x",
+          "es6-weak-map": "^0.1.2"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen",
+          "node_modules/space-pen/lib"
+        ],
+        "dependencies": {
+          "grim": "^1.0.0",
+          "jquery": "^2.1.3",
+          "underscore-plus": "1.x"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/lib",
+          "node_modules/space-pen/node_modules/grim"
+        ],
+        "dependencies": {
+          "coffeestack": "^1",
+          "emissary": "^1.2.0"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/node_modules/coffeestack"
+        ],
+        "dependencies": {
+          "coffee-script": "~1.8.0",
+          "fs-plus": "^2.5.0",
+          "source-map": "~0.1.43"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script/lib/coffee-script",
+          "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/coffee-script"
+        ],
+        "dependencies": {
+          "mkdirp": "~0.3.5"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus/lib",
+          "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/fs-plus"
+        ],
+        "dependencies": {
+          "underscore-plus": "1.x",
+          "mkdirp": "~0.3.5",
+          "rimraf": "~2.2.2",
+          "async": "~0.2.9"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map",
+          "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/build",
+          "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib/source-map",
+          "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/lib",
+          "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test",
+          "node_modules/space-pen/node_modules/grim/node_modules/coffeestack/node_modules/source-map/test/source-map"
+        ],
+        "dependencies": {
+          "amdefine": ">=0.0.4"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/lib",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary"
+        ],
+        "dependencies": {
+          "underscore-plus": "1.x",
+          "mixto": "1.x",
+          "property-accessors": "^1.1",
+          "es6-weak-map": "^0.1.2"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test"
+        ],
+        "dependencies": {
+          "d": "~0.1.1",
+          "es5-ext": "~0.10.6",
+          "es6-iterator": "~0.1.3",
+          "es6-symbol": "~2.0.1"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test"
+        ],
+        "dependencies": {
+          "es5-ext": "~0.10.2"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw"
+        ],
+        "dependencies": {
+          "es6-iterator": "~0.1.3",
+          "es6-symbol": "~2.0.1"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test"
+        ],
+        "dependencies": {
+          "d": "~0.1.1",
+          "es5-ext": "~0.10.5",
+          "es6-symbol": "~2.0.1"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test"
+        ],
+        "dependencies": {
+          "d": "~0.1.1",
+          "es5-ext": "~0.10.5"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib",
+          "node_modules/space-pen/node_modules/grim/node_modules/emissary/node_modules/property-accessors"
+        ],
+        "dependencies": {
+          "mixto": "1.x",
+          "es6-weak-map": "^0.1.2"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/underscore-plus/lib",
+          "node_modules/underscore-plus"
+        ],
+        "dependencies": {
+          "underscore": "~1.6.0"
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/atom/packages/ex-mode/spec/ex-mode-spec.coffee b/atom/packages/ex-mode/spec/ex-mode-spec.coffee
new file mode 100644 (file)
index 0000000..bbc7fd7
--- /dev/null
@@ -0,0 +1,62 @@
+ExMode = require '../lib/ex-mode'
+
+# Use the command `window:run-package-specs` (cmd-alt-ctrl-p) to run specs.
+#
+# To run a specific `it` or `describe` block add an `f` to the front (e.g. `fit`
+# or `fdescribe`). Remove the `f` to unfocus the block.
+
+describe "ExMode", ->
+  [workspaceElement, activationPromise] = []
+
+  beforeEach ->
+    workspaceElement = atom.views.getView(atom.workspace)
+    activationPromise = atom.packages.activatePackage('ex-mode')
+
+  describe "when the ex-mode:toggle event is triggered", ->
+    it "hides and shows the modal panel", ->
+      # Before the activation event the view is not on the DOM, and no panel
+      # has been created
+      expect(workspaceElement.querySelector('.ex-mode')).not.toExist()
+
+      # This is an activation event, triggering it will cause the package to be
+      # activated.
+      atom.commands.dispatch workspaceElement, 'ex-mode:toggle'
+
+      waitsForPromise ->
+        activationPromise
+
+      runs ->
+        expect(workspaceElement.querySelector('.ex-mode')).toExist()
+
+        exModeElement = workspaceElement.querySelector('.ex-mode')
+        expect(exModeElement).toExist()
+
+        exModePanel = atom.workspace.panelForItem(exModeElement)
+        expect(exModePanel.isVisible()).toBe true
+        atom.commands.dispatch workspaceElement, 'ex-mode:toggle'
+        expect(exModePanel.isVisible()).toBe false
+
+    it "hides and shows the view", ->
+      # This test shows you an integration test testing at the view level.
+
+      # Attaching the workspaceElement to the DOM is required to allow the
+      # `toBeVisible()` matchers to work. Anything testing visibility or focus
+      # requires that the workspaceElement is on the DOM. Tests that attach the
+      # workspaceElement to the DOM are generally slower than those off DOM.
+      jasmine.attachToDOM(workspaceElement)
+
+      expect(workspaceElement.querySelector('.ex-mode')).not.toExist()
+
+      # This is an activation event, triggering it causes the package to be
+      # activated.
+      atom.commands.dispatch workspaceElement, 'ex-mode:toggle'
+
+      waitsForPromise ->
+        activationPromise
+
+      runs ->
+        # Now we can test for view visibility
+        exModeElement = workspaceElement.querySelector('.ex-mode')
+        expect(exModeElement).toBeVisible()
+        atom.commands.dispatch workspaceElement, 'ex-mode:toggle'
+        expect(exModeElement).not.toBeVisible()
diff --git a/atom/packages/ex-mode/spec/ex-mode-view-spec.coffee b/atom/packages/ex-mode/spec/ex-mode-view-spec.coffee
new file mode 100644 (file)
index 0000000..d94ddf1
--- /dev/null
@@ -0,0 +1,5 @@
+ExModeView = require '../lib/ex-mode-view'
+
+describe "ExModeView", ->
+  it "has one valid test", ->
+    expect("life").toBe "easy"
diff --git a/atom/packages/ex-mode/styles/ex-mode.less b/atom/packages/ex-mode/styles/ex-mode.less
new file mode 100644 (file)
index 0000000..da5d1df
--- /dev/null
@@ -0,0 +1,8 @@
+// The ui-variables file is provided by base themes provided by Atom.
+//
+// See https://github.com/atom/atom-dark-ui/blob/master/styles/ui-variables.less
+// for a full listing of what's available.
+@import "ui-variables";
+
+.ex-mode {
+}
diff --git a/atom/packages/relative-line-numbers/.npmignore b/atom/packages/relative-line-numbers/.npmignore
new file mode 100644 (file)
index 0000000..ade14b9
--- /dev/null
@@ -0,0 +1,3 @@
+.DS_Store
+npm-debug.log
+node_modules
diff --git a/atom/packages/relative-line-numbers/CHANGELOG.md b/atom/packages/relative-line-numbers/CHANGELOG.md
new file mode 100644 (file)
index 0000000..fe9b511
--- /dev/null
@@ -0,0 +1,7 @@
+## 0.1.3
+* Clean up
+
+## 0.1.2
+* Relative line numbers are now loaded by default.
+
+## 0.1.0 - Initial release
diff --git a/atom/packages/relative-line-numbers/LICENSE.md b/atom/packages/relative-line-numbers/LICENSE.md
new file mode 100644 (file)
index 0000000..d343bd8
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2015 Robert van Steen
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+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/atom/packages/relative-line-numbers/README.md b/atom/packages/relative-line-numbers/README.md
new file mode 100644 (file)
index 0000000..1ada251
--- /dev/null
@@ -0,0 +1,4 @@
+# relative-line-numbers package
+
+Replaces the regular line numbers with relative numbers.
+Also has an option to show the true number on the current line.
diff --git a/atom/packages/relative-line-numbers/lib/line-number-view.coffee b/atom/packages/relative-line-numbers/lib/line-number-view.coffee
new file mode 100644 (file)
index 0000000..6346a3c
--- /dev/null
@@ -0,0 +1,61 @@
+{CompositeDisposable} = require 'atom'
+
+module.exports =
+class LineNumberView
+  constructor: (@editor) ->
+    @subscriptions = new CompositeDisposable()
+    @editorView = atom.views.getView(@editor)
+    @trueNumberCurrentLine = atom.config.get('relative-line-numbers.trueNumberCurrentLine')
+    @showNormalLineNumbers = atom.config.get('relative-line-numbers.showNormalLineNumbers')
+
+    # Subscribe for when the line numbers should be updated.
+    @subscriptions.add(@editor.onDidChangeCursorPosition(@_update))
+    @subscriptions.add(@editor.onDidStopChanging(@_update))
+
+    # Subscribe to when the true number on current line config is modified.
+    @subscriptions.add atom.config.onDidChange 'relative-line-numbers.trueNumberCurrentLine', =>
+      @trueNumberCurrentLine = atom.config.get('relative-line-numbers.trueNumberCurrentLine')
+      @_update()
+
+    # Subscribe to when the show normal line numbers config is modified.
+    @subscriptions.add atom.config.onDidChange 'relative-line-numbers.showNormalLineNumbers', =>
+      @showNormalLineNumbers = atom.config.get('relative-line-numbers.showNormalLineNumbers')
+      @_update()
+
+   # Dispose the subscriptions when the editor is destroyed.
+    @subscriptions.add @editor.onDidDestroy =>
+      @subscriptions.dispose()
+
+    @_update()
+
+  _spacer: (totalLines, currentIndex) ->
+    Array(totalLines.toString().length - currentIndex.toString().length + 1).join ' '
+
+  # Update the line numbers on the editor
+  _update: () =>
+    totalLines = @editor.getLineCount()
+    currentLineNumber = @editor.getCursorScreenPosition().row + 1
+    lineNumberElements = @editorView.rootElement?.querySelectorAll('.line-number')
+
+    index = @_index(totalLines, currentLineNumber)
+
+    for lineNumberElement in lineNumberElements
+      row = lineNumberElement.getAttribute('data-buffer-row')
+      relative = index[row] or = 0
+      normalLineNumbers = ''
+      if @showNormalLineNumbers
+        humanRow = parseInt(row) + 1
+        normalLineNumbers = humanRow + @_spacer(totalLines, humanRow) + " "
+      lineNumberElement.innerHTML = "#{normalLineNumbers}#{relative}<div class=\"icon-right\"></div>"
+
+  # Return a lookup  array with the relative line numbers
+  _index: (totalLines, currentLineNumber) ->
+    for line in [0...totalLines]
+      lineNumber = (Math.abs(currentLineNumber - (line + 1)))
+      if @trueNumberCurrentLine and lineNumber == 0
+        if @showNormalLineNumbers
+          '•'
+        else
+          currentLineNumber
+      else
+        lineNumber
diff --git a/atom/packages/relative-line-numbers/lib/relative-line-numbers.coffee b/atom/packages/relative-line-numbers/lib/relative-line-numbers.coffee
new file mode 100644 (file)
index 0000000..34fd190
--- /dev/null
@@ -0,0 +1,24 @@
+LineNumberView = require './line-number-view'
+
+module.exports =
+  # Config schema
+  config:
+    trueNumberCurrentLine:
+      type: 'boolean'
+      default: true
+      description: 'Show the true number on the current line'
+    showNormalLineNumbers:
+      type: 'boolean'
+      default: true
+      description: 'Show normal line numbers'
+
+  configDefaults:
+    trueNumberCurrentLine: true
+    showNormalLineNumbers: true
+
+  activate: (state) ->
+    console.log('Activiating relative line numbers.');
+    atom.workspace.observeTextEditors (editor) ->
+      new LineNumberView(editor)
+
+  deactive: () ->
diff --git a/atom/packages/relative-line-numbers/package.json b/atom/packages/relative-line-numbers/package.json
new file mode 100644 (file)
index 0000000..c367c08
--- /dev/null
@@ -0,0 +1,40 @@
+{
+  "name": "relative-line-numbers",
+  "main": "./lib/relative-line-numbers",
+  "version": "0.1.5",
+  "description": "Relative line numbers for Atom",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/rovansteen/atom-relative-line-numbers"
+  },
+  "license": "MIT",
+  "activationEvents": [],
+  "engines": {
+    "atom": ">=0.174.0 <2.0.0"
+  },
+  "dependencies": {},
+  "readme": "# relative-line-numbers package\n\nReplaces the regular line numbers with relative numbers.\nAlso has an option to show the true number on the current line.\n",
+  "readmeFilename": "README.md",
+  "bugs": {
+    "url": "https://github.com/rovansteen/atom-relative-line-numbers/issues"
+  },
+  "homepage": "https://github.com/rovansteen/atom-relative-line-numbers",
+  "_id": "relative-line-numbers@0.1.5",
+  "_shasum": "0ac976da8ee9a717118a60ade739820b9f0af0b4",
+  "_resolved": "file:../d-11567-50205-nqln2s/package.tgz",
+  "_from": "../d-11567-50205-nqln2s/package.tgz",
+  "_atomModuleCache": {
+    "version": 1,
+    "dependencies": [],
+    "extensions": {
+      ".coffee": [
+        "lib/line-number-view.coffee",
+        "lib/relative-line-numbers.coffee"
+      ],
+      ".json": [
+        "package.json"
+      ]
+    },
+    "folders": []
+  }
+}
\ No newline at end of file
diff --git a/atom/packages/vim-mode-visual-block/.npmignore b/atom/packages/vim-mode-visual-block/.npmignore
new file mode 100644 (file)
index 0000000..ade14b9
--- /dev/null
@@ -0,0 +1,3 @@
+.DS_Store
+npm-debug.log
+node_modules
diff --git a/atom/packages/vim-mode-visual-block/CHANGELOG.md b/atom/packages/vim-mode-visual-block/CHANGELOG.md
new file mode 100644 (file)
index 0000000..f89e8de
--- /dev/null
@@ -0,0 +1,22 @@
+## 0.2.7 - Improve
+* `ctrl-v` within visual-block now work same as escape. #1
+
+## 0.2.6 - Fix Typo
+* Fix README.md typo.
+
+## 0.2.5 - Improve
+* Add provide default keymap.
+* No longer use `vimState.resetCommandMode()`.
+* No longer manage explicit @active state.
+* Improve resetting @startRow.
+* [FIX] selection range got wrong in some case.
+
+## 0.2.4 - Stability improve
+* Never accidentally destroy(), last cursor()
+
+## 0.2.3 - GIF update.
+## 0.2.2 - Improve `I`, `A` further
+## 0.2.1 - Improve `I`, `A`.
+## 0.2.0 - Rename Package name
+## 0.1.1 - Doc update.
+## 0.1.0 - First Release
diff --git a/atom/packages/vim-mode-visual-block/LICENSE.md b/atom/packages/vim-mode-visual-block/LICENSE.md
new file mode 100644 (file)
index 0000000..460e084
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2015 t9md
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+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/atom/packages/vim-mode-visual-block/README.md b/atom/packages/vim-mode-visual-block/README.md
new file mode 100644 (file)
index 0000000..1be6782
--- /dev/null
@@ -0,0 +1,27 @@
+# vim-mode-visual-block
+
+Add visual-block operation to [vim-mode](https://atom.io/packages/vim-mode).
+
+![gif](https://raw.githubusercontent.com/t9md/t9md/375d45f661b76cd8fd874dbcacf93602e7d75c99/img/vim-mode-visual-blockwise.gif)
+
+# What's this?
+
+**Temporarily** workaround, until vim-mode support visual block mode natively.
+I'm not intended to complete solution.
+
+# Keymap
+
+From version 0.2.5, starting to provide [default keymap](https://github.com/t9md/atom-vim-mode-visual-block/blob/master/keymaps/vim-mode-visual-block.cson).  
+
+For older version user
+* Remove explicit keymap from `keymap.cson` and use default keymap.
+
+# Limitation
+- Currently yank and paste for block range is not suppoted.
+- No support for non-contiguous multi selection.
+
+# Todo
+* [x] Precise state check when escape from visual-block.
+* [x] Support other insert-mode initiator like `a`, `i`, `C`.
+* [ ] Yank and paste support.
+* [ ] Concatenate undo transaction?.
diff --git a/atom/packages/vim-mode-visual-block/keymaps/vim-mode-visual-block.cson b/atom/packages/vim-mode-visual-block/keymaps/vim-mode-visual-block.cson
new file mode 100644 (file)
index 0000000..e896074
--- /dev/null
@@ -0,0 +1,12 @@
+'atom-text-editor.vim-mode.visual-mode':
+  'o':      'vim-mode-visual-block:o'
+  'j':      'vim-mode-visual-block:j'
+  'k':      'vim-mode-visual-block:k'
+  'D':      'vim-mode-visual-block:D'
+  'C':      'vim-mode-visual-block:C'
+  'I':      'vim-mode-visual-block:I'
+  'A':      'vim-mode-visual-block:A'
+  'escape': 'vim-mode-visual-block:escape'
+  'ctrl-[': 'vim-mode-visual-block:escape'
+  'ctrl-c': 'vim-mode-visual-block:escape'
+  'ctrl-v': 'vim-mode-visual-block:ctrl-v'
diff --git a/atom/packages/vim-mode-visual-block/lib/main.coffee b/atom/packages/vim-mode-visual-block/lib/main.coffee
new file mode 100644 (file)
index 0000000..61cfe76
--- /dev/null
@@ -0,0 +1,158 @@
+_ = require 'underscore-plus'
+{CompositeDisposable} = require 'atom'
+
+Config =
+  debug:
+    type: 'boolean'
+    default: false
+
+module.exports =
+  disposables: null
+  active:      false
+  prefix:      'vim-mode-visual-block'
+
+  activate: (state) ->
+    @disposables = new CompositeDisposable
+    blockwiseCommands = {}
+    # [TODO] remove 'h', 'l'  after some period.
+    commands = 'jkhloDCIA'.split('')
+    commands.push 'escape', 'ctrl-v'
+    for command in commands
+      do (command) =>
+        name = "#{@prefix}:#{command}"
+        blockwiseCommands[name] = (event) => @blockOperation(event, command)
+
+    blockwiseCommands["#{@prefix}:toggle-debug"] = => @toggleDebug()
+    @disposables.add atom.commands.add('atom-text-editor', blockwiseCommands)
+    @reset()
+
+  deactivate: ->
+    @disposables.dispose()
+
+  consumeVimMode: (@vimModeService) ->
+
+  reset: ->
+    @startRow = null
+
+  getEditor: ->
+    atom.workspace.getActiveTextEditor()
+
+  isVisualBlockMode: (vimState) ->
+    (vimState.mode is 'visual') and (vimState.submode is 'blockwise')
+
+  getVimEditorState: (editor) ->
+    @vimModeService.getEditorState editor
+
+  adjustSelections: (editor, options) ->
+    for selection in editor.getSelections()
+      range = selection.getBufferRange()
+      selection.setBufferRange range, options
+
+  blockOperation: (event, command) ->
+    editor   = @getEditor()
+    vimState = @getVimEditorState editor
+
+    unless @isVisualBlockMode vimState
+      event.abortKeyBinding()
+      @reset()
+      return
+
+    # May be non-continuous execution.
+    if editor.getCursors().length is 1
+      @reset()
+
+    currentRow  = editor.getLastCursor()?.getBufferRow()
+    @startRow  ?= currentRow
+    # @debug "@startRow = #{@startRow}"
+
+    switch command
+      when 'o'
+        @startRow = currentRow
+      when 'D', 'C'
+        vimState.activateCommandMode()
+        event.abortKeyBinding()
+      when 'escape', 'ctrl-v'
+        vimState.activateCommandMode()
+        editor.clearSelections()
+      when 'j', 'k'
+        cursorPositions = editor.getCursorsOrderedByBufferPosition()
+        cursorTop       = _.first cursorPositions
+        cursorBottom    = _.last cursorPositions
+
+        if (command is 'j' and cursorTop.getBufferRow() >= @startRow) or
+            (command is 'k' and cursorBottom.getBufferRow() <= @startRow)
+          lastSelection = editor.getLastSelection()
+
+          if command is 'j'
+            editor.addSelectionBelow()
+          else
+            editor.addSelectionAbove()
+
+          # [FIXME]
+          # When addSelectionAbove(), addSelectionBelow() doesn't respect
+          # reversed stated, need improved.
+          #
+          # and one more..
+          #
+          # When selection is NOT empty and add selection by addSelectionAbove()
+          # and then move right, selection range got wrong, maybe this is bug..
+          @adjustSelections editor, reversed: lastSelection.isReversed()
+        else
+          # [FIXME]
+          # Guard to not destroying last cursor
+          # This guard is no longer needed
+          # Remove unnecessary code after re-think.
+          if (editor.getCursors().length < 2)
+            @reset()
+            return
+
+          if command is 'j'
+            cursorTop.destroy()
+          else
+            cursorBottom.destroy()
+      when 'I', 'A'
+        cursorsAdjusted = []
+
+        adjustCursor = (selection) ->
+          {start, end} = selection.getBufferRange()
+          pointEndOfLine = editor.bufferRangeForBufferRow(start.row).end
+          pointTarget    = {'I': start, 'A': end}[command]
+          {cursor}       = selection
+
+          if pointTarget.isGreaterThanOrEqual(pointEndOfLine)
+            pointTarget = pointEndOfLine
+            cursorsAdjusted.push cursor
+          cursor.setBufferPosition(pointTarget)
+
+        adjustCursor(selection) for selection in editor.getSelections()
+        vimState.activateCommandMode()
+        vimState.activateInsertMode()
+
+        if command is 'A' and  cursorsAdjusted.length
+          cursor.moveRight() for cursor in cursorsAdjusted
+
+      else
+        event.abortKeyBinding()
+        content = """
+          *#{@prefix}*
+          * From version 0.2.5, `#{@prefix}` provide default keymap.
+          * And `h`, `l` command become obsolete.
+          * Remove all explicit keymap from `keymap.cson`.
+          """
+        atom.notifications.addWarning content, dismissable: true
+
+    unless @isVisualBlockMode vimState
+      @reset()
+
+  toggleDebug: ->
+    oldState = atom.config.get("#{@prefix}.debug")
+    atom.config.set("#{@prefix}.debug", not oldState)
+    state = atom.config.get("#{@prefix}.debug") and "enabled" or "disabled"
+    console.log "#{@prefix}: debug #{state}"
+
+  debug: (msg) ->
+    return unless atom.config.get("#{@prefix}.debug")
+    console.log msg
+
+  # dump: ->
+  #   @debug "@startRow = #{@startRow}"
diff --git a/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/LICENSE.md b/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/README.md b/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/README.md
new file mode 100644 (file)
index 0000000..dd7b4c0
--- /dev/null
@@ -0,0 +1,14 @@
+# underscore-plus [![Build Status](https://travis-ci.org/atom/underscore-plus.svg?branch=master)](https://travis-ci.org/atom/underscore-plus)
+
+Takes the great [underscore](http://underscorejs.org/) library and adds a few
+more things.
+
+## Using
+
+```sh
+npm install underscore-plus
+```
+
+```coffeescript
+_ = require 'underscore-plus' # Has all underscore methods and more
+```
diff --git a/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/lib/underscore-plus.js b/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/lib/underscore-plus.js
new file mode 100644 (file)
index 0000000..32eb482
--- /dev/null
@@ -0,0 +1,522 @@
+(function() {
+  var isEqual, isPlainObject, macModifierKeyMap, nonMacModifierKeyMap, plus, shiftKeyMap, splitKeyPath, _,
+    __slice = [].slice;
+
+  _ = require('underscore');
+
+  macModifierKeyMap = {
+    cmd: '\u2318',
+    ctrl: '\u2303',
+    alt: '\u2325',
+    option: '\u2325',
+    shift: '\u21e7',
+    enter: '\u23ce',
+    left: '\u2190',
+    right: '\u2192',
+    up: '\u2191',
+    down: '\u2193'
+  };
+
+  nonMacModifierKeyMap = {
+    cmd: 'Cmd',
+    ctrl: 'Ctrl',
+    alt: 'Alt',
+    option: 'Alt',
+    shift: 'Shift',
+    enter: 'Enter',
+    left: 'Left',
+    right: 'Right',
+    up: 'Up',
+    down: 'Down'
+  };
+
+  shiftKeyMap = {
+    '~': '`',
+    '_': '-',
+    '+': '=',
+    '|': '\\',
+    '{': '[',
+    '}': ']',
+    ':': ';',
+    '"': '\'',
+    '<': ',',
+    '>': '.',
+    '?': '/'
+  };
+
+  splitKeyPath = function(keyPath) {
+    var char, i, keyPathArray, startIndex, _i, _len;
+    startIndex = 0;
+    keyPathArray = [];
+    if (keyPath == null) {
+      return keyPathArray;
+    }
+    for (i = _i = 0, _len = keyPath.length; _i < _len; i = ++_i) {
+      char = keyPath[i];
+      if (char === '.' && (i === 0 || keyPath[i - 1] !== '\\')) {
+        keyPathArray.push(keyPath.substring(startIndex, i));
+        startIndex = i + 1;
+      }
+    }
+    keyPathArray.push(keyPath.substr(startIndex, keyPath.length));
+    return keyPathArray;
+  };
+
+  isPlainObject = function(value) {
+    return _.isObject(value) && !_.isArray(value);
+  };
+
+  plus = {
+    adviseBefore: function(object, methodName, advice) {
+      var original;
+      original = object[methodName];
+      return object[methodName] = function() {
+        var args;
+        args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+        if (advice.apply(this, args) !== false) {
+          return original.apply(this, args);
+        }
+      };
+    },
+    camelize: function(string) {
+      if (string) {
+        return string.replace(/[_-]+(\w)/g, function(m) {
+          return m[1].toUpperCase();
+        });
+      } else {
+        return '';
+      }
+    },
+    capitalize: function(word) {
+      if (!word) {
+        return '';
+      }
+      if (word.toLowerCase() === 'github') {
+        return 'GitHub';
+      } else {
+        return word[0].toUpperCase() + word.slice(1);
+      }
+    },
+    compactObject: function(object) {
+      var key, newObject, value;
+      newObject = {};
+      for (key in object) {
+        value = object[key];
+        if (value != null) {
+          newObject[key] = value;
+        }
+      }
+      return newObject;
+    },
+    dasherize: function(string) {
+      if (!string) {
+        return '';
+      }
+      string = string[0].toLowerCase() + string.slice(1);
+      return string.replace(/([A-Z])|(_)/g, function(m, letter) {
+        if (letter) {
+          return "-" + letter.toLowerCase();
+        } else {
+          return "-";
+        }
+      });
+    },
+    deepClone: function(object) {
+      if (_.isArray(object)) {
+        return object.map(function(value) {
+          return plus.deepClone(value);
+        });
+      } else if (_.isObject(object) && !_.isFunction(object)) {
+        return plus.mapObject(object, (function(_this) {
+          return function(key, value) {
+            return [key, plus.deepClone(value)];
+          };
+        })(this));
+      } else {
+        return object;
+      }
+    },
+    deepExtend: function(target) {
+      var i, key, object, result, _i, _len, _ref;
+      result = target;
+      i = 0;
+      while (++i < arguments.length) {
+        object = arguments[i];
+        if (isPlainObject(result) && isPlainObject(object)) {
+          _ref = Object.keys(object);
+          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+            key = _ref[_i];
+            result[key] = plus.deepExtend(result[key], object[key]);
+          }
+        } else {
+          result = plus.deepClone(object);
+        }
+      }
+      return result;
+    },
+    deepContains: function(array, target) {
+      var object, _i, _len;
+      if (array == null) {
+        return false;
+      }
+      for (_i = 0, _len = array.length; _i < _len; _i++) {
+        object = array[_i];
+        if (_.isEqual(object, target)) {
+          return true;
+        }
+      }
+      return false;
+    },
+    endsWith: function(string, suffix) {
+      if (suffix == null) {
+        suffix = '';
+      }
+      if (string) {
+        return string.indexOf(suffix, string.length - suffix.length) !== -1;
+      } else {
+        return false;
+      }
+    },
+    escapeAttribute: function(string) {
+      if (string) {
+        return string.replace(/"/g, '&quot;').replace(/\n/g, '').replace(/\\/g, '-');
+      } else {
+        return '';
+      }
+    },
+    escapeRegExp: function(string) {
+      if (string) {
+        return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+      } else {
+        return '';
+      }
+    },
+    humanizeEventName: function(eventName, eventDoc) {
+      var event, namespace, namespaceDoc, _ref;
+      _ref = eventName.split(':'), namespace = _ref[0], event = _ref[1];
+      if (event == null) {
+        return plus.undasherize(namespace);
+      }
+      namespaceDoc = plus.undasherize(namespace);
+      if (eventDoc == null) {
+        eventDoc = plus.undasherize(event);
+      }
+      return "" + namespaceDoc + ": " + eventDoc;
+    },
+    humanizeKey: function(key, platform) {
+      var modifierKeyMap;
+      if (platform == null) {
+        platform = process.platform;
+      }
+      if (!key) {
+        return key;
+      }
+      modifierKeyMap = platform === 'darwin' ? macModifierKeyMap : nonMacModifierKeyMap;
+      if (modifierKeyMap[key]) {
+        return modifierKeyMap[key];
+      } else if (key.length === 1 && (shiftKeyMap[key] != null)) {
+        return [modifierKeyMap.shift, shiftKeyMap[key]];
+      } else if (key.length === 1 && key === key.toUpperCase() && key.toUpperCase() !== key.toLowerCase()) {
+        return [modifierKeyMap.shift, key.toUpperCase()];
+      } else if (key.length === 1 || /f[0-9]{1,2}/.test(key)) {
+        return key.toUpperCase();
+      } else {
+        if (platform === 'darwin') {
+          return key;
+        } else {
+          return plus.capitalize(key);
+        }
+      }
+    },
+    humanizeKeystroke: function(keystroke, platform) {
+      var humanizedKeystrokes, index, key, keys, keystrokes, splitKeystroke, _i, _j, _len, _len1;
+      if (platform == null) {
+        platform = process.platform;
+      }
+      if (!keystroke) {
+        return keystroke;
+      }
+      keystrokes = keystroke.split(' ');
+      humanizedKeystrokes = [];
+      for (_i = 0, _len = keystrokes.length; _i < _len; _i++) {
+        keystroke = keystrokes[_i];
+        keys = [];
+        splitKeystroke = keystroke.split('-');
+        for (index = _j = 0, _len1 = splitKeystroke.length; _j < _len1; index = ++_j) {
+          key = splitKeystroke[index];
+          if (key === '' && splitKeystroke[index - 1] === '') {
+            key = '-';
+          }
+          if (key) {
+            keys.push(plus.humanizeKey(key, platform));
+          }
+        }
+        keys = _.uniq(_.flatten(keys));
+        if (platform === 'darwin') {
+          keys = keys.join('');
+        } else {
+          keys = keys.join('+');
+        }
+        humanizedKeystrokes.push(keys);
+      }
+      return humanizedKeystrokes.join(' ');
+    },
+    isSubset: function(potentialSubset, potentialSuperset) {
+      return _.every(potentialSubset, function(element) {
+        return _.include(potentialSuperset, element);
+      });
+    },
+    losslessInvert: function(hash) {
+      var inverted, key, value;
+      inverted = {};
+      for (key in hash) {
+        value = hash[key];
+        if (inverted[value] == null) {
+          inverted[value] = [];
+        }
+        inverted[value].push(key);
+      }
+      return inverted;
+    },
+    mapObject: function(object, iterator) {
+      var key, newObject, value, _i, _len, _ref, _ref1;
+      newObject = {};
+      _ref = Object.keys(object);
+      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+        key = _ref[_i];
+        _ref1 = iterator(key, object[key]), key = _ref1[0], value = _ref1[1];
+        newObject[key] = value;
+      }
+      return newObject;
+    },
+    multiplyString: function(string, n) {
+      var finalString, i;
+      finalString = "";
+      i = 0;
+      while (i < n) {
+        finalString += string;
+        i++;
+      }
+      return finalString;
+    },
+    pluralize: function(count, singular, plural) {
+      if (count == null) {
+        count = 0;
+      }
+      if (plural == null) {
+        plural = singular + 's';
+      }
+      if (count === 1) {
+        return "" + count + " " + singular;
+      } else {
+        return "" + count + " " + plural;
+      }
+    },
+    remove: function(array, element) {
+      var index;
+      index = array.indexOf(element);
+      if (index >= 0) {
+        array.splice(index, 1);
+      }
+      return array;
+    },
+    setValueForKeyPath: function(object, keyPath, value) {
+      var key, keys;
+      keys = splitKeyPath(keyPath);
+      while (keys.length > 1) {
+        key = keys.shift();
+        if (object[key] == null) {
+          object[key] = {};
+        }
+        object = object[key];
+      }
+      if (value != null) {
+        return object[keys.shift()] = value;
+      } else {
+        return delete object[keys.shift()];
+      }
+    },
+    hasKeyPath: function(object, keyPath) {
+      var key, keys, _i, _len;
+      keys = splitKeyPath(keyPath);
+      for (_i = 0, _len = keys.length; _i < _len; _i++) {
+        key = keys[_i];
+        if (!object.hasOwnProperty(key)) {
+          return false;
+        }
+        object = object[key];
+      }
+      return true;
+    },
+    spliceWithArray: function(originalArray, start, length, insertedArray, chunkSize) {
+      var chunkStart, _i, _ref, _results;
+      if (chunkSize == null) {
+        chunkSize = 100000;
+      }
+      if (insertedArray.length < chunkSize) {
+        return originalArray.splice.apply(originalArray, [start, length].concat(__slice.call(insertedArray)));
+      } else {
+        originalArray.splice(start, length);
+        _results = [];
+        for (chunkStart = _i = 0, _ref = insertedArray.length; chunkSize > 0 ? _i <= _ref : _i >= _ref; chunkStart = _i += chunkSize) {
+          _results.push(originalArray.splice.apply(originalArray, [start + chunkStart, 0].concat(__slice.call(insertedArray.slice(chunkStart, chunkStart + chunkSize)))));
+        }
+        return _results;
+      }
+    },
+    sum: function(array) {
+      var elt, sum, _i, _len;
+      sum = 0;
+      for (_i = 0, _len = array.length; _i < _len; _i++) {
+        elt = array[_i];
+        sum += elt;
+      }
+      return sum;
+    },
+    uncamelcase: function(string) {
+      var result;
+      if (!string) {
+        return '';
+      }
+      result = string.replace(/([A-Z])|_+/g, function(match, letter) {
+        if (letter == null) {
+          letter = '';
+        }
+        return " " + letter;
+      });
+      return plus.capitalize(result.trim());
+    },
+    undasherize: function(string) {
+      if (string) {
+        return string.split('-').map(plus.capitalize).join(' ');
+      } else {
+        return '';
+      }
+    },
+    underscore: function(string) {
+      if (!string) {
+        return '';
+      }
+      string = string[0].toLowerCase() + string.slice(1);
+      return string.replace(/([A-Z])|-+/g, function(match, letter) {
+        if (letter == null) {
+          letter = '';
+        }
+        return "_" + (letter.toLowerCase());
+      });
+    },
+    valueForKeyPath: function(object, keyPath) {
+      var key, keys, _i, _len;
+      keys = splitKeyPath(keyPath);
+      for (_i = 0, _len = keys.length; _i < _len; _i++) {
+        key = keys[_i];
+        object = object[key];
+        if (object == null) {
+          return;
+        }
+      }
+      return object;
+    },
+    isEqual: function(a, b, aStack, bStack) {
+      if (_.isArray(aStack) && _.isArray(bStack)) {
+        return isEqual(a, b, aStack, bStack);
+      } else {
+        return isEqual(a, b);
+      }
+    },
+    isEqualForProperties: function() {
+      var a, b, properties, property, _i, _len;
+      a = arguments[0], b = arguments[1], properties = 3 <= arguments.length ? __slice.call(arguments, 2) : [];
+      for (_i = 0, _len = properties.length; _i < _len; _i++) {
+        property = properties[_i];
+        if (!_.isEqual(a[property], b[property])) {
+          return false;
+        }
+      }
+      return true;
+    }
+  };
+
+  isEqual = function(a, b, aStack, bStack) {
+    var aCtor, aCtorValid, aElement, aKeyCount, aValue, bCtor, bCtorValid, bKeyCount, bValue, equal, i, key, stackIndex, _i, _len;
+    if (aStack == null) {
+      aStack = [];
+    }
+    if (bStack == null) {
+      bStack = [];
+    }
+    if (a === b) {
+      return _.isEqual(a, b);
+    }
+    if (_.isFunction(a) || _.isFunction(b)) {
+      return _.isEqual(a, b);
+    }
+    stackIndex = aStack.length;
+    while (stackIndex--) {
+      if (aStack[stackIndex] === a) {
+        return bStack[stackIndex] === b;
+      }
+    }
+    aStack.push(a);
+    bStack.push(b);
+    equal = false;
+    if (_.isFunction(a != null ? a.isEqual : void 0)) {
+      equal = a.isEqual(b, aStack, bStack);
+    } else if (_.isFunction(b != null ? b.isEqual : void 0)) {
+      equal = b.isEqual(a, bStack, aStack);
+    } else if (_.isArray(a) && _.isArray(b) && a.length === b.length) {
+      equal = true;
+      for (i = _i = 0, _len = a.length; _i < _len; i = ++_i) {
+        aElement = a[i];
+        if (!isEqual(aElement, b[i], aStack, bStack)) {
+          equal = false;
+          break;
+        }
+      }
+    } else if (_.isRegExp(a) && _.isRegExp(b)) {
+      equal = _.isEqual(a, b);
+    } else if (_.isElement(a) && _.isElement(b)) {
+      equal = a === b;
+    } else if (_.isObject(a) && _.isObject(b)) {
+      aCtor = a.constructor;
+      bCtor = b.constructor;
+      aCtorValid = _.isFunction(aCtor) && aCtor instanceof aCtor;
+      bCtorValid = _.isFunction(bCtor) && bCtor instanceof bCtor;
+      if (aCtor !== bCtor && !(aCtorValid && bCtorValid)) {
+        equal = false;
+      } else {
+        aKeyCount = 0;
+        equal = true;
+        for (key in a) {
+          aValue = a[key];
+          if (!_.has(a, key)) {
+            continue;
+          }
+          aKeyCount++;
+          if (!(_.has(b, key) && isEqual(aValue, b[key], aStack, bStack))) {
+            equal = false;
+            break;
+          }
+        }
+        if (equal) {
+          bKeyCount = 0;
+          for (key in b) {
+            bValue = b[key];
+            if (_.has(b, key)) {
+              bKeyCount++;
+            }
+          }
+          equal = aKeyCount === bKeyCount;
+        }
+      }
+    } else {
+      equal = _.isEqual(a, b);
+    }
+    aStack.pop();
+    bStack.pop();
+    return equal;
+  };
+
+  module.exports = _.extend({}, _, plus);
+
+}).call(this);
diff --git a/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/LICENSE b/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/LICENSE
new file mode 100644 (file)
index 0000000..0d6b873
--- /dev/null
@@ -0,0 +1,23 @@
+Copyright (c) 2009-2014 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/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/README.md b/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/README.md
new file mode 100644 (file)
index 0000000..c2ba259
--- /dev/null
@@ -0,0 +1,22 @@
+                       __
+                      /\ \                                                         __
+     __  __    ___    \_\ \     __   _ __   ____    ___    ___   _ __    __       /\_\    ____
+    /\ \/\ \ /' _ `\  /'_  \  /'__`\/\  __\/ ,__\  / ___\ / __`\/\  __\/'__`\     \/\ \  /',__\
+    \ \ \_\ \/\ \/\ \/\ \ \ \/\  __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\  __/  __  \ \ \/\__, `\
+     \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/
+      \/___/  \/_/\/_/\/__,_ /\/____/ \/_/ \/___/  \/____/\/___/  \/_/ \/____/\/_//\ \_\ \/___/
+                                                                                  \ \____/
+                                                                                   \/___/
+
+Underscore.js is a utility-belt library for JavaScript that provides
+support for the usual functional suspects (each, map, reduce, filter...)
+without extending any core JavaScript objects.
+
+For Docs, License, Tests, and pre-packed downloads, see:
+http://underscorejs.org
+
+Underscore is an open-sourced component of DocumentCloud:
+https://github.com/documentcloud
+
+Many thanks to our contributors:
+https://github.com/jashkenas/underscore/contributors
diff --git a/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/package.json b/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/package.json
new file mode 100644 (file)
index 0000000..505b2f4
--- /dev/null
@@ -0,0 +1,67 @@
+{
+  "name": "underscore",
+  "description": "JavaScript's functional programming helper library.",
+  "homepage": "http://underscorejs.org",
+  "keywords": [
+    "util",
+    "functional",
+    "server",
+    "client",
+    "browser"
+  ],
+  "author": {
+    "name": "Jeremy Ashkenas",
+    "email": "jeremy@documentcloud.org"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/jashkenas/underscore.git"
+  },
+  "main": "underscore.js",
+  "version": "1.6.0",
+  "devDependencies": {
+    "docco": "0.6.x",
+    "phantomjs": "1.9.0-1",
+    "uglify-js": "2.4.x"
+  },
+  "scripts": {
+    "test": "phantomjs test/vendor/runner.js test/index.html?noglobals=true",
+    "build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js",
+    "doc": "docco underscore.js"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "https://raw.github.com/jashkenas/underscore/master/LICENSE"
+    }
+  ],
+  "files": [
+    "underscore.js",
+    "underscore-min.js",
+    "LICENSE"
+  ],
+  "bugs": {
+    "url": "https://github.com/jashkenas/underscore/issues"
+  },
+  "_id": "underscore@1.6.0",
+  "dist": {
+    "shasum": "8b38b10cacdef63337b8b24e4ff86d45aea529a8",
+    "tarball": "http://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz"
+  },
+  "_from": "underscore@>=1.6.0 <1.7.0",
+  "_npmVersion": "1.3.21",
+  "_npmUser": {
+    "name": "jashkenas",
+    "email": "jashkenas@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "jashkenas",
+      "email": "jashkenas@gmail.com"
+    }
+  ],
+  "directories": {},
+  "_shasum": "8b38b10cacdef63337b8b24e4ff86d45aea529a8",
+  "_resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/underscore-min.js b/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/underscore-min.js
new file mode 100644 (file)
index 0000000..3434d6c
--- /dev/null
@@ -0,0 +1,6 @@
+//     Underscore.js 1.6.0
+//     http://underscorejs.org
+//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,w=Object.keys,_=i.bind,j=function(n){return n instanceof j?n:this instanceof j?void(this._wrapped=n):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.6.0";var A=j.each=j.forEach=function(n,t,e){if(null==n)return n;if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return;return n};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var O="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},j.find=j.detect=function(n,t,r){var e;return k(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var k=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:k(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,j.property(t))},j.where=function(n,t){return j.filter(n,j.matches(t))},j.findWhere=function(n,t){return j.find(n,j.matches(t))},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);var e=-1/0,u=-1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;o>u&&(e=n,u=o)}),e},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);var e=1/0,u=1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;u>o&&(e=n,u=o)}),e},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e},j.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=j.values(n)),n[j.random(n.length-1)]):j.shuffle(n).slice(0,Math.max(0,t))};var E=function(n){return null==n?j.identity:j.isFunction(n)?n:j.property(n)};j.sortBy=function(n,t,r){return t=E(t),j.pluck(j.map(n,function(n,e,u){return{value:n,index:e,criteria:t.call(r,n,e,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=E(r),A(t,function(i,a){var o=r.call(e,i,a,t);n(u,o,i)}),u}};j.groupBy=F(function(n,t,r){j.has(n,t)?n[t].push(r):n[t]=[r]}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=E(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])<u?i=o+1:a=o}return i},j.toArray=function(n){return n?j.isArray(n)?o.call(n):n.length===+n.length?j.map(n,j.identity):j.values(n):[]},j.size=function(n){return null==n?0:n.length===+n.length?n.length:j.keys(n).length},j.first=j.head=j.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:0>t?[]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var M=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):M(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return M(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.partition=function(n,t){var r=[],e=[];return A(n,function(n){(t(n)?r:e).push(n)}),[r,e]},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.contains(t,n)})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===j&&(e[u]=arguments[r++]);for(;r<arguments.length;)e.push(arguments[r++]);return n.apply(this,e)}},j.bindAll=function(n){var t=o.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return A(t,function(t){n[t]=j.bind(n[t],n)}),n},j.memoize=function(n,t){var r={};return t||(t=j.identity),function(){var e=t.apply(this,arguments);return j.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},j.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},j.defer=function(n){return j.delay.apply(j,[n,1].concat(o.call(arguments,1)))},j.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var c=function(){o=r.leading===!1?0:j.now(),a=null,i=n.apply(e,u),e=u=null};return function(){var l=j.now();o||r.leading!==!1||(o=l);var f=t-(l-o);return e=this,u=arguments,0>=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u),e=u=null):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o,c=function(){var l=j.now()-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u),i=u=null))};return function(){i=this,u=arguments,a=j.now();var l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u),i=u=null),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return j.partial(t,n)},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=function(n){if(!j.isObject(n))return[];if(w)return w(n);var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o)&&"constructor"in n&&"constructor"in t)return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.constant=function(n){return function(){return n}},j.property=function(n){return function(t){return t[n]}},j.matches=function(n){return function(t){if(t===n)return!0;for(var r in n)if(n[r]!==t[r])return!1;return!0}},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},j.now=Date.now||function(){return(new Date).getTime()};var T={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"}};T.unescape=j.invert(T.escape);var I={escape:new RegExp("["+j.keys(T.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(T.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(I[n],function(t){return T[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","  ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),"function"==typeof define&&define.amd&&define("underscore",[],function(){return j})}).call(this);
+//# sourceMappingURL=underscore-min.map
\ No newline at end of file
diff --git a/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/underscore.js b/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/node_modules/underscore/underscore.js
new file mode 100644 (file)
index 0000000..9a4cabe
--- /dev/null
@@ -0,0 +1,1343 @@
+//     Underscore.js 1.6.0
+//     http://underscorejs.org
+//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+
+(function() {
+
+  // Baseline setup
+  // --------------
+
+  // Establish the root object, `window` in the browser, or `exports` on the server.
+  var root = this;
+
+  // Save the previous value of the `_` variable.
+  var previousUnderscore = root._;
+
+  // Establish the object that gets returned to break out of a loop iteration.
+  var breaker = {};
+
+  // Save bytes in the minified (but not gzipped) version:
+  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+  // Create quick reference variables for speed access to core prototypes.
+  var
+    push             = ArrayProto.push,
+    slice            = ArrayProto.slice,
+    concat           = ArrayProto.concat,
+    toString         = ObjProto.toString,
+    hasOwnProperty   = ObjProto.hasOwnProperty;
+
+  // All **ECMAScript 5** native function implementations that we hope to use
+  // are declared here.
+  var
+    nativeForEach      = ArrayProto.forEach,
+    nativeMap          = ArrayProto.map,
+    nativeReduce       = ArrayProto.reduce,
+    nativeReduceRight  = ArrayProto.reduceRight,
+    nativeFilter       = ArrayProto.filter,
+    nativeEvery        = ArrayProto.every,
+    nativeSome         = ArrayProto.some,
+    nativeIndexOf      = ArrayProto.indexOf,
+    nativeLastIndexOf  = ArrayProto.lastIndexOf,
+    nativeIsArray      = Array.isArray,
+    nativeKeys         = Object.keys,
+    nativeBind         = FuncProto.bind;
+
+  // Create a safe reference to the Underscore object for use below.
+  var _ = function(obj) {
+    if (obj instanceof _) return obj;
+    if (!(this instanceof _)) return new _(obj);
+    this._wrapped = obj;
+  };
+
+  // Export the Underscore object for **Node.js**, with
+  // backwards-compatibility for the old `require()` API. If we're in
+  // the browser, add `_` as a global object via a string identifier,
+  // for Closure Compiler "advanced" mode.
+  if (typeof exports !== 'undefined') {
+    if (typeof module !== 'undefined' && module.exports) {
+      exports = module.exports = _;
+    }
+    exports._ = _;
+  } else {
+    root._ = _;
+  }
+
+  // Current version.
+  _.VERSION = '1.6.0';
+
+  // Collection Functions
+  // --------------------
+
+  // The cornerstone, an `each` implementation, aka `forEach`.
+  // Handles objects with the built-in `forEach`, arrays, and raw objects.
+  // Delegates to **ECMAScript 5**'s native `forEach` if available.
+  var each = _.each = _.forEach = function(obj, iterator, context) {
+    if (obj == null) return obj;
+    if (nativeForEach && obj.forEach === nativeForEach) {
+      obj.forEach(iterator, context);
+    } else if (obj.length === +obj.length) {
+      for (var i = 0, length = obj.length; i < length; i++) {
+        if (iterator.call(context, obj[i], i, obj) === breaker) return;
+      }
+    } else {
+      var keys = _.keys(obj);
+      for (var i = 0, length = keys.length; i < length; i++) {
+        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
+      }
+    }
+    return obj;
+  };
+
+  // Return the results of applying the iterator to each element.
+  // Delegates to **ECMAScript 5**'s native `map` if available.
+  _.map = _.collect = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+    each(obj, function(value, index, list) {
+      results.push(iterator.call(context, value, index, list));
+    });
+    return results;
+  };
+
+  var reduceError = 'Reduce of empty array with no initial value';
+
+  // **Reduce** builds up a single result from a list of values, aka `inject`,
+  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduce && obj.reduce === nativeReduce) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+    }
+    each(obj, function(value, index, list) {
+      if (!initial) {
+        memo = value;
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, value, index, list);
+      }
+    });
+    if (!initial) throw new TypeError(reduceError);
+    return memo;
+  };
+
+  // The right-associative version of reduce, also known as `foldr`.
+  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+    }
+    var length = obj.length;
+    if (length !== +length) {
+      var keys = _.keys(obj);
+      length = keys.length;
+    }
+    each(obj, function(value, index, list) {
+      index = keys ? keys[--length] : --length;
+      if (!initial) {
+        memo = obj[index];
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, obj[index], index, list);
+      }
+    });
+    if (!initial) throw new TypeError(reduceError);
+    return memo;
+  };
+
+  // Return the first value which passes a truth test. Aliased as `detect`.
+  _.find = _.detect = function(obj, predicate, context) {
+    var result;
+    any(obj, function(value, index, list) {
+      if (predicate.call(context, value, index, list)) {
+        result = value;
+        return true;
+      }
+    });
+    return result;
+  };
+
+  // Return all the elements that pass a truth test.
+  // Delegates to **ECMAScript 5**'s native `filter` if available.
+  // Aliased as `select`.
+  _.filter = _.select = function(obj, predicate, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
+    each(obj, function(value, index, list) {
+      if (predicate.call(context, value, index, list)) results.push(value);
+    });
+    return results;
+  };
+
+  // Return all the elements for which a truth test fails.
+  _.reject = function(obj, predicate, context) {
+    return _.filter(obj, function(value, index, list) {
+      return !predicate.call(context, value, index, list);
+    }, context);
+  };
+
+  // Determine whether all of the elements match a truth test.
+  // Delegates to **ECMAScript 5**'s native `every` if available.
+  // Aliased as `all`.
+  _.every = _.all = function(obj, predicate, context) {
+    predicate || (predicate = _.identity);
+    var result = true;
+    if (obj == null) return result;
+    if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context);
+    each(obj, function(value, index, list) {
+      if (!(result = result && predicate.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if at least one element in the object matches a truth test.
+  // Delegates to **ECMAScript 5**'s native `some` if available.
+  // Aliased as `any`.
+  var any = _.some = _.any = function(obj, predicate, context) {
+    predicate || (predicate = _.identity);
+    var result = false;
+    if (obj == null) return result;
+    if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
+    each(obj, function(value, index, list) {
+      if (result || (result = predicate.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if the array or object contains a given value (using `===`).
+  // Aliased as `include`.
+  _.contains = _.include = function(obj, target) {
+    if (obj == null) return false;
+    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+    return any(obj, function(value) {
+      return value === target;
+    });
+  };
+
+  // Invoke a method (with arguments) on every item in a collection.
+  _.invoke = function(obj, method) {
+    var args = slice.call(arguments, 2);
+    var isFunc = _.isFunction(method);
+    return _.map(obj, function(value) {
+      return (isFunc ? method : value[method]).apply(value, args);
+    });
+  };
+
+  // Convenience version of a common use case of `map`: fetching a property.
+  _.pluck = function(obj, key) {
+    return _.map(obj, _.property(key));
+  };
+
+  // Convenience version of a common use case of `filter`: selecting only objects
+  // containing specific `key:value` pairs.
+  _.where = function(obj, attrs) {
+    return _.filter(obj, _.matches(attrs));
+  };
+
+  // Convenience version of a common use case of `find`: getting the first object
+  // containing specific `key:value` pairs.
+  _.findWhere = function(obj, attrs) {
+    return _.find(obj, _.matches(attrs));
+  };
+
+  // Return the maximum element or (element-based computation).
+  // Can't optimize arrays of integers longer than 65,535 elements.
+  // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)
+  _.max = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+      return Math.max.apply(Math, obj);
+    }
+    var result = -Infinity, lastComputed = -Infinity;
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      if (computed > lastComputed) {
+        result = value;
+        lastComputed = computed;
+      }
+    });
+    return result;
+  };
+
+  // Return the minimum element (or element-based computation).
+  _.min = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+      return Math.min.apply(Math, obj);
+    }
+    var result = Infinity, lastComputed = Infinity;
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      if (computed < lastComputed) {
+        result = value;
+        lastComputed = computed;
+      }
+    });
+    return result;
+  };
+
+  // Shuffle an array, using the modern version of the
+  // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
+  _.shuffle = function(obj) {
+    var rand;
+    var index = 0;
+    var shuffled = [];
+    each(obj, function(value) {
+      rand = _.random(index++);
+      shuffled[index - 1] = shuffled[rand];
+      shuffled[rand] = value;
+    });
+    return shuffled;
+  };
+
+  // Sample **n** random values from a collection.
+  // If **n** is not specified, returns a single random element.
+  // The internal `guard` argument allows it to work with `map`.
+  _.sample = function(obj, n, guard) {
+    if (n == null || guard) {
+      if (obj.length !== +obj.length) obj = _.values(obj);
+      return obj[_.random(obj.length - 1)];
+    }
+    return _.shuffle(obj).slice(0, Math.max(0, n));
+  };
+
+  // An internal function to generate lookup iterators.
+  var lookupIterator = function(value) {
+    if (value == null) return _.identity;
+    if (_.isFunction(value)) return value;
+    return _.property(value);
+  };
+
+  // Sort the object's values by a criterion produced by an iterator.
+  _.sortBy = function(obj, iterator, context) {
+    iterator = lookupIterator(iterator);
+    return _.pluck(_.map(obj, function(value, index, list) {
+      return {
+        value: value,
+        index: index,
+        criteria: iterator.call(context, value, index, list)
+      };
+    }).sort(function(left, right) {
+      var a = left.criteria;
+      var b = right.criteria;
+      if (a !== b) {
+        if (a > b || a === void 0) return 1;
+        if (a < b || b === void 0) return -1;
+      }
+      return left.index - right.index;
+    }), 'value');
+  };
+
+  // An internal function used for aggregate "group by" operations.
+  var group = function(behavior) {
+    return function(obj, iterator, context) {
+      var result = {};
+      iterator = lookupIterator(iterator);
+      each(obj, function(value, index) {
+        var key = iterator.call(context, value, index, obj);
+        behavior(result, key, value);
+      });
+      return result;
+    };
+  };
+
+  // Groups the object's values by a criterion. Pass either a string attribute
+  // to group by, or a function that returns the criterion.
+  _.groupBy = group(function(result, key, value) {
+    _.has(result, key) ? result[key].push(value) : result[key] = [value];
+  });
+
+  // Indexes the object's values by a criterion, similar to `groupBy`, but for
+  // when you know that your index values will be unique.
+  _.indexBy = group(function(result, key, value) {
+    result[key] = value;
+  });
+
+  // Counts instances of an object that group by a certain criterion. Pass
+  // either a string attribute to count by, or a function that returns the
+  // criterion.
+  _.countBy = group(function(result, key) {
+    _.has(result, key) ? result[key]++ : result[key] = 1;
+  });
+
+  // Use a comparator function to figure out the smallest index at which
+  // an object should be inserted so as to maintain order. Uses binary search.
+  _.sortedIndex = function(array, obj, iterator, context) {
+    iterator = lookupIterator(iterator);
+    var value = iterator.call(context, obj);
+    var low = 0, high = array.length;
+    while (low < high) {
+      var mid = (low + high) >>> 1;
+      iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid;
+    }
+    return low;
+  };
+
+  // Safely create a real, live array from anything iterable.
+  _.toArray = function(obj) {
+    if (!obj) return [];
+    if (_.isArray(obj)) return slice.call(obj);
+    if (obj.length === +obj.length) return _.map(obj, _.identity);
+    return _.values(obj);
+  };
+
+  // Return the number of elements in an object.
+  _.size = function(obj) {
+    if (obj == null) return 0;
+    return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;
+  };
+
+  // Array Functions
+  // ---------------
+
+  // Get the first element of an array. Passing **n** will return the first N
+  // values in the array. Aliased as `head` and `take`. The **guard** check
+  // allows it to work with `_.map`.
+  _.first = _.head = _.take = function(array, n, guard) {
+    if (array == null) return void 0;
+    if ((n == null) || guard) return array[0];
+    if (n < 0) return [];
+    return slice.call(array, 0, n);
+  };
+
+  // Returns everything but the last entry of the array. Especially useful on
+  // the arguments object. Passing **n** will return all the values in
+  // the array, excluding the last N. The **guard** check allows it to work with
+  // `_.map`.
+  _.initial = function(array, n, guard) {
+    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+  };
+
+  // Get the last element of an array. Passing **n** will return the last N
+  // values in the array. The **guard** check allows it to work with `_.map`.
+  _.last = function(array, n, guard) {
+    if (array == null) return void 0;
+    if ((n == null) || guard) return array[array.length - 1];
+    return slice.call(array, Math.max(array.length - n, 0));
+  };
+
+  // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
+  // Especially useful on the arguments object. Passing an **n** will return
+  // the rest N values in the array. The **guard**
+  // check allows it to work with `_.map`.
+  _.rest = _.tail = _.drop = function(array, n, guard) {
+    return slice.call(array, (n == null) || guard ? 1 : n);
+  };
+
+  // Trim out all falsy values from an array.
+  _.compact = function(array) {
+    return _.filter(array, _.identity);
+  };
+
+  // Internal implementation of a recursive `flatten` function.
+  var flatten = function(input, shallow, output) {
+    if (shallow && _.every(input, _.isArray)) {
+      return concat.apply(output, input);
+    }
+    each(input, function(value) {
+      if (_.isArray(value) || _.isArguments(value)) {
+        shallow ? push.apply(output, value) : flatten(value, shallow, output);
+      } else {
+        output.push(value);
+      }
+    });
+    return output;
+  };
+
+  // Flatten out an array, either recursively (by default), or just one level.
+  _.flatten = function(array, shallow) {
+    return flatten(array, shallow, []);
+  };
+
+  // Return a version of the array that does not contain the specified value(s).
+  _.without = function(array) {
+    return _.difference(array, slice.call(arguments, 1));
+  };
+
+  // Split an array into two arrays: one whose elements all satisfy the given
+  // predicate, and one whose elements all do not satisfy the predicate.
+  _.partition = function(array, predicate) {
+    var pass = [], fail = [];
+    each(array, function(elem) {
+      (predicate(elem) ? pass : fail).push(elem);
+    });
+    return [pass, fail];
+  };
+
+  // Produce a duplicate-free version of the array. If the array has already
+  // been sorted, you have the option of using a faster algorithm.
+  // Aliased as `unique`.
+  _.uniq = _.unique = function(array, isSorted, iterator, context) {
+    if (_.isFunction(isSorted)) {
+      context = iterator;
+      iterator = isSorted;
+      isSorted = false;
+    }
+    var initial = iterator ? _.map(array, iterator, context) : array;
+    var results = [];
+    var seen = [];
+    each(initial, function(value, index) {
+      if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) {
+        seen.push(value);
+        results.push(array[index]);
+      }
+    });
+    return results;
+  };
+
+  // Produce an array that contains the union: each distinct element from all of
+  // the passed-in arrays.
+  _.union = function() {
+    return _.uniq(_.flatten(arguments, true));
+  };
+
+  // Produce an array that contains every item shared between all the
+  // passed-in arrays.
+  _.intersection = function(array) {
+    var rest = slice.call(arguments, 1);
+    return _.filter(_.uniq(array), function(item) {
+      return _.every(rest, function(other) {
+        return _.contains(other, item);
+      });
+    });
+  };
+
+  // Take the difference between one array and a number of other arrays.
+  // Only the elements present in just the first array will remain.
+  _.difference = function(array) {
+    var rest = concat.apply(ArrayProto, slice.call(arguments, 1));
+    return _.filter(array, function(value){ return !_.contains(rest, value); });
+  };
+
+  // Zip together multiple lists into a single array -- elements that share
+  // an index go together.
+  _.zip = function() {
+    var length = _.max(_.pluck(arguments, 'length').concat(0));
+    var results = new Array(length);
+    for (var i = 0; i < length; i++) {
+      results[i] = _.pluck(arguments, '' + i);
+    }
+    return results;
+  };
+
+  // Converts lists into objects. Pass either a single array of `[key, value]`
+  // pairs, or two parallel arrays of the same length -- one of keys, and one of
+  // the corresponding values.
+  _.object = function(list, values) {
+    if (list == null) return {};
+    var result = {};
+    for (var i = 0, length = list.length; i < length; i++) {
+      if (values) {
+        result[list[i]] = values[i];
+      } else {
+        result[list[i][0]] = list[i][1];
+      }
+    }
+    return result;
+  };
+
+  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+  // we need this function. Return the position of the first occurrence of an
+  // item in an array, or -1 if the item is not included in the array.
+  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+  // If the array is large and already in sort order, pass `true`
+  // for **isSorted** to use binary search.
+  _.indexOf = function(array, item, isSorted) {
+    if (array == null) return -1;
+    var i = 0, length = array.length;
+    if (isSorted) {
+      if (typeof isSorted == 'number') {
+        i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted);
+      } else {
+        i = _.sortedIndex(array, item);
+        return array[i] === item ? i : -1;
+      }
+    }
+    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
+    for (; i < length; i++) if (array[i] === item) return i;
+    return -1;
+  };
+
+  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+  _.lastIndexOf = function(array, item, from) {
+    if (array == null) return -1;
+    var hasIndex = from != null;
+    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) {
+      return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item);
+    }
+    var i = (hasIndex ? from : array.length);
+    while (i--) if (array[i] === item) return i;
+    return -1;
+  };
+
+  // Generate an integer Array containing an arithmetic progression. A port of
+  // the native Python `range()` function. See
+  // [the Python documentation](http://docs.python.org/library/functions.html#range).
+  _.range = function(start, stop, step) {
+    if (arguments.length <= 1) {
+      stop = start || 0;
+      start = 0;
+    }
+    step = arguments[2] || 1;
+
+    var length = Math.max(Math.ceil((stop - start) / step), 0);
+    var idx = 0;
+    var range = new Array(length);
+
+    while(idx < length) {
+      range[idx++] = start;
+      start += step;
+    }
+
+    return range;
+  };
+
+  // Function (ahem) Functions
+  // ------------------
+
+  // Reusable constructor function for prototype setting.
+  var ctor = function(){};
+
+  // Create a function bound to a given object (assigning `this`, and arguments,
+  // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
+  // available.
+  _.bind = function(func, context) {
+    var args, bound;
+    if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+    if (!_.isFunction(func)) throw new TypeError;
+    args = slice.call(arguments, 2);
+    return bound = function() {
+      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+      ctor.prototype = func.prototype;
+      var self = new ctor;
+      ctor.prototype = null;
+      var result = func.apply(self, args.concat(slice.call(arguments)));
+      if (Object(result) === result) return result;
+      return self;
+    };
+  };
+
+  // Partially apply a function by creating a version that has had some of its
+  // arguments pre-filled, without changing its dynamic `this` context. _ acts
+  // as a placeholder, allowing any combination of arguments to be pre-filled.
+  _.partial = function(func) {
+    var boundArgs = slice.call(arguments, 1);
+    return function() {
+      var position = 0;
+      var args = boundArgs.slice();
+      for (var i = 0, length = args.length; i < length; i++) {
+        if (args[i] === _) args[i] = arguments[position++];
+      }
+      while (position < arguments.length) args.push(arguments[position++]);
+      return func.apply(this, args);
+    };
+  };
+
+  // Bind a number of an object's methods to that object. Remaining arguments
+  // are the method names to be bound. Useful for ensuring that all callbacks
+  // defined on an object belong to it.
+  _.bindAll = function(obj) {
+    var funcs = slice.call(arguments, 1);
+    if (funcs.length === 0) throw new Error('bindAll must be passed function names');
+    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+    return obj;
+  };
+
+  // Memoize an expensive function by storing its results.
+  _.memoize = function(func, hasher) {
+    var memo = {};
+    hasher || (hasher = _.identity);
+    return function() {
+      var key = hasher.apply(this, arguments);
+      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+    };
+  };
+
+  // Delays a function for the given number of milliseconds, and then calls
+  // it with the arguments supplied.
+  _.delay = function(func, wait) {
+    var args = slice.call(arguments, 2);
+    return setTimeout(function(){ return func.apply(null, args); }, wait);
+  };
+
+  // Defers a function, scheduling it to run after the current call stack has
+  // cleared.
+  _.defer = function(func) {
+    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+  };
+
+  // Returns a function, that, when invoked, will only be triggered at most once
+  // during a given window of time. Normally, the throttled function will run
+  // as much as it can, without ever going more than once per `wait` duration;
+  // but if you'd like to disable the execution on the leading edge, pass
+  // `{leading: false}`. To disable execution on the trailing edge, ditto.
+  _.throttle = function(func, wait, options) {
+    var context, args, result;
+    var timeout = null;
+    var previous = 0;
+    options || (options = {});
+    var later = function() {
+      previous = options.leading === false ? 0 : _.now();
+      timeout = null;
+      result = func.apply(context, args);
+      context = args = null;
+    };
+    return function() {
+      var now = _.now();
+      if (!previous && options.leading === false) previous = now;
+      var remaining = wait - (now - previous);
+      context = this;
+      args = arguments;
+      if (remaining <= 0) {
+        clearTimeout(timeout);
+        timeout = null;
+        previous = now;
+        result = func.apply(context, args);
+        context = args = null;
+      } else if (!timeout && options.trailing !== false) {
+        timeout = setTimeout(later, remaining);
+      }
+      return result;
+    };
+  };
+
+  // Returns a function, that, as long as it continues to be invoked, will not
+  // be triggered. The function will be called after it stops being called for
+  // N milliseconds. If `immediate` is passed, trigger the function on the
+  // leading edge, instead of the trailing.
+  _.debounce = function(func, wait, immediate) {
+    var timeout, args, context, timestamp, result;
+
+    var later = function() {
+      var last = _.now() - timestamp;
+      if (last < wait) {
+        timeout = setTimeout(later, wait - last);
+      } else {
+        timeout = null;
+        if (!immediate) {
+          result = func.apply(context, args);
+          context = args = null;
+        }
+      }
+    };
+
+    return function() {
+      context = this;
+      args = arguments;
+      timestamp = _.now();
+      var callNow = immediate && !timeout;
+      if (!timeout) {
+        timeout = setTimeout(later, wait);
+      }
+      if (callNow) {
+        result = func.apply(context, args);
+        context = args = null;
+      }
+
+      return result;
+    };
+  };
+
+  // Returns a function that will be executed at most one time, no matter how
+  // often you call it. Useful for lazy initialization.
+  _.once = function(func) {
+    var ran = false, memo;
+    return function() {
+      if (ran) return memo;
+      ran = true;
+      memo = func.apply(this, arguments);
+      func = null;
+      return memo;
+    };
+  };
+
+  // Returns the first function passed as an argument to the second,
+  // allowing you to adjust arguments, run code before and after, and
+  // conditionally execute the original function.
+  _.wrap = function(func, wrapper) {
+    return _.partial(wrapper, func);
+  };
+
+  // Returns a function that is the composition of a list of functions, each
+  // consuming the return value of the function that follows.
+  _.compose = function() {
+    var funcs = arguments;
+    return function() {
+      var args = arguments;
+      for (var i = funcs.length - 1; i >= 0; i--) {
+        args = [funcs[i].apply(this, args)];
+      }
+      return args[0];
+    };
+  };
+
+  // Returns a function that will only be executed after being called N times.
+  _.after = function(times, func) {
+    return function() {
+      if (--times < 1) {
+        return func.apply(this, arguments);
+      }
+    };
+  };
+
+  // Object Functions
+  // ----------------
+
+  // Retrieve the names of an object's properties.
+  // Delegates to **ECMAScript 5**'s native `Object.keys`
+  _.keys = function(obj) {
+    if (!_.isObject(obj)) return [];
+    if (nativeKeys) return nativeKeys(obj);
+    var keys = [];
+    for (var key in obj) if (_.has(obj, key)) keys.push(key);
+    return keys;
+  };
+
+  // Retrieve the values of an object's properties.
+  _.values = function(obj) {
+    var keys = _.keys(obj);
+    var length = keys.length;
+    var values = new Array(length);
+    for (var i = 0; i < length; i++) {
+      values[i] = obj[keys[i]];
+    }
+    return values;
+  };
+
+  // Convert an object into a list of `[key, value]` pairs.
+  _.pairs = function(obj) {
+    var keys = _.keys(obj);
+    var length = keys.length;
+    var pairs = new Array(length);
+    for (var i = 0; i < length; i++) {
+      pairs[i] = [keys[i], obj[keys[i]]];
+    }
+    return pairs;
+  };
+
+  // Invert the keys and values of an object. The values must be serializable.
+  _.invert = function(obj) {
+    var result = {};
+    var keys = _.keys(obj);
+    for (var i = 0, length = keys.length; i < length; i++) {
+      result[obj[keys[i]]] = keys[i];
+    }
+    return result;
+  };
+
+  // Return a sorted list of the function names available on the object.
+  // Aliased as `methods`
+  _.functions = _.methods = function(obj) {
+    var names = [];
+    for (var key in obj) {
+      if (_.isFunction(obj[key])) names.push(key);
+    }
+    return names.sort();
+  };
+
+  // Extend a given object with all the properties in passed-in object(s).
+  _.extend = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      if (source) {
+        for (var prop in source) {
+          obj[prop] = source[prop];
+        }
+      }
+    });
+    return obj;
+  };
+
+  // Return a copy of the object only containing the whitelisted properties.
+  _.pick = function(obj) {
+    var copy = {};
+    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+    each(keys, function(key) {
+      if (key in obj) copy[key] = obj[key];
+    });
+    return copy;
+  };
+
+   // Return a copy of the object without the blacklisted properties.
+  _.omit = function(obj) {
+    var copy = {};
+    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+    for (var key in obj) {
+      if (!_.contains(keys, key)) copy[key] = obj[key];
+    }
+    return copy;
+  };
+
+  // Fill in a given object with default properties.
+  _.defaults = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      if (source) {
+        for (var prop in source) {
+          if (obj[prop] === void 0) obj[prop] = source[prop];
+        }
+      }
+    });
+    return obj;
+  };
+
+  // Create a (shallow-cloned) duplicate of an object.
+  _.clone = function(obj) {
+    if (!_.isObject(obj)) return obj;
+    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+  };
+
+  // Invokes interceptor with the obj, and then returns obj.
+  // The primary purpose of this method is to "tap into" a method chain, in
+  // order to perform operations on intermediate results within the chain.
+  _.tap = function(obj, interceptor) {
+    interceptor(obj);
+    return obj;
+  };
+
+  // Internal recursive comparison function for `isEqual`.
+  var eq = function(a, b, aStack, bStack) {
+    // Identical objects are equal. `0 === -0`, but they aren't identical.
+    // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
+    if (a === b) return a !== 0 || 1 / a == 1 / b;
+    // A strict comparison is necessary because `null == undefined`.
+    if (a == null || b == null) return a === b;
+    // Unwrap any wrapped objects.
+    if (a instanceof _) a = a._wrapped;
+    if (b instanceof _) b = b._wrapped;
+    // Compare `[[Class]]` names.
+    var className = toString.call(a);
+    if (className != toString.call(b)) return false;
+    switch (className) {
+      // Strings, numbers, dates, and booleans are compared by value.
+      case '[object String]':
+        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+        // equivalent to `new String("5")`.
+        return a == String(b);
+      case '[object Number]':
+        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+        // other numeric values.
+        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+      case '[object Date]':
+      case '[object Boolean]':
+        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+        // millisecond representations. Note that invalid dates with millisecond representations
+        // of `NaN` are not equivalent.
+        return +a == +b;
+      // RegExps are compared by their source patterns and flags.
+      case '[object RegExp]':
+        return a.source == b.source &&
+               a.global == b.global &&
+               a.multiline == b.multiline &&
+               a.ignoreCase == b.ignoreCase;
+    }
+    if (typeof a != 'object' || typeof b != 'object') return false;
+    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+    var length = aStack.length;
+    while (length--) {
+      // Linear search. Performance is inversely proportional to the number of
+      // unique nested structures.
+      if (aStack[length] == a) return bStack[length] == b;
+    }
+    // Objects with different constructors are not equivalent, but `Object`s
+    // from different frames are.
+    var aCtor = a.constructor, bCtor = b.constructor;
+    if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
+                             _.isFunction(bCtor) && (bCtor instanceof bCtor))
+                        && ('constructor' in a && 'constructor' in b)) {
+      return false;
+    }
+    // Add the first object to the stack of traversed objects.
+    aStack.push(a);
+    bStack.push(b);
+    var size = 0, result = true;
+    // Recursively compare objects and arrays.
+    if (className == '[object Array]') {
+      // Compare array lengths to determine if a deep comparison is necessary.
+      size = a.length;
+      result = size == b.length;
+      if (result) {
+        // Deep compare the contents, ignoring non-numeric properties.
+        while (size--) {
+          if (!(result = eq(a[size], b[size], aStack, bStack))) break;
+        }
+      }
+    } else {
+      // Deep compare objects.
+      for (var key in a) {
+        if (_.has(a, key)) {
+          // Count the expected number of properties.
+          size++;
+          // Deep compare each member.
+          if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;
+        }
+      }
+      // Ensure that both objects contain the same number of properties.
+      if (result) {
+        for (key in b) {
+          if (_.has(b, key) && !(size--)) break;
+        }
+        result = !size;
+      }
+    }
+    // Remove the first object from the stack of traversed objects.
+    aStack.pop();
+    bStack.pop();
+    return result;
+  };
+
+  // Perform a deep comparison to check if two objects are equal.
+  _.isEqual = function(a, b) {
+    return eq(a, b, [], []);
+  };
+
+  // Is a given array, string, or object empty?
+  // An "empty" object has no enumerable own-properties.
+  _.isEmpty = function(obj) {
+    if (obj == null) return true;
+    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+    for (var key in obj) if (_.has(obj, key)) return false;
+    return true;
+  };
+
+  // Is a given value a DOM element?
+  _.isElement = function(obj) {
+    return !!(obj && obj.nodeType === 1);
+  };
+
+  // Is a given value an array?
+  // Delegates to ECMA5's native Array.isArray
+  _.isArray = nativeIsArray || function(obj) {
+    return toString.call(obj) == '[object Array]';
+  };
+
+  // Is a given variable an object?
+  _.isObject = function(obj) {
+    return obj === Object(obj);
+  };
+
+  // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.
+  each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
+    _['is' + name] = function(obj) {
+      return toString.call(obj) == '[object ' + name + ']';
+    };
+  });
+
+  // Define a fallback version of the method in browsers (ahem, IE), where
+  // there isn't any inspectable "Arguments" type.
+  if (!_.isArguments(arguments)) {
+    _.isArguments = function(obj) {
+      return !!(obj && _.has(obj, 'callee'));
+    };
+  }
+
+  // Optimize `isFunction` if appropriate.
+  if (typeof (/./) !== 'function') {
+    _.isFunction = function(obj) {
+      return typeof obj === 'function';
+    };
+  }
+
+  // Is a given object a finite number?
+  _.isFinite = function(obj) {
+    return isFinite(obj) && !isNaN(parseFloat(obj));
+  };
+
+  // Is the given value `NaN`? (NaN is the only number which does not equal itself).
+  _.isNaN = function(obj) {
+    return _.isNumber(obj) && obj != +obj;
+  };
+
+  // Is a given value a boolean?
+  _.isBoolean = function(obj) {
+    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+  };
+
+  // Is a given value equal to null?
+  _.isNull = function(obj) {
+    return obj === null;
+  };
+
+  // Is a given variable undefined?
+  _.isUndefined = function(obj) {
+    return obj === void 0;
+  };
+
+  // Shortcut function for checking if an object has a given property directly
+  // on itself (in other words, not on a prototype).
+  _.has = function(obj, key) {
+    return hasOwnProperty.call(obj, key);
+  };
+
+  // Utility Functions
+  // -----------------
+
+  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+  // previous owner. Returns a reference to the Underscore object.
+  _.noConflict = function() {
+    root._ = previousUnderscore;
+    return this;
+  };
+
+  // Keep the identity function around for default iterators.
+  _.identity = function(value) {
+    return value;
+  };
+
+  _.constant = function(value) {
+    return function () {
+      return value;
+    };
+  };
+
+  _.property = function(key) {
+    return function(obj) {
+      return obj[key];
+    };
+  };
+
+  // Returns a predicate for checking whether an object has a given set of `key:value` pairs.
+  _.matches = function(attrs) {
+    return function(obj) {
+      if (obj === attrs) return true; //avoid comparing an object to itself.
+      for (var key in attrs) {
+        if (attrs[key] !== obj[key])
+          return false;
+      }
+      return true;
+    }
+  };
+
+  // Run a function **n** times.
+  _.times = function(n, iterator, context) {
+    var accum = Array(Math.max(0, n));
+    for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
+    return accum;
+  };
+
+  // Return a random integer between min and max (inclusive).
+  _.random = function(min, max) {
+    if (max == null) {
+      max = min;
+      min = 0;
+    }
+    return min + Math.floor(Math.random() * (max - min + 1));
+  };
+
+  // A (possibly faster) way to get the current timestamp as an integer.
+  _.now = Date.now || function() { return new Date().getTime(); };
+
+  // List of HTML entities for escaping.
+  var entityMap = {
+    escape: {
+      '&': '&amp;',
+      '<': '&lt;',
+      '>': '&gt;',
+      '"': '&quot;',
+      "'": '&#x27;'
+    }
+  };
+  entityMap.unescape = _.invert(entityMap.escape);
+
+  // Regexes containing the keys and values listed immediately above.
+  var entityRegexes = {
+    escape:   new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'),
+    unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g')
+  };
+
+  // Functions for escaping and unescaping strings to/from HTML interpolation.
+  _.each(['escape', 'unescape'], function(method) {
+    _[method] = function(string) {
+      if (string == null) return '';
+      return ('' + string).replace(entityRegexes[method], function(match) {
+        return entityMap[method][match];
+      });
+    };
+  });
+
+  // If the value of the named `property` is a function then invoke it with the
+  // `object` as context; otherwise, return it.
+  _.result = function(object, property) {
+    if (object == null) return void 0;
+    var value = object[property];
+    return _.isFunction(value) ? value.call(object) : value;
+  };
+
+  // Add your own custom functions to the Underscore object.
+  _.mixin = function(obj) {
+    each(_.functions(obj), function(name) {
+      var func = _[name] = obj[name];
+      _.prototype[name] = function() {
+        var args = [this._wrapped];
+        push.apply(args, arguments);
+        return result.call(this, func.apply(_, args));
+      };
+    });
+  };
+
+  // Generate a unique integer id (unique within the entire client session).
+  // Useful for temporary DOM ids.
+  var idCounter = 0;
+  _.uniqueId = function(prefix) {
+    var id = ++idCounter + '';
+    return prefix ? prefix + id : id;
+  };
+
+  // By default, Underscore uses ERB-style template delimiters, change the
+  // following template settings to use alternative delimiters.
+  _.templateSettings = {
+    evaluate    : /<%([\s\S]+?)%>/g,
+    interpolate : /<%=([\s\S]+?)%>/g,
+    escape      : /<%-([\s\S]+?)%>/g
+  };
+
+  // When customizing `templateSettings`, if you don't want to define an
+  // interpolation, evaluation or escaping regex, we need one that is
+  // guaranteed not to match.
+  var noMatch = /(.)^/;
+
+  // Certain characters need to be escaped so that they can be put into a
+  // string literal.
+  var escapes = {
+    "'":      "'",
+    '\\':     '\\',
+    '\r':     'r',
+    '\n':     'n',
+    '\t':     't',
+    '\u2028': 'u2028',
+    '\u2029': 'u2029'
+  };
+
+  var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
+
+  // JavaScript micro-templating, similar to John Resig's implementation.
+  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+  // and correctly escapes quotes within interpolated code.
+  _.template = function(text, data, settings) {
+    var render;
+    settings = _.defaults({}, settings, _.templateSettings);
+
+    // Combine delimiters into one regular expression via alternation.
+    var matcher = new RegExp([
+      (settings.escape || noMatch).source,
+      (settings.interpolate || noMatch).source,
+      (settings.evaluate || noMatch).source
+    ].join('|') + '|$', 'g');
+
+    // Compile the template source, escaping string literals appropriately.
+    var index = 0;
+    var source = "__p+='";
+    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
+      source += text.slice(index, offset)
+        .replace(escaper, function(match) { return '\\' + escapes[match]; });
+
+      if (escape) {
+        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
+      }
+      if (interpolate) {
+        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
+      }
+      if (evaluate) {
+        source += "';\n" + evaluate + "\n__p+='";
+      }
+      index = offset + match.length;
+      return match;
+    });
+    source += "';\n";
+
+    // If a variable is not specified, place data values in local scope.
+    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
+
+    source = "var __t,__p='',__j=Array.prototype.join," +
+      "print=function(){__p+=__j.call(arguments,'');};\n" +
+      source + "return __p;\n";
+
+    try {
+      render = new Function(settings.variable || 'obj', '_', source);
+    } catch (e) {
+      e.source = source;
+      throw e;
+    }
+
+    if (data) return render(data, _);
+    var template = function(data) {
+      return render.call(this, data, _);
+    };
+
+    // Provide the compiled function source as a convenience for precompilation.
+    template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';
+
+    return template;
+  };
+
+  // Add a "chain" function, which will delegate to the wrapper.
+  _.chain = function(obj) {
+    return _(obj).chain();
+  };
+
+  // OOP
+  // ---------------
+  // If Underscore is called as a function, it returns a wrapped object that
+  // can be used OO-style. This wrapper holds altered versions of all the
+  // underscore functions. Wrapped objects may be chained.
+
+  // Helper function to continue chaining intermediate results.
+  var result = function(obj) {
+    return this._chain ? _(obj).chain() : obj;
+  };
+
+  // Add all of the Underscore functions to the wrapper object.
+  _.mixin(_);
+
+  // Add all mutator Array functions to the wrapper.
+  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      var obj = this._wrapped;
+      method.apply(obj, arguments);
+      if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];
+      return result.call(this, obj);
+    };
+  });
+
+  // Add all accessor Array functions to the wrapper.
+  each(['concat', 'join', 'slice'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      return result.call(this, method.apply(this._wrapped, arguments));
+    };
+  });
+
+  _.extend(_.prototype, {
+
+    // Start chaining a wrapped Underscore object.
+    chain: function() {
+      this._chain = true;
+      return this;
+    },
+
+    // Extracts the result from a wrapped and chained object.
+    value: function() {
+      return this._wrapped;
+    }
+
+  });
+
+  // AMD registration happens at the end for compatibility with AMD loaders
+  // that may not enforce next-turn semantics on modules. Even though general
+  // practice for AMD registration is to be anonymous, underscore registers
+  // as a named module because, like jQuery, it is a base library that is
+  // popular enough to be bundled in a third party lib, but not be part of
+  // an AMD load request. Those cases could generate an error when an
+  // anonymous define() is called outside of a loader request.
+  if (typeof define === 'function' && define.amd) {
+    define('underscore', [], function() {
+      return _;
+    });
+  }
+}).call(this);
diff --git a/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/package.json b/atom/packages/vim-mode-visual-block/node_modules/underscore-plus/package.json
new file mode 100644 (file)
index 0000000..1650d7d
--- /dev/null
@@ -0,0 +1,79 @@
+{
+  "name": "underscore-plus",
+  "version": "1.6.6",
+  "description": "Underscore plus additional utilities",
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/underscore-plus/raw/master/LICENSE.md"
+    }
+  ],
+  "main": "./lib/underscore-plus.js",
+  "scripts": {
+    "prepublish": "grunt clean coffee lint",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/underscore-plus.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/underscore-plus/issues"
+  },
+  "homepage": "http://atom.github.io/underscore-plus",
+  "keywords": [
+    "underscore"
+  ],
+  "dependencies": {
+    "underscore": "~1.6.0"
+  },
+  "devDependencies": {
+    "jasmine-focused": "1.x",
+    "grunt-contrib-coffee": "~0.9.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "temp": "~0.5.0",
+    "rimraf": "~2.1.4"
+  },
+  "gitHead": "2046d1562896761e3c38b7a647ac30b87b46ea20",
+  "_id": "underscore-plus@1.6.6",
+  "_shasum": "65ecde1bdc441a35d89e650fd70dcf13ae439a7d",
+  "_from": "underscore-plus@>=1.6.6 <2.0.0",
+  "_npmVersion": "2.1.8",
+  "_nodeVersion": "0.10.33",
+  "_npmUser": {
+    "name": "maxbrunsfeld",
+    "email": "maxbrunsfeld@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "mcolyer",
+      "email": "matt@colyer.name"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    },
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "maxbrunsfeld",
+      "email": "maxbrunsfeld@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "65ecde1bdc441a35d89e650fd70dcf13ae439a7d",
+    "tarball": "http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.6.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.6.tgz",
+  "readme": "ERROR: No README data found!"
+}
diff --git a/atom/packages/vim-mode-visual-block/package.json b/atom/packages/vim-mode-visual-block/package.json
new file mode 100644 (file)
index 0000000..d0fe933
--- /dev/null
@@ -0,0 +1,84 @@
+{
+  "name": "vim-mode-visual-block",
+  "main": "./lib/main",
+  "version": "0.2.7",
+  "description": "Add visual-blockwise feature to vim-mode",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/t9md/atom-vim-mode-visual-block"
+  },
+  "license": "MIT",
+  "engines": {
+    "atom": ">=0.174.0 <2.0.0"
+  },
+  "consumedServices": {
+    "vim-mode": {
+      "versions": {
+        "^0.1.0": "consumeVimMode"
+      }
+    }
+  },
+  "dependencies": {
+    "underscore-plus": "^1.6.6"
+  },
+  "readme": "# vim-mode-visual-block\n\nAdd visual-block operation to [vim-mode](https://atom.io/packages/vim-mode).\n\n![gif](https://raw.githubusercontent.com/t9md/t9md/375d45f661b76cd8fd874dbcacf93602e7d75c99/img/vim-mode-visual-blockwise.gif)\n\n# What's this?\n\n**Temporarily** workaround, until vim-mode support visual block mode natively.\nI'm not intended to complete solution.\n\n# Keymap\n\nFrom version 0.2.5, starting to provide [default keymap](https://github.com/t9md/atom-vim-mode-visual-block/blob/master/keymaps/vim-mode-visual-block.cson).  \n\nFor older version user\n* Remove explicit keymap from `keymap.cson` and use default keymap.\n\n# Limitation\n- Currently yank and paste for block range is not suppoted.\n- No support for non-contiguous multi selection.\n\n# Todo\n* [x] Precise state check when escape from visual-block.\n* [x] Support other insert-mode initiator like `a`, `i`, `C`.\n* [ ] Yank and paste support.\n* [ ] Concatenate undo transaction?.\n",
+  "readmeFilename": "README.md",
+  "bugs": {
+    "url": "https://github.com/t9md/atom-vim-mode-visual-block/issues"
+  },
+  "homepage": "https://github.com/t9md/atom-vim-mode-visual-block",
+  "_id": "vim-mode-visual-block@0.2.7",
+  "_shasum": "13e1098ad2d14b834a6708c602295b05399147f4",
+  "_resolved": "file:../d-11562-87855-1gkfksx/package.tgz",
+  "_from": "../d-11562-87855-1gkfksx/package.tgz",
+  "_atomModuleCache": {
+    "version": 1,
+    "dependencies": [
+      {
+        "name": "underscore-plus",
+        "version": "1.6.6",
+        "path": "node_modules/underscore-plus/lib/underscore-plus.js"
+      },
+      {
+        "name": "underscore",
+        "version": "1.6.0",
+        "path": "node_modules/underscore-plus/node_modules/underscore/underscore.js"
+      }
+    ],
+    "extensions": {
+      ".coffee": [
+        "lib/main.coffee"
+      ],
+      ".js": [
+        "node_modules/underscore-plus/lib/underscore-plus.js",
+        "node_modules/underscore-plus/node_modules/underscore/underscore-min.js",
+        "node_modules/underscore-plus/node_modules/underscore/underscore.js"
+      ],
+      ".json": [
+        "node_modules/underscore-plus/node_modules/underscore/package.json",
+        "node_modules/underscore-plus/package.json",
+        "package.json"
+      ]
+    },
+    "folders": [
+      {
+        "paths": [
+          "lib",
+          ""
+        ],
+        "dependencies": {
+          "underscore-plus": "^1.6.6"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/underscore-plus/lib",
+          "node_modules/underscore-plus"
+        ],
+        "dependencies": {
+          "underscore": "~1.6.0"
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/atom/packages/vim-mode/.coffeelintignore b/atom/packages/vim-mode/.coffeelintignore
new file mode 100644 (file)
index 0000000..1db51fe
--- /dev/null
@@ -0,0 +1 @@
+spec/fixtures
diff --git a/atom/packages/vim-mode/.npmignore b/atom/packages/vim-mode/.npmignore
new file mode 100644 (file)
index 0000000..3c3629e
--- /dev/null
@@ -0,0 +1 @@
+node_modules
diff --git a/atom/packages/vim-mode/.travis.yml b/atom/packages/vim-mode/.travis.yml
new file mode 100644 (file)
index 0000000..d73c8e2
--- /dev/null
@@ -0,0 +1,11 @@
+language: objective-c
+
+notifications:
+  email:
+    on_success: never
+    on_failure: change
+
+script: 'curl -s https://raw.githubusercontent.com/atom/ci/master/build-package.sh | sh'
+
+git:
+  depth: 10
diff --git a/atom/packages/vim-mode/CHANGELOG.md b/atom/packages/vim-mode/CHANGELOG.md
new file mode 100644 (file)
index 0000000..2fea87b
--- /dev/null
@@ -0,0 +1,337 @@
+## HEAD
+
+## 0.52
+
+* Fix incorrect cursor motion when exiting visual mode w/ a reversed
+  selection - @t9md
+* Add setting to configure the regexp used for numbers and the `ctrl-a`
+  and `ctrl-x` keybindings - @jacekkopecky
+
+## 0.50
+
+* Fix cursor position after `dd` command - @bronson
+* Implement `ap` text-object differently than `ip` - MarkusSN
+
+## 0.49
+
+* Fix an issue that caused the cursor to move left incorrectly when near
+  the end of a line.
+
+## 0.48
+
+* Fix usages of deprecated APIs
+
+## 0.47
+
+* Fix usages of deprecated APIs - @hitsmaxft, @jacekkopecky
+
+## 0.46
+
+* Fix issues with deleting when there are multiple selections - @jacekkopecky
+* Add paragraph text-objects 'ip' and 'ap' - @t9md
+* Fix use of a deprecated method - @akonwi
+
+## 0.45
+
+* Added `ctrl-x` and `ctrl-a` for incrementing and decrementing numbers - @jacekkopecky
+* Fixed the behavior of scrolling motions in visual mode - @daniloisr
+
+## 0.44
+
+* Fixed issue where canceling the replace operator would delete text - @jacekkopecky
+* Implemented repeat search commands: '//', '??', etc - @jacekkopecky
+* Fixed issue where registers' contents were overwritten with the empty string - @jacekkopecky
+
+## 0.43
+
+* Made '%', '\*' and '\#' interact properly with search history @jacekkopecky
+
+## 0.42
+
+* Fixed spurious command bindings on command mode input element - @andischerer
+
+## 0.41
+
+* Added ability to append to register - @jacekkopecky
+* Fixed an issue where deactivation would sometimes fail
+
+## 0.40
+
+* Fixed an issue where the search input text was not visible - @tmm1
+* Added a different status-bar entry for visual-line mode - @jacekkopecky
+
+## 0.39
+
+* Made repeating insertions work more correctly with multiple cursors
+* Fixed bugs in `*` and `#` with cursor between words - @jacekkopecky
+
+## 0.38
+
+* Implemented change case operators: `gU`, `gu` and `g~` - @jacekkopecky
+* Fixed behavior of repeating `I` and `A` insertions - @jacekkopecky
+
+## 0.36
+
+* Fixed an issue where `d` and `c` with forward motions would sometimes
+  incorrectly delete the character before the cursor - @deiwin
+
+## 0.35
+
+* Implemented basic version of `i t` operator - @neiled
+* Made `t` motion repeatable with `;` - @jacekkopecky
+
+## 0.34
+
+* Added a service API so that other packages can extend vim-mode - @lloeki
+* Added an insert-mode mapping for ctrl-u - @nicolaiskogheim
+
+## 0.33
+
+* Added a setting for using the system clipboard as the default register - @chrisfarms
+
+## 0.32
+
+* Added setting for allowing traversal of line breaks via `h` and `l` - @jacekkopecky
+* Fixed handling of whitespace characters in `B` mapping - @jacekkopecky
+* Fixed bugs when using counts with `f`, `F`, `t` and `T` mappings - @jacekkopecky
+
+## 0.31
+
+* Added '_' binding - @ftwillms
+* Fixed an issue where the '>', '<', and '=' operators
+  would move the cursor incorrectly.
+
+## 0.30
+
+* Make toggle-case operator work with multiple cursors
+
+## 0.29
+
+* Fix regression where '%' stopped working across multiple lines
+
+## 0.28
+
+* Fix some deprecation warnings
+
+## 0.27
+
+* Enter visual mode when selecting text in command mode
+* Don't select text after undo
+* Always preserve selection of the intially-selected character in visual mode
+* Fix bugs in the '%' motion
+* Fix bugs in the 'S' operator
+
+## 0.26
+
+* Add o mapping in visual mode, for reversing selections
+* Implement toggle-case in visual mode
+* Fix bug in 'around word' text object
+
+## 0.25
+
+* Fixed a regression in the handling of the 'cw' command
+* Made the replace operator work with multiple cursors
+
+## 0.24
+
+* Fixed the position of the cursor after certain yank operations.
+* Fixed an issue where duplicate vim states were created when an editors were
+  moved to different panes.
+
+## 0.23
+
+* Made motions, operators and text-objects work properly in the
+  presence of multiple cursors.
+
+## 0.22
+
+* Fixed a stylesheet issue that caused visual glitches when vim-mode
+  was disabled with the Shadow DOM turned on.
+
+## 0.21
+
+* Fix issue where search panel was not removed properly
+* Updated the stylesheet for compatibility with shadow-DOM-enabled editors
+
+## 0.20
+* Ctrl-w for delete-to-beginning-of-word in insert mode
+* Folding key-bindings
+* Remove more deprecated APIs
+
+## 0.19.1
+* Fix behavior of ctrl-D, ctrl-U @anvyzhang
+* Fix selection when moving up or down in visual line mode @mdp
+* Remove deprecated APIs
+* Fix interaction with autocomplete
+
+## 0.19
+* Properly re-enable editor input after disabling vim-mode
+
+## 0.17
+* Fix typo
+
+## 0.16
+* Make go-to-line motions work with operators @gittyupagain
+* Allow replacing text with newlines using `r` @dcalhoun
+* Support smart-case in when searching @isaachess
+
+## 0.14
+* Ctrl-c for command mode on mac only @sgtpepper43
+* Add css to status bar mode for optional custom styling @e-jigsaw
+* Implement `-`, `+`, and `enter` @roryokane
+* Fix problem undo'ing in insert mode @bhuga
+* Remove use of deprecated APIs
+
+## 0.11.1
+* Fix interaction with autocomplete-plus @klorenz
+
+## 0.11.0
+* Fix `gg` and `G` in visual mode @cadwallion
+* Implement `%` @carlosdcastillo
+* Add ctags keybindings @tmm1
+* Fix tracking of marks when buffer changes @carlosdcastillo
+* Fix off-by-one error for characterwise puts @carlosdcastillo
+* Add support for undo and repeat to typing operations @bhuga
+* Fix keybindings for some OSes @mcnicholls
+* Fix visual `ngg` @tony612
+* Implement i{, i(, and i" @carlosdcastillo
+* Fix off by one errors while selecting with j and k @fotanus
+* Implement 'desired cursor column' behavior @iamjwc
+
+## 0.10.0
+* Fix E in visual mode @tony612
+* Implement `` @guanlun
+* Fix broken behavior when enabling/disabling @cadwallion
+* Enable search in visual mode @romankuznietsov
+* Fix end-of-line movement @abijr
+* Fix behavior of change current line `cc` in various corner cases. @jcurtis
+* Fix some corner cases of `w` @abijr
+* Don't hide cursor in visual mode @dyross
+
+## 0.9.0 - Lots of new features
+* Enable arrow keys in visual mode @fholgado
+* Additional bindings for split pane movement @zenhob
+* Fix search on invalid regex @bhuga
+* Add `s` alias to visual mode @tony612
+* Display current mode in the status bar @gblock0
+* Add marks (m, `, ') @danzimm
+* Add operator-pending mode and a single text object (`iw`) @nathansobo, @jroes
+* Add an option to start in insert mode @viveksjain
+* Fix weird behavior when pasting at the end of a file @msvbg
+* More fixes for corner cases in paste behavior @SKAhack
+* Implement * and # @roman
+* Implement ~ @badunk
+* Implement t and T @udp
+
+## 0.8.1 - Small goodies
+* Implement `ctrl-e` and `ctrl-y` @dougblack
+* Implement `/`, `?`, `n` and `N` @bhuga
+* Registers are now shared between tabs in a single atom window @bhuga
+* Show cursor only in focused editor @tony612
+* Docs updated with new methods for entering insert mode @tednaleid
+* Implement `r` @bhuga
+* Fix `w` when on the last word of a file @dougblack
+* Implement `=` @ciarand
+* Implement `E` motion @tony612
+* Implement basic `ctrl-f` and `ctrl-b` support @ciarand
+* Added `+`, `*` and `%` registers @cschneid
+* Improved `^` movement when already at the first character @zenhob
+* Fix off-by-one error for `15gg` @tony612
+
+## 0.8.0 - Keep rocking
+* API Fixes for Atom 0.62 @bhuga
+* Add `$` and `^` to visual mode @spyc3r
+* Add `0` to visual mode @ruedap
+* Fix for yanking entire lines @chadkouse
+* Add `X` operator @ruedap
+* Add `W` and `B` motions @jcurtis
+* Prevent cursor left at column 0 when switching to insert mode @adrianolaru
+* Add pane switching shortcuts see #104 for details @dougblack
+* Add `H`, `L` and `M` motions @dougblack
+
+## 0.7.2 - Full steam ahead
+* Leaving insert mode always moves cursor left @joefiorini
+* Implemented `I` command @dysfunction
+* Restored `0` motion @jroes
+* Implemented `}` motion to move to previous paragraph @zenhob
+* Implement `gt` and `gT` to cycle through tabs @JosephKu
+* Implement visual linewise mode @eoinkelly
+* Properly clear selection when return to command mode @chadkouse
+
+## 0.7.1 - User improvements
+* `ctrl-[` now activates command mode @ctbarna
+* enter now moves down a line in command mode @ctbarna
+* Documentation links now work on atom.io @michaeltwofish
+* Backspace now moves back a space in command mode @Tarrant
+* Fixed an issue where cursors wouldn't appear in the settings view.
+
+## 0.7.0 - Updates for release
+* Update contributing guide
+* Update package.json
+* Require underscore-plus directly
+
+## 0.6.0 - Updates
+* Implemented `.` operator, thanks to @bhuga
+* Fix putting at the end of lines, thanks to @bhuga
+* Compatibility with Atom 0.50.0
+
+## 0.5.0 - Updates
+* Switches apm db to buttant from iriscouch
+
+## 0.4.0 - Updates
+* Compatibilty with Atom 26
+
+## 0.3.0 - Visual and Collaborative
+* Compatiblity with atom 0.21
+* Characterwise visual-mode!
+* System copy and paste are now linked to the `*`
+* Implement `A` operator
+* Bugfixes concerning `b` and `P`
+
+## 0.2.3 - Not solo anymore
+
+* Major refactoring/cleanup/test speedup.
+* Added `S` command.
+* Added `C` operator.
+* Proper undo/redo transactions for repeated commands.
+* Enhance `G` to take line numbers.
+* Added `Y` operator.
+* Added `ctrl-c` to enter command mode.
+
+## 0.2.2
+
+* Added `s` command.
+* Added `e` motion.
+* Fixed `cw` removing trailing whitepsace
+* Fixed cursor position for `dd` when deleting blank lines
+
+## 0.2.1
+
+* Added the `c` operator (thanks Yosef!)
+* Cursor appears as block in command mode and blinks when inserting (thanks Corey!)
+* Delete operations now save deleted text to the default buffer
+* Implement `gg` and `G` motions
+* Implement `P` operator
+* Implement `o` and `O` commands
+
+## 0.2.0
+
+* Added yank and put command with support for registers
+* Added `$` and `^` motions
+* Fixed repeats for commands and motions, ie `d2d` works as expected.
+* Implemented `D` to delete through the end of the line.
+* Implemented `>>` and `<<` indent and outdent commands.
+* Implemented `J`.
+* Implemented `a` to move cursor and enter insert mode.
+* Add basic scrolling using `ctrl-u` and `ctrl-d`.
+* Add basic undo/redo using `u` and `ctrl-r`. This needs to be improved so it
+  understands vim's semantics.
+
+## 0.1.0
+
+* Nothing changed, used this as a test release to understand the
+  publishing flow.
+
+## 0.0.1
+
+* Initial release, somewhat functional but missing many things.
diff --git a/atom/packages/vim-mode/CONTRIBUTING.md b/atom/packages/vim-mode/CONTRIBUTING.md
new file mode 100644 (file)
index 0000000..0fd0ad6
--- /dev/null
@@ -0,0 +1 @@
+See the [Atom contributing guide](https://github.com/atom/atom/blob/master/CONTRIBUTING.md)
diff --git a/atom/packages/vim-mode/LICENSE.md b/atom/packages/vim-mode/LICENSE.md
new file mode 100644 (file)
index 0000000..4d231b4
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2014 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/vim-mode/MAINTAINERS.md b/atom/packages/vim-mode/MAINTAINERS.md
new file mode 100644 (file)
index 0000000..fe31e61
--- /dev/null
@@ -0,0 +1,31 @@
+## Maintainers Guide
+
+We'd like to foster an active community of mutual respect. With that as our
+guiding principle, we strive to do the following:
+
+* Respond to issues/pulls in a timely manner.
+* Encourage new contributors when possible.
+* Maintain high code quality by ensuring all pull requests:
+  * Have clear concise code.
+  * Have passing specs.
+  * Have a proper note in the docs (if appropriate).
+  * Be made mergable by its creator (good feedback is hard enough).
+  * If a pull doesn't meet these standards, we should offer helpful actionable
+    advice to get it there.
+* Add `CHANGELOG.md` entries for every pull merged.
+* Publish new releases in a timely manner.
+* Responsibly upgrade along with Atom core
+  * Tag the last compatible version with the correct Atom version before making a breaking change
+  * Merge finished pull requests before merging breaking changes
+* Label issues clearly
+  * As either an `issue`, `enhancement` or `question`.
+  * The `question` label indicates that there's a question about current
+    functionality or future functionality.
+* Label pull requests clearly
+  * As either an `issue` or `enhancement`.
+  * While being reviewed mark an additional `under-review` label if appropriate,
+    so the community knows the status.
+  * If a pull request requires changes by the creator an additional
+    `requires-changes` label is appropriate.
+  * Pulls that require core changes that aren't ready yet should be labeled
+    with an additional `blocked` label.
diff --git a/atom/packages/vim-mode/README.md b/atom/packages/vim-mode/README.md
new file mode 100644 (file)
index 0000000..1562a91
--- /dev/null
@@ -0,0 +1,48 @@
+## Vim Mode package [![Build Status](https://travis-ci.org/atom/vim-mode.svg?branch=master)](https://travis-ci.org/atom/vim-mode)
+
+Provides vim modal control for Atom, ideally blending the best of vim
+and Atom.
+
+### Installing
+
+Use the Atom package manager, which can be found in the Settings view or
+run `apm install vim-mode` from the command line.
+
+### Current Status
+
+Sizable portions of Vim's command mode work as you'd expect, including
+many complex combinations. Even so, this package is far from finished (Vim
+wasn't built in a day).
+
+If you want the vim ex line (for `:w`, `:s`, etc.), you can try [ex-mode](https://atom.io/packages/ex-mode)
+which works in conjuction with this plugin.
+
+Currently, vim-mode requires soft line wraps to be disabled, and has some issues
+with international keyboard layouts.
+
+If there's a feature of Vim you're missing, it might just be that you use it
+more often than other developers. Adding a feature can be quick and easy. Check
+out the [closed pull requests](https://github.com/atom/vim-mode/pulls?direction=desc&page=1&sort=created&state=closed)
+to see examples of community contributions. We're looking forward to yours, too.
+
+### Documentation
+
+* [Overview](https://github.com/atom/vim-mode/blob/master/docs/overview.md)
+* [Motions](https://github.com/atom/vim-mode/blob/master/docs/motions.md)
+* [Operators](https://github.com/atom/vim-mode/blob/master/docs/operators.md)
+* [Windows](https://github.com/atom/vim-mode/blob/master/docs/windows.md)
+* [Scrolling](https://github.com/atom/vim-mode/blob/master/docs/scrolling.md)
+
+### Development
+
+* Create a branch with your feature/fix.
+* Add a spec (take inspiration from the ones that are already there).
+* If you're adding a command be sure to update the appropriate file in
+  `docs/`
+* Create a PR.
+
+When in doubt, open a PR earlier rather than later so that you can receive
+feedback from the community. We want to get your fix or feature included as much
+as you do.
+
+See [the contribution guide](https://github.com/atom/vim-mode/blob/master/CONTRIBUTING.md).
diff --git a/atom/packages/vim-mode/coffeelint.json b/atom/packages/vim-mode/coffeelint.json
new file mode 100644 (file)
index 0000000..a5dd715
--- /dev/null
@@ -0,0 +1,37 @@
+{
+  "max_line_length": {
+    "level": "ignore"
+  },
+  "no_empty_param_list": {
+    "level": "error"
+  },
+  "arrow_spacing": {
+    "level": "error"
+  },
+  "no_interpolation_in_single_quotes": {
+    "level": "error"
+  },
+  "no_debugger": {
+    "level": "error"
+  },
+  "prefer_english_operator": {
+    "level": "error"
+  },
+  "colon_assignment_spacing": {
+    "spacing": {
+      "left": 0,
+      "right": 1
+    },
+    "level": "error"
+  },
+  "braces_spacing": {
+    "spaces": 0,
+    "level": "error"
+  },
+  "spacing_after_comma": {
+    "level": "error"
+  },
+  "no_stand_alone_at": {
+    "level": "error"
+  }
+}
diff --git a/atom/packages/vim-mode/docs/motions.md b/atom/packages/vim-mode/docs/motions.md
new file mode 100644 (file)
index 0000000..77442e6
--- /dev/null
@@ -0,0 +1,37 @@
+## Implemented Motions
+
+* [w](http://vimhelp.appspot.com/motion.txt.html#w)
+* [W](http://vimhelp.appspot.com/motion.txt.html#W)
+* [e](http://vimhelp.appspot.com/motion.txt.html#e)
+* [E](http://vimhelp.appspot.com/motion.txt.html#E)
+* [b](http://vimhelp.appspot.com/motion.txt.html#b)
+* [B](http://vimhelp.appspot.com/motion.txt.html#B)
+* [h](http://vimhelp.appspot.com/motion.txt.html#h)
+* [j](http://vimhelp.appspot.com/motion.txt.html#j)
+* [k](http://vimhelp.appspot.com/motion.txt.html#k)
+* [l](http://vimhelp.appspot.com/motion.txt.html#l)
+* [{](http://vimhelp.appspot.com/motion.txt.html#%7B)
+* [}](http://vimhelp.appspot.com/motion.txt.html#%7D)
+* [^](http://vimhelp.appspot.com/motion.txt.html#%5E)
+* [$](http://vimhelp.appspot.com/motion.txt.html#%24)
+* [0](http://vimhelp.appspot.com/motion.txt.html#0)
+* [-](http://vimhelp.appspot.com/motion.txt.html#-)
+* [+](http://vimhelp.appspot.com/motion.txt.html#+)
+* [_](http://vimhelp.appspot.com/motion.txt.html#_)
+* [&lt;enter&gt;](http://vimhelp.appspot.com/motion.txt.html#<CR>)
+* [gg](http://vimhelp.appspot.com/motion.txt.html#gg)
+* [G](http://vimhelp.appspot.com/motion.txt.html#G)
+* [gt](http://vimhelp.appspot.com/tabpage.txt.html#gt)
+* [gT](http://vimhelp.appspot.com/tabpage.txt.html#gT)
+* [H](http://vimhelp.appspot.com/motion.txt.html#H)
+* [L](http://vimhelp.appspot.com/motion.txt.html#L)
+* [M](http://vimhelp.appspot.com/motion.txt.html#M)
+* ['[a-z][A-Z]](http://vimhelp.appspot.com/motion.txt.html#%27)
+* [`[a-z][A-Z]](http://vimhelp.appspot.com/motion.txt.html#%27)
+* [f](http://vimhelp.appspot.com/motion.txt.html#f)
+* [F](http://vimhelp.appspot.com/motion.txt.html#F)
+* [t](http://vimhelp.appspot.com/motion.txt.html#t)
+* [T](http://vimhelp.appspot.com/motion.txt.html#T)
+* [;](http://vimhelp.appspot.com/motion.txt.html#%3B)
+* [,](http://vimhelp.appspot.com/motion.txt.html#%2C)
+* [/ and ?](http://vimhelp.appspot.com/pattern.txt.html#search-commands) (including `//` and `??`)
diff --git a/atom/packages/vim-mode/docs/operators.md b/atom/packages/vim-mode/docs/operators.md
new file mode 100644 (file)
index 0000000..d816daa
--- /dev/null
@@ -0,0 +1,43 @@
+## Implemented Operators
+
+* [Delete](http://vimhelp.appspot.com/change.txt.html#deleting)
+  * `vwd` - works in visual mode
+  * `dw` - with a motion
+  * `3d2w` - with repeating operator and motion
+  * `dd` - linewise
+  * `d2d` - repeated linewise
+  * `D` - delete to the end of the line
+  * `X` - delete the character before the cursor
+* [Change](http://vimhelp.appspot.com/change.txt.html#c)
+  * `vwc` - works in visual mode
+  * `cw` - deletes the next word and switches to insert mode.
+  * `cc` - linewise
+  * `c2c` - repeated linewise
+  * `C` - change to the end of the line
+* [Adding and subtracting](http://vimhelp.appspot.com/change.txt.html#CTRL-A)
+  * `ctrl-a` and `ctrl-x` in command mode to increase/decrease numbers in text
+* [Yank](http://vimhelp.appspot.com/change.txt.html#yank)
+  * `vwy` - works in visual mode
+  * `yw` - with a motion
+  * `yy` - linewise
+  * `y2y` - repeated linewise
+  * `"ayy` - supports registers (named a-z, A-Z for append, *, +, %, _)
+  * `Y` - linewise
+* Indent/Outdent/Auto-indent
+  * `vw>` - works in visual mode
+  * `>>` - indent current line one level
+  * `<<` - outdent current line one level
+  * `==` - auto-indents current line
+* [Put](http://vimhelp.appspot.com/change.txt.html#p)
+  * `p` - default register
+  * `P` - pastes the default register before the current cursor.
+  * `"ap` - supports registers (only named a-h, pending more
+    advanced atom keymap support)
+* [Join](http://vimhelp.appspot.com/change.txt.html#J)
+  * `J` - joins the current line with the immediately following line.
+* [Mark](http://vimhelp.appspot.com/motion.txt.html#m)
+  * `m[a-z][A-Z]` - marks the current cursor position
+* [Case](http://vimhelp.appspot.com/motion.txt.html#operator)
+  * `~` or `g~` - toggles case
+  * `gU`, or `U` in visual mode - changes to upper case
+  * `gu`, or `u` in visual mode - changes to lower case
diff --git a/atom/packages/vim-mode/docs/overview.md b/atom/packages/vim-mode/docs/overview.md
new file mode 100644 (file)
index 0000000..3f91ea9
--- /dev/null
@@ -0,0 +1,15 @@
+## Overview
+
+* There are only currently two modes, command mode and insert mode.
+* Motions have repeat support, `d3w` will delete three words.
+* Insert mode can be entered using `i`, `I`, `a`, `A`, `o`, or `O`.
+* Registers are a work in progress
+  * What Exists:
+    * `a-z` - Named registers
+    * `A-Z` - Appending to named registers
+    * `*`, `+` - System clipboard registers, although there's no distinction between the two currently.
+    * `%`   - Current filename read-only register
+    * `_` - Blackhole register
+  * What Doesn't Exist:
+    * default buffer doesn't yet save on delete operations.
+* Setting `wrapLeftRightMotion` acts like VIM's whichwrap=h,l,<,>
diff --git a/atom/packages/vim-mode/docs/scrolling.md b/atom/packages/vim-mode/docs/scrolling.md
new file mode 100644 (file)
index 0000000..348b395
--- /dev/null
@@ -0,0 +1,14 @@
+## Implemented Scrolling Commands
+
+* [ctrl-e](http://vimhelp.appspot.com/scroll.txt.html#CTRL-E)
+* [ctrl-y](http://vimhelp.appspot.com/scroll.txt.html#CTRL-Y)
+* [ctrl-f](http://vimhelp.appspot.com/scroll.txt.html#CTRL-F)
+* [ctrl-b](http://vimhelp.appspot.com/scroll.txt.html#CTRL-B)
+* [ctrl-u](http://vimhelp.appspot.com/scroll.txt.html#CTRL-U)
+* [ctrl-d](http://vimhelp.appspot.com/scroll.txt.html#CTRL-D)
+* [z enter](http://vimhelp.appspot.com/scroll.txt.html#z%3CCR%3E)
+* [zt](http://vimhelp.appspot.com/scroll.txt.html#zt)
+* [z.](http://vimhelp.appspot.com/scroll.txt.html#z.)
+* [zz](http://vimhelp.appspot.com/scroll.txt.html#zz)
+* [z-](http://vimhelp.appspot.com/scroll.txt.html#z-)
+* [zb](http://vimhelp.appspot.com/scroll.txt.html#zb)
diff --git a/atom/packages/vim-mode/docs/windows.md b/atom/packages/vim-mode/docs/windows.md
new file mode 100644 (file)
index 0000000..ebad2d9
--- /dev/null
@@ -0,0 +1,12 @@
+## Implemented Split Pane Commands
+
+* `ctrl-w h`/`ctrl-w left`/`ctrl-w ctrl-h` - focus pane on left
+* `ctrl-w l`/`ctrl-w right`/`ctrl-w ctrl-l` - focus pane on right
+* `ctrl-w k`/`ctrl-w up`/`ctrl-w ctrl-k` - focus pane above
+* `ctrl-w j`/`ctrl-w down`/`ctrl-w ctrl-j` - focus pane below
+* `ctrl-w w`/`ctrl-w ctrl-w` - focus next pane
+* `ctrl-w p`/`ctrl-w ctrl-p` - focus previous pane
+* `ctrl-w v`/`ctrl-w ctrl-v` - create vertical split
+* `ctrl-w s`/`ctrl-w ctrl-s` - create horizontal split
+* `ctrl-w c`/`ctrl-w ctrl-c` - close focused pane
+* `ctrl-w q`/`ctrl-w ctrl-q` - close focused tab
diff --git a/atom/packages/vim-mode/keymaps/vim-mode.cson b/atom/packages/vim-mode/keymaps/vim-mode.cson
new file mode 100644 (file)
index 0000000..1a58c49
--- /dev/null
@@ -0,0 +1,327 @@
+'atom-text-editor.vim-mode':
+  'escape': 'vim-mode:reset-command-mode'
+  'ctrl-c': 'vim-mode:reset-command-mode'
+  'ctrl-[': 'vim-mode:reset-command-mode'
+
+'atom-text-editor.vim-mode:not(.command-mode)':
+  'escape': 'vim-mode:activate-command-mode'
+  'ctrl-[': 'vim-mode:activate-command-mode'
+
+'.platform-darwin atom-text-editor.vim-mode:not(.command-mode)':
+  'ctrl-c': 'vim-mode:activate-command-mode'
+
+'atom-text-editor.vim-mode.insert-mode':
+  'ctrl-w': 'editor:delete-to-beginning-of-word'
+  'ctrl-u': 'editor:delete-to-beginning-of-line'
+
+'atom-text-editor.vim-mode:not(.insert-mode)':
+  'h': 'vim-mode:move-left'
+  'left': 'vim-mode:move-left'
+  'backspace': 'core:move-left'
+  'l': 'vim-mode:move-right'
+  'space': 'vim-mode:move-right'
+  'right': 'vim-mode:move-right'
+  'k': 'vim-mode:move-up'
+  'up': 'vim-mode:move-up'
+  'j': 'vim-mode:move-down'
+  'down': 'vim-mode:move-down'
+
+  'w': 'vim-mode:move-to-next-word'
+  'W': 'vim-mode:move-to-next-whole-word'
+  'e': 'vim-mode:move-to-end-of-word'
+  'E': 'vim-mode:move-to-end-of-whole-word'
+  'b': 'vim-mode:move-to-previous-word'
+  'B': 'vim-mode:move-to-previous-whole-word'
+  '}': 'vim-mode:move-to-next-paragraph'
+  '{': 'vim-mode:move-to-previous-paragraph'
+  '0': 'vim-mode:move-to-beginning-of-line'
+  '^': 'vim-mode:move-to-first-character-of-line'
+  '_': 'vim-mode:move-to-first-character-of-line-and-down'
+  '$': 'vim-mode:move-to-last-character-of-line'
+  'g _': 'vim-mode:move-to-last-nonblank-character-of-line-and-down'
+  '-': 'vim-mode:move-to-first-character-of-line-up'
+  '+': 'vim-mode:move-to-first-character-of-line-down'
+  'enter': 'vim-mode:move-to-first-character-of-line-down'
+  'g g': 'vim-mode:move-to-start-of-file'
+  'ctrl-u': 'vim-mode:scroll-half-screen-up'
+  'ctrl-b': 'vim-mode:scroll-full-screen-up'
+  'ctrl-d': 'vim-mode:scroll-half-screen-down'
+  'ctrl-f': 'vim-mode:scroll-full-screen-down'
+  'ctrl-e': 'vim-mode:scroll-down'
+  'ctrl-y': 'vim-mode:scroll-up'
+  'z enter': 'vim-mode:scroll-cursor-to-top'
+  'z t': 'vim-mode:scroll-cursor-to-top-leave'
+  'z .': 'vim-mode:scroll-cursor-to-middle'
+  'z z': 'vim-mode:scroll-cursor-to-middle-leave'
+  'z -': 'vim-mode:scroll-cursor-to-bottom'
+  'z b': 'vim-mode:scroll-cursor-to-bottom-leave'
+  'z M': 'editor:fold-all'
+  'z R': 'editor:unfold-all'
+  'z c': 'editor:fold-current-row'
+  'z o': 'editor:unfold-current-row'
+  'G': 'vim-mode:move-to-line'
+  'H': 'vim-mode:move-to-top-of-screen'
+  'L': 'vim-mode:move-to-bottom-of-screen'
+  'M': 'vim-mode:move-to-middle-of-screen'
+
+  'd': 'vim-mode:delete'
+  'D': 'vim-mode:delete-to-last-character-of-line'
+  'c': 'vim-mode:change'
+  'C': 'vim-mode:change-to-last-character-of-line'
+  'S': 'vim-mode:substitute-line'
+  'r': 'vim-mode:replace'
+  'I': 'vim-mode:insert-at-beginning-of-line'
+  '>': 'vim-mode:indent'
+  '<': 'vim-mode:outdent'
+  '=': 'vim-mode:auto-indent'
+  'J': 'vim-mode:join'
+
+  'y': 'vim-mode:yank'
+  'Y': 'vim-mode:yank-line'
+  'P': 'vim-mode:put-before'
+  'p': 'vim-mode:put-after'
+
+  'g ~': 'vim-mode:toggle-case'
+  'g U': 'vim-mode:upper-case'
+  'g u': 'vim-mode:lower-case'
+  '~': 'vim-mode:toggle-case-now'
+
+  'ctrl-w ctrl-h': 'window:focus-pane-on-left'
+  'ctrl-w h': 'window:focus-pane-on-left'
+  'ctrl-w left': 'window:focus-pane-on-left'
+  'ctrl-w ctrl-l': 'window:focus-pane-on-right'
+  'ctrl-w l': 'window:focus-pane-on-right'
+  'ctrl-w right': 'window:focus-pane-on-right'
+  'ctrl-w ctrl-k': 'window:focus-pane-above'
+  'ctrl-w k': 'window:focus-pane-above'
+  'ctrl-w up': 'window:focus-pane-above'
+  'ctrl-w ctrl-j': 'window:focus-pane-below'
+  'ctrl-w j': 'window:focus-pane-below'
+  'ctrl-w down': 'window:focus-pane-below'
+  'ctrl-w ctrl-w': 'window:focus-next-pane'
+  'ctrl-w w': 'window:focus-next-pane'
+  'ctrl-w ctrl-p': 'window:focus-previous-pane'
+  'ctrl-w p': 'window:focus-previous-pane'
+  'ctrl-w ctrl-v': 'pane:split-right'
+  'ctrl-w v': 'pane:split-right'
+  'ctrl-w ctrl-s': 'pane:split-down'
+  'ctrl-w s': 'pane:split-down'
+  'ctrl-w ctrl-c': 'pane:close'
+  'ctrl-w c': 'pane:close'
+  'ctrl-w ctrl-q': 'core:close'
+  'ctrl-w q': 'core:close'
+  'g t': 'pane:show-next-item'
+  'g T': 'pane:show-previous-item'
+
+  'm': 'vim-mode:mark'
+  '`': 'vim-mode:move-to-mark-literal'
+  '\'': 'vim-mode:move-to-mark'
+
+  'f': 'vim-mode:find'
+  'F': 'vim-mode:find-backwards'
+  't': 'vim-mode:till'
+  'T': 'vim-mode:till-backwards'
+  ';': 'vim-mode:repeat-find'
+  ',': 'vim-mode:repeat-find-reverse'
+
+  '/': 'vim-mode:search'
+  '?': 'vim-mode:reverse-search'
+  '*': 'vim-mode:search-current-word'
+  '#': 'vim-mode:reverse-search-current-word'
+  'n': 'vim-mode:repeat-search'
+  'N': 'vim-mode:repeat-search-backwards'
+
+  '%': 'vim-mode:bracket-matching-motion'
+
+  '1': 'vim-mode:repeat-prefix'
+  '2': 'vim-mode:repeat-prefix'
+  '3': 'vim-mode:repeat-prefix'
+  '4': 'vim-mode:repeat-prefix'
+  '5': 'vim-mode:repeat-prefix'
+  '6': 'vim-mode:repeat-prefix'
+  '7': 'vim-mode:repeat-prefix'
+  '8': 'vim-mode:repeat-prefix'
+  '9': 'vim-mode:repeat-prefix'
+
+'atom-text-editor.vim-mode.command-mode':
+  'i': 'vim-mode:activate-insert-mode'
+  'v': 'vim-mode:activate-characterwise-visual-mode'
+  'V': 'vim-mode:activate-linewise-visual-mode'
+  'ctrl-v': 'vim-mode:activate-blockwise-visual-mode'
+
+  'u': 'vim-mode:undo'
+  'ctrl-r': 'core:redo'
+
+  'O': 'vim-mode:insert-above-with-newline'
+  'o': 'vim-mode:insert-below-with-newline'
+  'a': 'vim-mode:insert-after'
+  'A': 'vim-mode:insert-after-end-of-line'
+  'x': 'vim-mode:delete-right'
+  'X': 'vim-mode:delete-left'
+  's': 'vim-mode:substitute'
+  '.': 'vim-mode:repeat'
+
+  'ctrl-]': 'symbols-view:go-to-declaration'
+  'ctrl-T': 'symbols-view:return-from-declaration'
+
+  'ctrl-a': 'vim-mode:increase'
+  'ctrl-x': 'vim-mode:decrease'
+
+  '" a': 'vim-mode:register-prefix'
+  '" b': 'vim-mode:register-prefix'
+  '" c': 'vim-mode:register-prefix'
+  '" d': 'vim-mode:register-prefix'
+  '" e': 'vim-mode:register-prefix'
+  '" f': 'vim-mode:register-prefix'
+  '" g': 'vim-mode:register-prefix'
+  '" h': 'vim-mode:register-prefix'
+  '" i': 'vim-mode:register-prefix'
+  '" j': 'vim-mode:register-prefix'
+  '" k': 'vim-mode:register-prefix'
+  '" l': 'vim-mode:register-prefix'
+  '" m': 'vim-mode:register-prefix'
+  '" n': 'vim-mode:register-prefix'
+  '" o': 'vim-mode:register-prefix'
+  '" p': 'vim-mode:register-prefix'
+  '" q': 'vim-mode:register-prefix'
+  '" r': 'vim-mode:register-prefix'
+  '" s': 'vim-mode:register-prefix'
+  '" t': 'vim-mode:register-prefix'
+  '" u': 'vim-mode:register-prefix'
+  '" v': 'vim-mode:register-prefix'
+  '" w': 'vim-mode:register-prefix'
+  '" x': 'vim-mode:register-prefix'
+  '" y': 'vim-mode:register-prefix'
+  '" z': 'vim-mode:register-prefix'
+  '" A': 'vim-mode:register-prefix'
+  '" B': 'vim-mode:register-prefix'
+  '" C': 'vim-mode:register-prefix'
+  '" D': 'vim-mode:register-prefix'
+  '" E': 'vim-mode:register-prefix'
+  '" F': 'vim-mode:register-prefix'
+  '" G': 'vim-mode:register-prefix'
+  '" H': 'vim-mode:register-prefix'
+  '" I': 'vim-mode:register-prefix'
+  '" J': 'vim-mode:register-prefix'
+  '" K': 'vim-mode:register-prefix'
+  '" L': 'vim-mode:register-prefix'
+  '" M': 'vim-mode:register-prefix'
+  '" N': 'vim-mode:register-prefix'
+  '" O': 'vim-mode:register-prefix'
+  '" P': 'vim-mode:register-prefix'
+  '" Q': 'vim-mode:register-prefix'
+  '" R': 'vim-mode:register-prefix'
+  '" S': 'vim-mode:register-prefix'
+  '" T': 'vim-mode:register-prefix'
+  '" U': 'vim-mode:register-prefix'
+  '" V': 'vim-mode:register-prefix'
+  '" W': 'vim-mode:register-prefix'
+  '" X': 'vim-mode:register-prefix'
+  '" Y': 'vim-mode:register-prefix'
+  '" Z': 'vim-mode:register-prefix'
+  '" *': 'vim-mode:register-prefix'
+  '" +': 'vim-mode:register-prefix'
+  '" %': 'vim-mode:register-prefix'
+  '" _': 'vim-mode:register-prefix'
+
+'atom-text-editor.vim-mode.operator-pending-mode, atom-text-editor.vim-mode.visual-mode':
+  'i w': 'vim-mode:select-inside-word'
+  'i "': 'vim-mode:select-inside-double-quotes'
+  'i \'': 'vim-mode:select-inside-single-quotes'
+  'i `': 'vim-mode:select-inside-back-ticks'
+  'i {': 'vim-mode:select-inside-curly-brackets'
+  'i }': 'vim-mode:select-inside-curly-brackets'
+  'i B': 'vim-mode:select-inside-curly-brackets'
+  'i <': 'vim-mode:select-inside-angle-brackets'
+  'i >': 'vim-mode:select-inside-angle-brackets'
+  'i t': 'vim-mode:select-inside-tags'
+  'i [': 'vim-mode:select-inside-square-brackets'
+  'i ]': 'vim-mode:select-inside-square-brackets'
+  'i (': 'vim-mode:select-inside-parentheses'
+  'i )': 'vim-mode:select-inside-parentheses'
+  'i b': 'vim-mode:select-inside-parentheses'
+  'i p': 'vim-mode:select-inside-paragraph'
+  'a w': 'vim-mode:select-a-word'
+  'a "': 'vim-mode:select-around-double-quotes'
+  'a \'': 'vim-mode:select-around-single-quotes'
+  'a `': 'vim-mode:select-around-back-ticks'
+  'a {': 'vim-mode:select-around-curly-brackets'
+  'a }': 'vim-mode:select-around-curly-brackets'
+  'a B': 'vim-mode:select-around-curly-brackets'
+  'a <': 'vim-mode:select-around-angle-brackets'
+  'a >': 'vim-mode:select-around-angle-brackets'
+  'a [': 'vim-mode:select-around-square-brackets'
+  'a ]': 'vim-mode:select-around-square-brackets'
+  'a (': 'vim-mode:select-around-parentheses'
+  'a )': 'vim-mode:select-around-parentheses'
+  'a b': 'vim-mode:select-around-parentheses'
+  'a p': 'vim-mode:select-around-paragraph'
+  'x': 'vim-mode:reset-command-mode'
+
+'atom-text-editor.vim-mode.visual-mode':
+  'x': 'vim-mode:delete'
+  's': 'vim-mode:change'
+  'o': 'vim-mode:reverse-selections'
+  'U': 'vim-mode:upper-case'
+  'u': 'vim-mode:lower-case'
+
+  'v':      'vim-mode:activate-characterwise-visual-mode'
+  'V':      'vim-mode:activate-linewise-visual-mode'
+  'ctrl-v': 'vim-mode:activate-blockwise-visual-mode'
+
+  '" a': 'vim-mode:register-prefix'
+  '" b': 'vim-mode:register-prefix'
+  '" c': 'vim-mode:register-prefix'
+  '" d': 'vim-mode:register-prefix'
+  '" e': 'vim-mode:register-prefix'
+  '" f': 'vim-mode:register-prefix'
+  '" g': 'vim-mode:register-prefix'
+  '" h': 'vim-mode:register-prefix'
+  '" i': 'vim-mode:register-prefix'
+  '" j': 'vim-mode:register-prefix'
+  '" k': 'vim-mode:register-prefix'
+  '" l': 'vim-mode:register-prefix'
+  '" m': 'vim-mode:register-prefix'
+  '" n': 'vim-mode:register-prefix'
+  '" o': 'vim-mode:register-prefix'
+  '" p': 'vim-mode:register-prefix'
+  '" q': 'vim-mode:register-prefix'
+  '" r': 'vim-mode:register-prefix'
+  '" s': 'vim-mode:register-prefix'
+  '" t': 'vim-mode:register-prefix'
+  '" u': 'vim-mode:register-prefix'
+  '" v': 'vim-mode:register-prefix'
+  '" w': 'vim-mode:register-prefix'
+  '" x': 'vim-mode:register-prefix'
+  '" y': 'vim-mode:register-prefix'
+  '" z': 'vim-mode:register-prefix'
+  '" A': 'vim-mode:register-prefix'
+  '" B': 'vim-mode:register-prefix'
+  '" C': 'vim-mode:register-prefix'
+  '" D': 'vim-mode:register-prefix'
+  '" E': 'vim-mode:register-prefix'
+  '" F': 'vim-mode:register-prefix'
+  '" G': 'vim-mode:register-prefix'
+  '" H': 'vim-mode:register-prefix'
+  '" I': 'vim-mode:register-prefix'
+  '" J': 'vim-mode:register-prefix'
+  '" K': 'vim-mode:register-prefix'
+  '" L': 'vim-mode:register-prefix'
+  '" M': 'vim-mode:register-prefix'
+  '" N': 'vim-mode:register-prefix'
+  '" O': 'vim-mode:register-prefix'
+  '" P': 'vim-mode:register-prefix'
+  '" Q': 'vim-mode:register-prefix'
+  '" R': 'vim-mode:register-prefix'
+  '" S': 'vim-mode:register-prefix'
+  '" T': 'vim-mode:register-prefix'
+  '" U': 'vim-mode:register-prefix'
+  '" V': 'vim-mode:register-prefix'
+  '" W': 'vim-mode:register-prefix'
+  '" X': 'vim-mode:register-prefix'
+  '" Y': 'vim-mode:register-prefix'
+  '" Z': 'vim-mode:register-prefix'
+  '" *': 'vim-mode:register-prefix'
+  '" +': 'vim-mode:register-prefix'
+  '" %': 'vim-mode:register-prefix'
+  '" _': 'vim-mode:register-prefix'
diff --git a/atom/packages/vim-mode/lib/global-vim-state.coffee b/atom/packages/vim-mode/lib/global-vim-state.coffee
new file mode 100644 (file)
index 0000000..25da977
--- /dev/null
@@ -0,0 +1,5 @@
+module.exports =
+class GlobalVimState
+  registers: {}
+  searchHistory: []
+  currentSearch: {}
diff --git a/atom/packages/vim-mode/lib/motions/find-motion.coffee b/atom/packages/vim-mode/lib/motions/find-motion.coffee
new file mode 100644 (file)
index 0000000..58685d7
--- /dev/null
@@ -0,0 +1,54 @@
+{MotionWithInput} = require './general-motions'
+{ViewModel} = require '../view-models/view-model'
+{Point, Range} = require 'atom'
+
+class Find extends MotionWithInput
+  constructor: (@editor, @vimState) ->
+    super(@editor, @vimState)
+    @vimState.currentFind = this
+    @viewModel = new ViewModel(this, class: 'find', singleChar: true, hidden: true)
+    @backwards = false
+    @repeatReversed = false
+    @offset = 0
+    @repeated = false
+
+  match: (cursor, count) ->
+    currentPosition = cursor.getBufferPosition()
+    line = @editor.lineTextForBufferRow(currentPosition.row)
+    if @backwards
+      index = currentPosition.column
+      for i in [0..count-1]
+        return if index <= 0 # we can't move backwards any further, quick return
+        index = line.lastIndexOf(@input.characters, index-1-(@offset*@repeated))
+      if index >= 0
+        new Point(currentPosition.row, index + @offset)
+    else
+      index = currentPosition.column
+      for i in [0..count-1]
+        index = line.indexOf(@input.characters, index+1+(@offset*@repeated))
+        return if index < 0 # no match found
+      if index >= 0
+        new Point(currentPosition.row, index - @offset)
+
+  reverse: ->
+    @backwards = not @backwards
+    this
+
+  moveCursor: (cursor, count=1) ->
+    if (match = @match(cursor, count))?
+      cursor.setBufferPosition(match)
+
+  repeat: (opts={}) ->
+    opts.reverse = !!opts.reverse
+    @repeated = true
+    if opts.reverse isnt @repeatReversed
+      @reverse()
+      @repeatReversed = opts.reverse
+    this
+
+class Till extends Find
+  constructor: (@editor, @vimState) ->
+    super(@editor, @vimState)
+    @offset = 1
+
+module.exports = {Find, Till}
diff --git a/atom/packages/vim-mode/lib/motions/general-motions.coffee b/atom/packages/vim-mode/lib/motions/general-motions.coffee
new file mode 100644 (file)
index 0000000..47a3cc7
--- /dev/null
@@ -0,0 +1,466 @@
+_ = require 'underscore-plus'
+{Point, Range} = require 'atom'
+settings = require '../settings'
+
+WholeWordRegex = /\S+/
+WholeWordOrEmptyLineRegex = /^\s*$|\S+/
+AllWhitespace = /^\s$/
+
+class MotionError
+  constructor: (@message) ->
+    @name = 'Motion Error'
+
+class Motion
+  operatesInclusively: true
+  operatesLinewise: false
+
+  constructor: (@editor, @vimState) ->
+
+  select: (count, options) ->
+    value = for selection in @editor.getSelections()
+      if @isLinewise()
+        @moveSelectionLinewise(selection, count, options)
+      else if @isInclusive()
+        @moveSelectionInclusively(selection, count, options)
+      else
+        @moveSelection(selection, count, options)
+      not selection.isEmpty()
+
+    @editor.mergeCursors()
+    @editor.mergeIntersectingSelections()
+    value
+
+  execute: (count) ->
+    for cursor in @editor.getCursors()
+      @moveCursor(cursor, count)
+    @editor.mergeCursors()
+
+  moveSelectionLinewise: (selection, count, options) ->
+    selection.modifySelection =>
+      [oldStartRow, oldEndRow] = selection.getBufferRowRange()
+
+      wasEmpty = selection.isEmpty()
+      wasReversed = selection.isReversed()
+      unless wasEmpty or wasReversed
+        selection.cursor.moveLeft()
+
+      @moveCursor(selection.cursor, count, options)
+
+      isEmpty = selection.isEmpty()
+      isReversed = selection.isReversed()
+      unless isEmpty or isReversed
+        selection.cursor.moveRight()
+
+      [newStartRow, newEndRow] = selection.getBufferRowRange()
+
+      if isReversed and not wasReversed
+        newEndRow = Math.max(newEndRow, oldStartRow)
+      if wasReversed and not isReversed
+        newStartRow = Math.min(newStartRow, oldEndRow)
+
+      selection.setBufferRange([[newStartRow, 0], [newEndRow + 1, 0]])
+
+  moveSelectionInclusively: (selection, count, options) ->
+    selection.modifySelection =>
+      range = selection.getBufferRange()
+      [oldStart, oldEnd] = [range.start, range.end]
+
+      wasEmpty = selection.isEmpty()
+      wasReversed = selection.isReversed()
+      unless wasEmpty or wasReversed
+        selection.cursor.moveLeft()
+
+      @moveCursor(selection.cursor, count, options)
+
+      isEmpty = selection.isEmpty()
+      isReversed = selection.isReversed()
+      unless isEmpty or isReversed
+        selection.cursor.moveRight()
+
+      range = selection.getBufferRange()
+      [newStart, newEnd] = [range.start, range.end]
+
+      if (isReversed or isEmpty) and not (wasReversed or wasEmpty)
+        selection.setBufferRange([newStart, [newEnd.row, oldStart.column + 1]])
+      if wasReversed and not wasEmpty and not isReversed
+        selection.setBufferRange([[newStart.row, oldEnd.column - 1], newEnd])
+
+  moveSelection: (selection, count, options) ->
+    selection.modifySelection => @moveCursor(selection.cursor, count, options)
+
+  ensureCursorIsWithinLine: (cursor) ->
+    return if @vimState.mode is 'visual' or not cursor.selection.isEmpty()
+    {goalColumn} = cursor
+    {row, column} = cursor.getBufferPosition()
+    lastColumn = cursor.getCurrentLineBufferRange().end.column
+    if column >= lastColumn - 1
+      cursor.setBufferPosition([row, Math.max(lastColumn - 1, 0)])
+    cursor.goalColumn ?= goalColumn
+
+  isComplete: -> true
+
+  isRecordable: -> false
+
+  isLinewise: ->
+    if @vimState?.mode is 'visual'
+      @vimState?.submode is 'linewise'
+    else
+      @operatesLinewise
+
+  isInclusive: ->
+    @vimState.mode is 'visual' or @operatesInclusively
+
+class CurrentSelection extends Motion
+  constructor: (@editor, @vimState) ->
+    super(@editor, @vimState)
+    @selection = @editor.getSelectedBufferRanges()
+
+  execute: (count=1) ->
+    _.times(count, -> true)
+
+  select: (count=1) ->
+    @editor.setSelectedBufferRanges(@selection)
+    _.times(count, -> true)
+
+# Public: Generic class for motions that require extra input
+class MotionWithInput extends Motion
+  constructor: (@editor, @vimState) ->
+    super(@editor, @vimState)
+    @complete = false
+
+  isComplete: -> @complete
+
+  canComposeWith: (operation) -> return operation.characters?
+
+  compose: (input) ->
+    if not input.characters
+      throw new MotionError('Must compose with an Input')
+    @input = input
+    @complete = true
+
+class MoveLeft extends Motion
+  operatesInclusively: false
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, =>
+      cursor.moveLeft() if not cursor.isAtBeginningOfLine() or settings.wrapLeftRightMotion()
+      @ensureCursorIsWithinLine(cursor)
+
+class MoveRight extends Motion
+  operatesInclusively: false
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, =>
+      wrapToNextLine = settings.wrapLeftRightMotion()
+
+      # when the motion is combined with an operator, we will only wrap to the next line
+      # if we are already at the end of the line (after the last character)
+      wrapToNextLine = false if @vimState.mode is 'operator-pending' and not cursor.isAtEndOfLine()
+
+      cursor.moveRight() unless cursor.isAtEndOfLine()
+      cursor.moveRight() if wrapToNextLine and cursor.isAtEndOfLine()
+      @ensureCursorIsWithinLine(cursor)
+
+class MoveUp extends Motion
+  operatesLinewise: true
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, =>
+      unless cursor.getScreenRow() is 0
+        cursor.moveUp()
+        @ensureCursorIsWithinLine(cursor)
+
+class MoveDown extends Motion
+  operatesLinewise: true
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, =>
+      unless cursor.getScreenRow() is @editor.getLastScreenRow()
+        cursor.moveDown()
+        @ensureCursorIsWithinLine(cursor)
+
+class MoveToPreviousWord extends Motion
+  operatesInclusively: false
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, ->
+      cursor.moveToBeginningOfWord()
+
+class MoveToPreviousWholeWord extends Motion
+  operatesInclusively: false
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, =>
+      cursor.moveToBeginningOfWord()
+      while not @isWholeWord(cursor) and not @isBeginningOfFile(cursor)
+        cursor.moveToBeginningOfWord()
+
+  isWholeWord: (cursor) ->
+    char = cursor.getCurrentWordPrefix().slice(-1)
+    AllWhitespace.test(char)
+
+  isBeginningOfFile: (cursor) ->
+    cur = cursor.getBufferPosition()
+    not cur.row and not cur.column
+
+class MoveToNextWord extends Motion
+  wordRegex: null
+  operatesInclusively: false
+
+  moveCursor: (cursor, count=1, options) ->
+    _.times count, =>
+      current = cursor.getBufferPosition()
+
+      next = if options?.excludeWhitespace
+        cursor.getEndOfCurrentWordBufferPosition(wordRegex: @wordRegex)
+      else
+        cursor.getBeginningOfNextWordBufferPosition(wordRegex: @wordRegex)
+
+      return if @isEndOfFile(cursor)
+
+      if cursor.isAtEndOfLine()
+        cursor.moveDown()
+        cursor.moveToBeginningOfLine()
+        cursor.skipLeadingWhitespace()
+      else if current.row is next.row and current.column is next.column
+        cursor.moveToEndOfWord()
+      else
+        cursor.setBufferPosition(next)
+
+  isEndOfFile: (cursor) ->
+    cur = cursor.getBufferPosition()
+    eof = @editor.getEofBufferPosition()
+    cur.row is eof.row and cur.column is eof.column
+
+class MoveToNextWholeWord extends MoveToNextWord
+  wordRegex: WholeWordOrEmptyLineRegex
+
+class MoveToEndOfWord extends Motion
+  wordRegex: null
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, =>
+      current = cursor.getBufferPosition()
+
+      next = cursor.getEndOfCurrentWordBufferPosition(wordRegex: @wordRegex)
+      next.column-- if next.column > 0
+
+      if next.isEqual(current)
+        cursor.moveRight()
+        if cursor.isAtEndOfLine()
+          cursor.moveDown()
+          cursor.moveToBeginningOfLine()
+
+        next = cursor.getEndOfCurrentWordBufferPosition(wordRegex: @wordRegex)
+        next.column-- if next.column > 0
+
+      cursor.setBufferPosition(next)
+
+class MoveToEndOfWholeWord extends MoveToEndOfWord
+  wordRegex: WholeWordRegex
+
+class MoveToNextParagraph extends Motion
+  operatesInclusively: false
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, ->
+      cursor.moveToBeginningOfNextParagraph()
+
+class MoveToPreviousParagraph extends Motion
+  moveCursor: (cursor, count=1) ->
+    _.times count, ->
+      cursor.moveToBeginningOfPreviousParagraph()
+
+class MoveToLine extends Motion
+  operatesLinewise: true
+
+  getDestinationRow: (count) ->
+    if count? then count - 1 else (@editor.getLineCount() - 1)
+
+class MoveToAbsoluteLine extends MoveToLine
+  moveCursor: (cursor, count) ->
+    cursor.setBufferPosition([@getDestinationRow(count), Infinity])
+    cursor.moveToFirstCharacterOfLine()
+    cursor.moveToEndOfLine() if cursor.getBufferColumn() is 0
+
+class MoveToRelativeLine extends MoveToLine
+  operatesLinewise: true
+
+  moveCursor: (cursor, count=1) ->
+    {row, column} = cursor.getBufferPosition()
+    cursor.setBufferPosition([row + (count - 1), 0])
+
+class MoveToScreenLine extends MoveToLine
+  constructor: (@editorElement, @vimState, @scrolloff) ->
+    @scrolloff = 2 # atom default
+    super(@editorElement.getModel(), @vimState)
+
+  moveCursor: (cursor, count=1) ->
+    {row, column} = cursor.getBufferPosition()
+    cursor.setScreenPosition([@getDestinationRow(count), 0])
+
+class MoveToBeginningOfLine extends Motion
+  operatesInclusively: false
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, ->
+      cursor.moveToBeginningOfLine()
+
+class MoveToFirstCharacterOfLine extends Motion
+  operatesInclusively: false
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, ->
+      cursor.moveToBeginningOfLine()
+      cursor.moveToFirstCharacterOfLine()
+
+class MoveToFirstCharacterOfLineAndDown extends Motion
+  operatesLinewise: true
+  operatesInclusively: true
+
+  moveCursor: (cursor, count=0) ->
+    _.times count-1, ->
+      cursor.moveDown()
+    cursor.moveToBeginningOfLine()
+    cursor.moveToFirstCharacterOfLine()
+
+class MoveToLastCharacterOfLine extends Motion
+  operatesInclusively: false
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, =>
+      cursor.moveToEndOfLine()
+      cursor.goalColumn = Infinity
+      @ensureCursorIsWithinLine(cursor)
+
+class MoveToLastNonblankCharacterOfLineAndDown extends Motion
+  operatesInclusively: true
+
+  # moves cursor to the last non-whitespace character on the line
+  # similar to skipLeadingWhitespace() in atom's cursor.coffee
+  skipTrailingWhitespace: (cursor) ->
+    position = cursor.getBufferPosition()
+    scanRange = cursor.getCurrentLineBufferRange()
+    startOfTrailingWhitespace = [scanRange.end.row, scanRange.end.column - 1]
+    @editor.scanInBufferRange /[ \t]+$/, scanRange, ({range}) ->
+      startOfTrailingWhitespace = range.start
+      startOfTrailingWhitespace.column -= 1
+    cursor.setBufferPosition(startOfTrailingWhitespace)
+
+  moveCursor: (cursor, count=1) ->
+    _.times count-1, ->
+      cursor.moveDown()
+    @skipTrailingWhitespace(cursor)
+
+class MoveToFirstCharacterOfLineUp extends Motion
+  operatesLinewise: true
+  operatesInclusively: true
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, ->
+      cursor.moveUp()
+    cursor.moveToBeginningOfLine()
+    cursor.moveToFirstCharacterOfLine()
+
+class MoveToFirstCharacterOfLineDown extends Motion
+  operatesLinewise: true
+
+  moveCursor: (cursor, count=1) ->
+    _.times count, ->
+      cursor.moveDown()
+    cursor.moveToBeginningOfLine()
+    cursor.moveToFirstCharacterOfLine()
+
+class MoveToStartOfFile extends MoveToLine
+  moveCursor: (cursor, count=1) ->
+    {row, column} = @editor.getCursorBufferPosition()
+    cursor.setBufferPosition([@getDestinationRow(count), 0])
+    unless @isLinewise()
+      cursor.moveToFirstCharacterOfLine()
+
+class MoveToTopOfScreen extends MoveToScreenLine
+  getDestinationRow: (count=0) ->
+    firstScreenRow = @editorElement.getFirstVisibleScreenRow()
+    if firstScreenRow > 0
+      offset = Math.max(count - 1, @scrolloff)
+    else
+      offset = if count > 0 then count - 1 else count
+    firstScreenRow + offset
+
+class MoveToBottomOfScreen extends MoveToScreenLine
+  getDestinationRow: (count=0) ->
+    lastScreenRow = @editorElement.getLastVisibleScreenRow()
+    lastRow = @editor.getBuffer().getLastRow()
+    if lastScreenRow isnt lastRow
+      offset = Math.max(count - 1, @scrolloff)
+    else
+      offset = if count > 0 then count - 1 else count
+    lastScreenRow - offset
+
+class MoveToMiddleOfScreen extends MoveToScreenLine
+  getDestinationRow: (count) ->
+    firstScreenRow = @editorElement.getFirstVisibleScreenRow()
+    lastScreenRow = @editorElement.getLastVisibleScreenRow()
+    height = lastScreenRow - firstScreenRow
+    Math.floor(firstScreenRow + (height / 2))
+
+class ScrollKeepingCursor extends MoveToLine
+  previousFirstScreenRow: 0
+  currentFirstScreenRow: 0
+
+  constructor: (@editorElement, @vimState) ->
+    super(@editorElement.getModel(), @vimState)
+
+  select: (count, options) ->
+    finalDestination = @scrollScreen(count)
+    super(count, options)
+    @editor.setScrollTop(finalDestination)
+
+  execute: (count) ->
+    finalDestination = @scrollScreen(count)
+    super(count)
+    @editor.setScrollTop(finalDestination)
+
+  moveCursor: (cursor, count=1) ->
+    cursor.setScreenPosition([@getDestinationRow(count), 0])
+
+  getDestinationRow: (count) ->
+    {row, column} = @editor.getCursorScreenPosition()
+    @currentFirstScreenRow - @previousFirstScreenRow + row
+
+  scrollScreen: (count = 1) ->
+    @previousFirstScreenRow = @editorElement.getFirstVisibleScreenRow()
+    destination = @scrollDestination(count)
+    @editor.setScrollTop(destination)
+    @currentFirstScreenRow = @editorElement.getFirstVisibleScreenRow()
+    destination
+
+class ScrollHalfUpKeepCursor extends ScrollKeepingCursor
+  scrollDestination: (count) ->
+    half = (Math.floor(@editor.getRowsPerPage() / 2) * @editor.getLineHeightInPixels())
+    @editor.getScrollTop() - count * half
+
+class ScrollFullUpKeepCursor extends ScrollKeepingCursor
+  scrollDestination: (count) ->
+    @editor.getScrollTop() - (count * @editor.getHeight())
+
+class ScrollHalfDownKeepCursor extends ScrollKeepingCursor
+  scrollDestination: (count) ->
+    half = (Math.floor(@editor.getRowsPerPage() / 2) * @editor.getLineHeightInPixels())
+    @editor.getScrollTop() + count * half
+
+class ScrollFullDownKeepCursor extends ScrollKeepingCursor
+  scrollDestination: (count) ->
+    @editor.getScrollTop() + (count * @editor.getHeight())
+
+module.exports = {
+  Motion, MotionWithInput, CurrentSelection, MoveLeft, MoveRight, MoveUp, MoveDown,
+  MoveToPreviousWord, MoveToPreviousWholeWord, MoveToNextWord, MoveToNextWholeWord,
+  MoveToEndOfWord, MoveToNextParagraph, MoveToPreviousParagraph, MoveToAbsoluteLine, MoveToRelativeLine, MoveToBeginningOfLine,
+  MoveToFirstCharacterOfLineUp, MoveToFirstCharacterOfLineDown,
+  MoveToFirstCharacterOfLine, MoveToFirstCharacterOfLineAndDown, MoveToLastCharacterOfLine,
+  MoveToLastNonblankCharacterOfLineAndDown, MoveToStartOfFile,
+  MoveToTopOfScreen, MoveToBottomOfScreen, MoveToMiddleOfScreen, MoveToEndOfWholeWord, MotionError,
+  ScrollHalfUpKeepCursor, ScrollFullUpKeepCursor,
+  ScrollHalfDownKeepCursor, ScrollFullDownKeepCursor
+}
diff --git a/atom/packages/vim-mode/lib/motions/index.coffee b/atom/packages/vim-mode/lib/motions/index.coffee
new file mode 100644 (file)
index 0000000..0fd420f
--- /dev/null
@@ -0,0 +1,14 @@
+Motions = require './general-motions'
+{Search, SearchCurrentWord, BracketMatchingMotion, RepeatSearch} = require './search-motion'
+MoveToMark = require './move-to-mark-motion'
+{Find, Till} = require './find-motion'
+
+Motions.Search = Search
+Motions.SearchCurrentWord = SearchCurrentWord
+Motions.BracketMatchingMotion = BracketMatchingMotion
+Motions.RepeatSearch = RepeatSearch
+Motions.MoveToMark = MoveToMark
+Motions.Find = Find
+Motions.Till = Till
+
+module.exports = Motions
diff --git a/atom/packages/vim-mode/lib/motions/move-to-mark-motion.coffee b/atom/packages/vim-mode/lib/motions/move-to-mark-motion.coffee
new file mode 100644 (file)
index 0000000..0187620
--- /dev/null
@@ -0,0 +1,25 @@
+{MotionWithInput, MoveToFirstCharacterOfLine} = require './general-motions'
+{ViewModel} = require '../view-models/view-model'
+{Point, Range} = require 'atom'
+
+module.exports =
+class MoveToMark extends MotionWithInput
+  operatesInclusively: false
+
+  constructor: (@editor, @vimState, @linewise=true) ->
+    super(@editor, @vimState)
+    @operatesLinewise = @linewise
+    @viewModel = new ViewModel(this, class: 'move-to-mark', singleChar: true, hidden: true)
+
+  isLinewise: -> @linewise
+
+  moveCursor: (cursor, count=1) ->
+    markPosition = @vimState.getMark(@input.characters)
+
+    if @input.characters is '`' # double '`' pressed
+      markPosition ?= [0, 0] # if markPosition not set, go to the beginning of the file
+      @vimState.setMark('`', cursor.getBufferPosition())
+
+    cursor.setBufferPosition(markPosition) if markPosition?
+    if @linewise
+      cursor.moveToFirstCharacterOfLine()
diff --git a/atom/packages/vim-mode/lib/motions/search-motion.coffee b/atom/packages/vim-mode/lib/motions/search-motion.coffee
new file mode 100644 (file)
index 0000000..11761ad
--- /dev/null
@@ -0,0 +1,210 @@
+_ = require 'underscore-plus'
+{MotionWithInput} = require './general-motions'
+SearchViewModel = require '../view-models/search-view-model'
+{Input} = require '../view-models/view-model'
+{Point, Range} = require 'atom'
+settings = require '../settings'
+
+class SearchBase extends MotionWithInput
+  operatesInclusively: false
+
+  constructor: (@editor, @vimState, options = {}) ->
+    super(@editor, @vimState)
+    @reverse = @initiallyReversed = false
+    @updateCurrentSearch() unless options.dontUpdateCurrentSearch
+
+  reversed: =>
+    @initiallyReversed = @reverse = true
+    @updateCurrentSearch()
+    this
+
+  moveCursor: (cursor, count=1) ->
+    ranges = @scan(cursor)
+    if ranges.length > 0
+      range = ranges[(count - 1) % ranges.length]
+      cursor.setBufferPosition(range.start)
+    else
+      atom.beep()
+
+  scan: (cursor) ->
+    currentPosition = cursor.getBufferPosition()
+
+    [rangesBefore, rangesAfter] = [[], []]
+    @editor.scan @getSearchTerm(@input.characters), ({range}) =>
+      isBefore = if @reverse
+        range.start.compare(currentPosition) < 0
+      else
+        range.start.compare(currentPosition) <= 0
+
+      if isBefore
+        rangesBefore.push(range)
+      else
+        rangesAfter.push(range)
+
+    if @reverse
+      rangesAfter.concat(rangesBefore).reverse()
+    else
+      rangesAfter.concat(rangesBefore)
+
+  getSearchTerm: (term) ->
+    modifiers = {'g': true}
+
+    if not term.match('[A-Z]') and settings.useSmartcaseForSearch()
+      modifiers['i'] = true
+
+    if term.indexOf('\\c') >= 0
+      term = term.replace('\\c', '')
+      modifiers['i'] = true
+
+    modFlags = Object.keys(modifiers).join('')
+
+    try
+      new RegExp(term, modFlags)
+    catch
+      new RegExp(_.escapeRegExp(term), modFlags)
+
+  updateCurrentSearch: ->
+    @vimState.globalVimState.currentSearch.reverse = @reverse
+    @vimState.globalVimState.currentSearch.initiallyReversed = @initiallyReversed
+
+  replicateCurrentSearch: ->
+    @reverse = @vimState.globalVimState.currentSearch.reverse
+    @initiallyReversed = @vimState.globalVimState.currentSearch.initiallyReversed
+
+class Search extends SearchBase
+  constructor: (@editor, @vimState) ->
+    super(@editor, @vimState)
+    @viewModel = new SearchViewModel(this)
+
+class SearchCurrentWord extends SearchBase
+  @keywordRegex: null
+
+  constructor: (@editor, @vimState) ->
+    super(@editor, @vimState)
+
+    # FIXME: This must depend on the current language
+    defaultIsKeyword = "[@a-zA-Z0-9_\-]+"
+    userIsKeyword = atom.config.get('vim-mode.iskeyword')
+    @keywordRegex = new RegExp(userIsKeyword or defaultIsKeyword)
+
+    searchString = @getCurrentWordMatch()
+    @input = new Input(searchString)
+    @vimState.pushSearchHistory(searchString) unless searchString is @vimState.getSearchHistoryItem()
+
+  getCurrentWord: ->
+    cursor = @editor.getLastCursor()
+    wordStart = cursor.getBeginningOfCurrentWordBufferPosition(wordRegex: @keywordRegex, allowPrevious: false)
+    wordEnd   = cursor.getEndOfCurrentWordBufferPosition      (wordRegex: @keywordRegex, allowNext: false)
+    cursorPosition = cursor.getBufferPosition()
+
+    if wordEnd.column is cursorPosition.column
+      # either we don't have a current word, or it ends on cursor, i.e. precedes it, so look for the next one
+      wordEnd = cursor.getEndOfCurrentWordBufferPosition      (wordRegex: @keywordRegex, allowNext: true)
+      return "" if wordEnd.row isnt cursorPosition.row # don't look beyond the current line
+
+      cursor.setBufferPosition wordEnd
+      wordStart = cursor.getBeginningOfCurrentWordBufferPosition(wordRegex: @keywordRegex, allowPrevious: false)
+
+    cursor.setBufferPosition wordStart
+
+    @editor.getTextInBufferRange([wordStart, wordEnd])
+
+  cursorIsOnEOF: (cursor) ->
+    pos = cursor.getNextWordBoundaryBufferPosition(wordRegex: @keywordRegex)
+    eofPos = @editor.getEofBufferPosition()
+    pos.row is eofPos.row and pos.column is eofPos.column
+
+  getCurrentWordMatch: ->
+    characters = @getCurrentWord()
+    if characters.length > 0
+      if /\W/.test(characters) then "#{characters}\\b" else "\\b#{characters}\\b"
+    else
+      characters
+
+  isComplete: -> true
+
+  execute: (count=1) ->
+    super(count) if @input.characters.length > 0
+
+OpenBrackets = ['(', '{', '[']
+CloseBrackets = [')', '}', ']']
+AnyBracket = new RegExp(OpenBrackets.concat(CloseBrackets).map(_.escapeRegExp).join("|"))
+
+class BracketMatchingMotion extends SearchBase
+  operatesInclusively: true
+
+  isComplete: -> true
+
+  searchForMatch: (startPosition, reverse, inCharacter, outCharacter) ->
+    depth = 0
+    point = startPosition.copy()
+    lineLength = @editor.lineTextForBufferRow(point.row).length
+    eofPosition = @editor.getEofBufferPosition().translate([0, 1])
+    increment = if reverse then -1 else 1
+
+    loop
+      character = @characterAt(point)
+      depth++ if character is inCharacter
+      depth-- if character is outCharacter
+
+      return point if depth is 0
+
+      point.column += increment
+
+      return null if depth < 0
+      return null if point.isEqual([0, -1])
+      return null if point.isEqual(eofPosition)
+
+      if point.column < 0
+        point.row--
+        lineLength = @editor.lineTextForBufferRow(point.row).length
+        point.column = lineLength - 1
+      else if point.column >= lineLength
+        point.row++
+        lineLength = @editor.lineTextForBufferRow(point.row).length
+        point.column = 0
+
+  characterAt: (position) ->
+    @editor.getTextInBufferRange([position, position.translate([0, 1])])
+
+  getSearchData: (position) ->
+    character = @characterAt(position)
+    if (index = OpenBrackets.indexOf(character)) >= 0
+      [character, CloseBrackets[index], false]
+    else if (index = CloseBrackets.indexOf(character)) >= 0
+      [character, OpenBrackets[index], true]
+    else
+      []
+
+  moveCursor: (cursor) ->
+    startPosition = cursor.getBufferPosition()
+
+    [inCharacter, outCharacter, reverse] = @getSearchData(startPosition)
+
+    unless inCharacter?
+      restOfLine = [startPosition, [startPosition.row, Infinity]]
+      @editor.scanInBufferRange AnyBracket, restOfLine, ({range, stop}) ->
+        startPosition = range.start
+        stop()
+
+    [inCharacter, outCharacter, reverse] = @getSearchData(startPosition)
+
+    return unless inCharacter?
+
+    if matchPosition = @searchForMatch(startPosition, reverse, inCharacter, outCharacter)
+      cursor.setBufferPosition(matchPosition)
+
+class RepeatSearch extends SearchBase
+  constructor: (@editor, @vimState) ->
+    super(@editor, @vimState, dontUpdateCurrentSearch: true)
+    @input = new Input(@vimState.getSearchHistoryItem(0) ? "")
+    @replicateCurrentSearch()
+
+  isComplete: -> true
+
+  reversed: ->
+    @reverse = not @initiallyReversed
+    this
+
+
+module.exports = {Search, SearchCurrentWord, BracketMatchingMotion, RepeatSearch}
diff --git a/atom/packages/vim-mode/lib/operators/general-operators.coffee b/atom/packages/vim-mode/lib/operators/general-operators.coffee
new file mode 100644 (file)
index 0000000..dd99256
--- /dev/null
@@ -0,0 +1,255 @@
+_ = require 'underscore-plus'
+{Point, Range} = require 'atom'
+{ViewModel} = require '../view-models/view-model'
+Utils = require '../utils'
+settings = require '../settings'
+
+class OperatorError
+  constructor: (@message) ->
+    @name = 'Operator Error'
+
+class Operator
+  vimState: null
+  motion: null
+  complete: null
+  selectOptions: null
+
+  # selectOptions - The options object to pass through to the motion when
+  #                 selecting.
+  constructor: (@editor, @vimState, {@selectOptions}={}) ->
+    @complete = false
+
+  # Public: Determines when the command can be executed.
+  #
+  # Returns true if ready to execute and false otherwise.
+  isComplete: -> @complete
+
+  # Public: Determines if this command should be recorded in the command
+  # history for repeats.
+  #
+  # Returns true if this command should be recorded.
+  isRecordable: -> true
+
+  # Public: Marks this as ready to execute and saves the motion.
+  #
+  # motion - The motion used to select what to operate on.
+  #
+  # Returns nothing.
+  compose: (motion) ->
+    if not motion.select
+      throw new OperatorError('Must compose with a motion')
+
+    @motion = motion
+    @complete = true
+
+  canComposeWith: (operation) -> operation.select?
+
+  # Public: Preps text and sets the text register
+  #
+  # Returns nothing
+  setTextRegister: (register, text) ->
+    if @motion?.isLinewise?()
+      type = 'linewise'
+      if text[-1..] isnt '\n'
+        text += '\n'
+    else
+      type = Utils.copyType(text)
+    @vimState.setRegister(register, {text, type}) unless text is ''
+
+# Public: Generic class for an operator that requires extra input
+class OperatorWithInput extends Operator
+  constructor: (@editor, @vimState) ->
+    @editor = @editor
+    @complete = false
+
+  canComposeWith: (operation) -> operation.characters? or operation.select?
+
+  compose: (operation) ->
+    if operation.select?
+      @motion = operation
+    if operation.characters?
+      @input = operation
+      @complete = true
+
+#
+# It deletes everything selected by the following motion.
+#
+class Delete extends Operator
+  register: null
+  allowEOL: null
+
+  # allowEOL - Determines whether the cursor should be allowed to rest on the
+  #            end of line character or not.
+  constructor: (@editor, @vimState, {@allowEOL, @selectOptions}={}) ->
+    @complete = false
+    @selectOptions ?= {}
+    @selectOptions.requireEOL ?= true
+    @register = settings.defaultRegister()
+
+  # Public: Deletes the text selected by the given motion.
+  #
+  # count - The number of times to execute.
+  #
+  # Returns nothing.
+  execute: (count) ->
+    if _.contains(@motion.select(count, @selectOptions), true)
+      @setTextRegister(@register, @editor.getSelectedText())
+      for selection in @editor.getSelections()
+        selection.deleteSelectedText()
+      for cursor in @editor.getCursors()
+        if @motion.isLinewise?()
+          cursor.skipLeadingWhitespace()
+        else
+          cursor.moveLeft() if cursor.isAtEndOfLine() and not cursor.isAtBeginningOfLine()
+
+    @vimState.activateCommandMode()
+
+#
+# It toggles the case of everything selected by the following motion
+#
+class ToggleCase extends Operator
+  constructor: (@editor, @vimState, {@complete, @selectOptions}={}) ->
+
+  execute: (count=1) ->
+    if @motion?
+      if _.contains(@motion.select(count, @selectOptions), true)
+        @editor.replaceSelectedText {}, (text) ->
+          text.split('').map((char) ->
+            lower = char.toLowerCase()
+            if char is lower
+              char.toUpperCase()
+            else
+              lower
+          ).join('')
+    else
+      @editor.transact =>
+        for cursor in @editor.getCursors()
+          point = cursor.getBufferPosition()
+          lineLength = @editor.lineTextForBufferRow(point.row).length
+          cursorCount = Math.min(count, lineLength - point.column)
+
+          _.times cursorCount, =>
+            point = cursor.getBufferPosition()
+            range = Range.fromPointWithDelta(point, 0, 1)
+            char = @editor.getTextInBufferRange(range)
+
+            if char is char.toLowerCase()
+              @editor.setTextInBufferRange(range, char.toUpperCase())
+            else
+              @editor.setTextInBufferRange(range, char.toLowerCase())
+
+            cursor.moveRight() unless point.column >= lineLength - 1
+
+    @vimState.activateCommandMode()
+
+#
+# In visual mode or after `g` with a motion, it makes the selection uppercase
+#
+class UpperCase extends Operator
+  constructor: (@editor, @vimState, {@selectOptions}={}) ->
+    @complete = false
+
+  execute: (count=1) ->
+    if _.contains(@motion.select(count, @selectOptions), true)
+      @editor.replaceSelectedText {}, (text) ->
+        text.toUpperCase()
+
+    @vimState.activateCommandMode()
+
+#
+# In visual mode or after `g` with a motion, it makes the selection lowercase
+#
+class LowerCase extends Operator
+  constructor: (@editor, @vimState, {@selectOptions}={}) ->
+    @complete = false
+
+  execute: (count=1) ->
+    if _.contains(@motion.select(count, @selectOptions), true)
+      @editor.replaceSelectedText {}, (text) ->
+        text.toLowerCase()
+
+    @vimState.activateCommandMode()
+
+#
+# It copies everything selected by the following motion.
+#
+class Yank extends Operator
+  register: null
+
+  constructor: (@editor, @vimState, {@allowEOL, @selectOptions}={}) ->
+    @register = settings.defaultRegister()
+
+  # Public: Copies the text selected by the given motion.
+  #
+  # count - The number of times to execute.
+  #
+  # Returns nothing.
+  execute: (count) ->
+    originalPositions = @editor.getCursorBufferPositions()
+    if _.contains(@motion.select(count), true)
+      text = @editor.getSelectedText()
+      startPositions = _.pluck(@editor.getSelectedBufferRanges(), "start")
+      newPositions = for originalPosition, i in originalPositions
+        if startPositions[i] and (@vimState.mode is 'visual' or not @motion.isLinewise?())
+          Point.min(startPositions[i], originalPositions[i])
+        else
+          originalPosition
+    else
+      text = ''
+      newPositions = originalPositions
+
+    @setTextRegister(@register, text)
+
+    @editor.setSelectedBufferRanges(newPositions.map (p) -> new Range(p, p))
+    @vimState.activateCommandMode()
+
+#
+# It combines the current line with the following line.
+#
+class Join extends Operator
+  constructor: (@editor, @vimState, {@selectOptions}={}) -> @complete = true
+
+  # Public: Combines the current with the following lines
+  #
+  # count - The number of times to execute.
+  #
+  # Returns nothing.
+  execute: (count=1) ->
+    @editor.transact =>
+      _.times count, =>
+        @editor.joinLines()
+    @vimState.activateCommandMode()
+
+#
+# Repeat the last operation
+#
+class Repeat extends Operator
+  constructor: (@editor, @vimState, {@selectOptions}={}) -> @complete = true
+
+  isRecordable: -> false
+
+  execute: (count=1) ->
+    @editor.transact =>
+      _.times count, =>
+        cmd = @vimState.history[0]
+        cmd?.execute()
+#
+# It creates a mark at the current cursor position
+#
+class Mark extends OperatorWithInput
+  constructor: (@editor, @vimState, {@selectOptions}={}) ->
+    super(@editor, @vimState)
+    @viewModel = new ViewModel(this, class: 'mark', singleChar: true, hidden: true)
+
+  # Public: Creates the mark in the specified mark register (from user input)
+  # at the current position
+  #
+  # Returns nothing.
+  execute: ->
+    @vimState.setMark(@input.characters, @editor.getCursorBufferPosition())
+    @vimState.activateCommandMode()
+
+module.exports = {
+  Operator, OperatorWithInput, OperatorError, Delete, ToggleCase,
+  UpperCase, LowerCase, Yank, Join, Repeat, Mark
+}
diff --git a/atom/packages/vim-mode/lib/operators/increase-operators.coffee b/atom/packages/vim-mode/lib/operators/increase-operators.coffee
new file mode 100644 (file)
index 0000000..e62f781
--- /dev/null
@@ -0,0 +1,57 @@
+{Operator} = require './general-operators'
+{Range} = require 'atom'
+settings = require '../settings'
+
+#
+# It increases or decreases the next number on the line
+#
+class Increase extends Operator
+  step: 1
+
+  constructor: ->
+    super
+    @complete = true
+    @numberRegex = new RegExp(settings.numberRegex())
+
+  execute: (count=1) ->
+    @editor.transact =>
+      increased = false
+      for cursor in @editor.getCursors()
+        if @increaseNumber(count, cursor) then increased = true
+      atom.beep() unless increased
+
+  increaseNumber: (count, cursor) ->
+    # find position of current number, adapted from from SearchCurrentWord
+    cursorPosition = cursor.getBufferPosition()
+    numEnd = cursor.getEndOfCurrentWordBufferPosition(wordRegex: @numberRegex, allowNext: false)
+
+    if numEnd.column is cursorPosition.column
+      # either we don't have a current number, or it ends on cursor, i.e. precedes it, so look for the next one
+      numEnd = cursor.getEndOfCurrentWordBufferPosition(wordRegex: @numberRegex, allowNext: true)
+      return if numEnd.row isnt cursorPosition.row # don't look beyond the current line
+      return if numEnd.column is cursorPosition.column # no number after cursor
+
+    cursor.setBufferPosition numEnd
+    numStart = cursor.getBeginningOfCurrentWordBufferPosition(wordRegex: @numberRegex, allowPrevious: false)
+
+    range = new Range(numStart, numEnd)
+
+    # parse number, increase/decrease
+    number = parseInt(@editor.getTextInBufferRange(range), 10)
+    if isNaN(number)
+      cursor.setBufferPosition(cursorPosition)
+      return
+
+    number += @step*count
+
+    # replace current number with new
+    newValue = String(number)
+    @editor.setTextInBufferRange(range, newValue, normalizeLineEndings: false)
+
+    cursor.setBufferPosition(row: numStart.row, column: numStart.column-1+newValue.length)
+    return true
+
+class Decrease extends Increase
+  step: -1
+
+module.exports = {Increase, Decrease}
diff --git a/atom/packages/vim-mode/lib/operators/indent-operators.coffee b/atom/packages/vim-mode/lib/operators/indent-operators.coffee
new file mode 100644 (file)
index 0000000..0ad37e0
--- /dev/null
@@ -0,0 +1,28 @@
+{Operator} = require './general-operators'
+
+class AdjustIndentation extends Operator
+  execute: (count=1) ->
+    mode = @vimState.mode
+    @motion.select(count)
+    {start} = @editor.getSelectedBufferRange()
+
+    @indent()
+
+    if mode isnt 'visual'
+      @editor.setCursorBufferPosition([start.row, 0])
+      @editor.moveToFirstCharacterOfLine()
+      @vimState.activateCommandMode()
+
+class Indent extends AdjustIndentation
+  indent: ->
+    @editor.indentSelectedRows()
+
+class Outdent extends AdjustIndentation
+  indent: ->
+    @editor.outdentSelectedRows()
+
+class Autoindent extends AdjustIndentation
+  indent: ->
+    @editor.autoIndentSelectedRows()
+
+module.exports = {Indent, Outdent, Autoindent}
diff --git a/atom/packages/vim-mode/lib/operators/index.coffee b/atom/packages/vim-mode/lib/operators/index.coffee
new file mode 100644 (file)
index 0000000..575def3
--- /dev/null
@@ -0,0 +1,14 @@
+_ = require 'underscore-plus'
+IndentOperators = require './indent-operators'
+IncreaseOperators = require './increase-operators'
+Put = require './put-operator'
+InputOperators = require './input'
+Replace = require './replace-operator'
+Operators = require './general-operators'
+
+Operators.Put = Put
+Operators.Replace = Replace
+_.extend(Operators, IndentOperators)
+_.extend(Operators, IncreaseOperators)
+_.extend(Operators, InputOperators)
+module.exports = Operators
diff --git a/atom/packages/vim-mode/lib/operators/input.coffee b/atom/packages/vim-mode/lib/operators/input.coffee
new file mode 100644 (file)
index 0000000..3821045
--- /dev/null
@@ -0,0 +1,231 @@
+{Operator, Delete} = require './general-operators'
+_ = require 'underscore-plus'
+settings = require '../settings'
+
+# The operation for text entered in input mode. Broadly speaking, input
+# operators manage an undo transaction and set a @typingCompleted variable when
+# it's done. When the input operation is completed, the typingCompleted variable
+# tells the operation to repeat itself instead of enter insert mode.
+class Insert extends Operator
+  standalone: true
+
+  isComplete: -> @standalone or super
+
+  confirmChanges: (changes) ->
+    bundler = new TransactionBundler(changes, @editor)
+    @typedText = bundler.buildInsertText()
+
+  execute: ->
+    if @typingCompleted
+      return unless @typedText? and @typedText.length > 0
+      @editor.insertText(@typedText, normalizeLineEndings: true)
+      for cursor in @editor.getCursors()
+        cursor.moveLeft() unless cursor.isAtBeginningOfLine()
+    else
+      @vimState.activateInsertMode()
+      @typingCompleted = true
+    return
+
+  inputOperator: -> true
+
+class InsertAfter extends Insert
+  execute: ->
+    @editor.moveRight() unless @editor.getLastCursor().isAtEndOfLine()
+    super
+
+class InsertAfterEndOfLine extends Insert
+  execute: ->
+    @editor.moveToEndOfLine()
+    super
+
+class InsertAtBeginningOfLine extends Insert
+  execute: ->
+    @editor.moveToBeginningOfLine()
+    @editor.moveToFirstCharacterOfLine()
+    super
+
+class InsertAboveWithNewline extends Insert
+  execute: (count=1) ->
+    @vimState.setInsertionCheckpoint() unless @typingCompleted
+    @editor.insertNewlineAbove()
+    @editor.getLastCursor().skipLeadingWhitespace()
+
+    if @typingCompleted
+      # We'll have captured the inserted newline, but we want to do that
+      # over again by hand, or differing indentations will be wrong.
+      @typedText = @typedText.trimLeft()
+      return super
+
+    @vimState.activateInsertMode()
+    @typingCompleted = true
+
+class InsertBelowWithNewline extends Insert
+  execute: (count=1) ->
+    @vimState.setInsertionCheckpoint() unless @typingCompleted
+    @editor.insertNewlineBelow()
+    @editor.getLastCursor().skipLeadingWhitespace()
+
+    if @typingCompleted
+      # We'll have captured the inserted newline, but we want to do that
+      # over again by hand, or differing indentations will be wrong.
+      @typedText = @typedText.trimLeft()
+      return super
+
+    @vimState.activateInsertMode()
+    @typingCompleted = true
+
+#
+# Delete the following motion and enter insert mode to replace it.
+#
+class Change extends Insert
+  standalone: false
+  register: null
+
+  constructor: (@editor, @vimState, {@selectOptions}={}) ->
+    @register = settings.defaultRegister()
+
+  # Public: Changes the text selected by the given motion.
+  #
+  # count - The number of times to execute.
+  #
+  # Returns nothing.
+  execute: (count) ->
+    # If we've typed, we're being repeated. If we're being repeated,
+    # undo transactions are already handled.
+    @vimState.setInsertionCheckpoint() unless @typingCompleted
+
+    if _.contains(@motion.select(count, excludeWhitespace: true), true)
+      @setTextRegister(@register, @editor.getSelectedText())
+      if @motion.isLinewise?()
+        @editor.insertNewline()
+        @editor.moveLeft()
+      else
+        for selection in @editor.getSelections()
+          selection.deleteSelectedText()
+
+    return super if @typingCompleted
+
+    @vimState.activateInsertMode()
+    @typingCompleted = true
+
+class Substitute extends Insert
+  register: null
+
+  constructor: (@editor, @vimState, {@selectOptions}={}) ->
+    @register = settings.defaultRegister()
+
+  execute: (count=1) ->
+    @vimState.setInsertionCheckpoint() unless @typingCompleted
+    _.times count, =>
+      @editor.selectRight()
+    @setTextRegister(@register, @editor.getSelectedText())
+    @editor.delete()
+
+    if @typingCompleted
+      @typedText = @typedText.trimLeft()
+      return super
+
+    @vimState.activateInsertMode()
+    @typingCompleted = true
+
+class SubstituteLine extends Insert
+  register: null
+
+  constructor: (@editor, @vimState, {@selectOptions}={}) ->
+    @register = settings.defaultRegister()
+
+  execute: (count=1) ->
+    @vimState.setInsertionCheckpoint() unless @typingCompleted
+    @editor.moveToBeginningOfLine()
+    _.times count, =>
+      @editor.selectToEndOfLine()
+      @editor.selectRight()
+    @setTextRegister(@register, @editor.getSelectedText())
+    @editor.delete()
+    @editor.insertNewlineAbove()
+    @editor.getLastCursor().skipLeadingWhitespace()
+
+    if @typingCompleted
+      @typedText = @typedText.trimLeft()
+      return super
+
+    @vimState.activateInsertMode()
+    @typingCompleted = true
+
+# Takes a transaction and turns it into a string of what was typed.
+# This class is an implementation detail of Insert
+class TransactionBundler
+  constructor: (@changes, @editor) ->
+    @start = null
+    @end = null
+
+  buildInsertText: ->
+    @addChange(change) for change in @changes
+    if @start?
+      @editor.getTextInBufferRange [@start, @end]
+    else
+      ""
+
+  addChange: (change) ->
+    return unless change.newRange?
+    if @isRemovingFromPrevious(change)
+      @subtractRange change.oldRange
+    if @isAddingWithinPrevious(change)
+      @addRange change.newRange
+
+  isAddingWithinPrevious: (change) ->
+    return false unless @isAdding(change)
+
+    return true if @start is null
+
+    @start.isLessThanOrEqual(change.newRange.start) and
+      @end.isGreaterThanOrEqual(change.newRange.start)
+
+  isRemovingFromPrevious: (change) ->
+    return false unless @isRemoving(change) and @start?
+
+    @start.isLessThanOrEqual(change.oldRange.start) and
+      @end.isGreaterThanOrEqual(change.oldRange.end)
+
+  isAdding: (change) ->
+    change.newText.length > 0
+
+  isRemoving: (change) ->
+    change.oldText.length > 0
+
+  addRange: (range) ->
+    if @start is null
+      {@start, @end} = range
+      return
+
+    rows = range.end.row - range.start.row
+
+    if (range.start.row is @end.row)
+      cols = range.end.column - range.start.column
+    else
+      cols = 0
+
+    @end = @end.translate [rows, cols]
+
+  subtractRange: (range) ->
+    rows = range.end.row - range.start.row
+
+    if (range.end.row is @end.row)
+      cols = range.end.column - range.start.column
+    else
+      cols = 0
+
+    @end = @end.translate [-rows, -cols]
+
+
+module.exports = {
+  Insert,
+  InsertAfter,
+  InsertAfterEndOfLine,
+  InsertAtBeginningOfLine,
+  InsertAboveWithNewline,
+  InsertBelowWithNewline,
+  Change,
+  Substitute,
+  SubstituteLine
+}
diff --git a/atom/packages/vim-mode/lib/operators/put-operator.coffee b/atom/packages/vim-mode/lib/operators/put-operator.coffee
new file mode 100644 (file)
index 0000000..63151f1
--- /dev/null
@@ -0,0 +1,73 @@
+_ = require 'underscore-plus'
+{Operator} = require './general-operators'
+settings = require '../settings'
+
+module.exports =
+#
+# It pastes everything contained within the specifed register
+#
+class Put extends Operator
+  register: null
+
+  constructor: (@editor, @vimState, {@location, @selectOptions}={}) ->
+    @location ?= 'after'
+    @complete = true
+    @register = settings.defaultRegister()
+
+  # Public: Pastes the text in the given register.
+  #
+  # count - The number of times to execute.
+  #
+  # Returns nothing.
+  execute: (count=1) ->
+    {text, type} = @vimState.getRegister(@register) or {}
+    return unless text
+
+    textToInsert = _.times(count, -> text).join('')
+
+    selection = @editor.getSelectedBufferRange()
+    if selection.isEmpty()
+      # Clean up some corner cases on the last line of the file
+      if type is 'linewise'
+        textToInsert = textToInsert.replace(/\n$/, '')
+        if @location is 'after' and @onLastRow()
+          textToInsert = "\n#{textToInsert}"
+        else
+          textToInsert = "#{textToInsert}\n"
+
+      if @location is 'after'
+        if type is 'linewise'
+          if @onLastRow()
+            @editor.moveToEndOfLine()
+
+            originalPosition = @editor.getCursorScreenPosition()
+            originalPosition.row += 1
+          else
+            @editor.moveDown()
+        else
+          unless @onLastColumn()
+            @editor.moveRight()
+
+      if type is 'linewise' and not originalPosition?
+        @editor.moveToBeginningOfLine()
+        originalPosition = @editor.getCursorScreenPosition()
+
+    @editor.insertText(textToInsert)
+
+    if originalPosition?
+      @editor.setCursorScreenPosition(originalPosition)
+      @editor.moveToFirstCharacterOfLine()
+
+    @vimState.activateCommandMode()
+    if type isnt 'linewise'
+      @editor.moveLeft()
+
+  # Private: Helper to determine if the editor is currently on the last row.
+  #
+  # Returns true on the last row and false otherwise.
+  onLastRow: ->
+    {row, column} = @editor.getCursorBufferPosition()
+    row is @editor.getBuffer().getLastRow()
+
+  onLastColumn: ->
+    @editor.getLastCursor().isAtEndOfLine()
diff --git a/atom/packages/vim-mode/lib/operators/replace-operator.coffee b/atom/packages/vim-mode/lib/operators/replace-operator.coffee
new file mode 100644 (file)
index 0000000..52157d0
--- /dev/null
@@ -0,0 +1,50 @@
+_ = require 'underscore-plus'
+{OperatorWithInput} = require './general-operators'
+{ViewModel} = require '../view-models/view-model'
+{Range} = require 'atom'
+
+module.exports =
+class Replace extends OperatorWithInput
+  constructor: (@editor, @vimState, {@selectOptions}={}) ->
+    super(@editor, @vimState)
+    @viewModel = new ViewModel(this, class: 'replace', hidden: true, singleChar: true, defaultText: '\n')
+
+  execute: (count=1) ->
+    if @input.characters is ""
+      # replace canceled
+
+      if @vimState.mode is "visual"
+        @vimState.resetVisualMode()
+      else
+        @vimState.activateCommandMode()
+
+      return
+
+    @editor.transact =>
+      if @motion?
+        if _.contains(@motion.select(), true)
+          @editor.replaceSelectedText null, (text) =>
+            text.replace(/./g, @input.characters)
+          for selection in @editor.getSelections()
+            point = selection.getBufferRange().start
+            selection.setBufferRange(Range.fromPointWithDelta(point, 0, 0))
+      else
+        for cursor in @editor.getCursors()
+          pos = cursor.getBufferPosition()
+          currentRowLength = @editor.lineTextForBufferRow(pos.row).length
+          continue unless currentRowLength - pos.column >= count
+
+          _.times count, =>
+            point = cursor.getBufferPosition()
+            @editor.setTextInBufferRange(Range.fromPointWithDelta(point, 0, 1), @input.characters)
+            cursor.moveRight()
+          cursor.setBufferPosition(pos)
+
+        # Special case: when replaced with a newline move to the start of the
+        # next row.
+        if @input.characters is "\n"
+          _.times count, =>
+            @editor.moveDown()
+          @editor.moveToFirstCharacterOfLine()
+
+    @vimState.activateCommandMode()
diff --git a/atom/packages/vim-mode/lib/prefixes.coffee b/atom/packages/vim-mode/lib/prefixes.coffee
new file mode 100644 (file)
index 0000000..b29bc92
--- /dev/null
@@ -0,0 +1,68 @@
+class Prefix
+  complete: null
+  composedObject: null
+
+  isComplete: -> @complete
+
+  isRecordable: -> @composedObject.isRecordable()
+
+  # Public: Marks this as complete upon receiving an object to compose with.
+  #
+  # composedObject - The next motion or operator.
+  #
+  # Returns nothing.
+  compose: (@composedObject) ->
+    @complete = true
+
+  # Public: Executes the composed operator or motion.
+  #
+  # Returns nothing.
+  execute: ->
+    @composedObject.execute?(@count)
+
+  # Public: Selects using the composed motion.
+  #
+  # Returns an array of booleans representing whether each selections' success.
+  select: ->
+    @composedObject.select?(@count)
+
+  isLinewise: ->
+    @composedObject.isLinewise()
+
+#
+# Used to track the number of times either a motion or operator should
+# be repeated.
+#
+class Repeat extends Prefix
+  count: null
+
+  # count - The initial digit of the repeat sequence.
+  constructor: (@count) -> @complete = false
+
+  # Public: Adds an additional digit to this repeat sequence.
+  #
+  # digit - A single digit, 0-9.
+  #
+  # Returns nothing.
+  addDigit: (digit) ->
+    @count = @count * 10 + digit
+
+#
+# Used to track which register the following operator should operate on.
+#
+class Register extends Prefix
+  name: null
+
+  # name - The single character name of the desired register
+  constructor: (@name) -> @complete = false
+
+  # Public: Marks as complete and sets the operator's register if it accepts it.
+  #
+  # composedOperator - The operator this register pertains to.
+  #
+  # Returns nothing.
+  compose: (composedObject) ->
+    super(composedObject)
+    composedObject.register = @name if composedObject.register?
+
+module.exports = {Repeat, Register}
diff --git a/atom/packages/vim-mode/lib/scroll.coffee b/atom/packages/vim-mode/lib/scroll.coffee
new file mode 100644 (file)
index 0000000..1bc1258
--- /dev/null
@@ -0,0 +1,88 @@
+class Scroll
+  isComplete: -> true
+  isRecordable: -> false
+  constructor: (@editorElement) ->
+    @scrolloff = 2 # atom default
+    @editor = @editorElement.getModel()
+    @rows =
+      first: @editorElement.getFirstVisibleScreenRow()
+      last: @editorElement.getLastVisibleScreenRow()
+      final: @editor.getLastScreenRow()
+
+class ScrollDown extends Scroll
+  execute: (count=1) ->
+    @keepCursorOnScreen(count)
+    @scrollUp(count)
+
+  keepCursorOnScreen: (count) ->
+    {row, column} = @editor.getCursorScreenPosition()
+    firstScreenRow = @rows.first + @scrolloff + 1
+    if row - count <= firstScreenRow
+      @editor.setCursorScreenPosition([firstScreenRow + count, column])
+
+  scrollUp: (count) ->
+    lastScreenRow = @rows.last - @scrolloff
+    @editor.scrollToScreenPosition([lastScreenRow + count, 0])
+
+class ScrollUp extends Scroll
+  execute: (count=1) ->
+    @keepCursorOnScreen(count)
+    @scrollDown(count)
+
+  keepCursorOnScreen: (count) ->
+    {row, column} = @editor.getCursorScreenPosition()
+    lastScreenRow = @rows.last - @scrolloff - 1
+    if row + count >= lastScreenRow
+      @editor.setCursorScreenPosition([lastScreenRow - count, column])
+
+  scrollDown: (count) ->
+    firstScreenRow = @rows.first + @scrolloff
+    @editor.scrollToScreenPosition([firstScreenRow - count, 0])
+
+class ScrollCursor extends Scroll
+  constructor: (@editorElement, @opts={}) ->
+    super
+    cursor = @editor.getCursorScreenPosition()
+    @pixel = @editorElement.pixelPositionForScreenPosition(cursor).top
+
+class ScrollCursorToTop extends ScrollCursor
+  execute: ->
+    @moveToFirstNonBlank() unless @opts.leaveCursor
+    @scrollUp()
+
+  scrollUp: ->
+    return if @rows.last is @rows.final
+    @pixel -= (@editor.getLineHeightInPixels() * @scrolloff)
+    @editor.setScrollTop(@pixel)
+
+  moveToFirstNonBlank: ->
+    @editor.moveToFirstCharacterOfLine()
+
+class ScrollCursorToMiddle extends ScrollCursor
+  execute: ->
+    @moveToFirstNonBlank() unless @opts.leaveCursor
+    @scrollMiddle()
+
+  scrollMiddle: ->
+    @pixel -= (@editor.getHeight() / 2)
+    @editor.setScrollTop(@pixel)
+
+  moveToFirstNonBlank: ->
+    @editor.moveToFirstCharacterOfLine()
+
+class ScrollCursorToBottom extends ScrollCursor
+  execute: ->
+    @moveToFirstNonBlank() unless @opts.leaveCursor
+    @scrollDown()
+
+  scrollDown: ->
+    return if @rows.first is 0
+    offset = (@editor.getLineHeightInPixels() * (@scrolloff + 1))
+    @pixel -= (@editor.getHeight() - offset)
+    @editor.setScrollTop(@pixel)
+
+  moveToFirstNonBlank: ->
+    @editor.moveToFirstCharacterOfLine()
+
+module.exports = {ScrollDown, ScrollUp, ScrollCursorToTop, ScrollCursorToMiddle,
+  ScrollCursorToBottom}
diff --git a/atom/packages/vim-mode/lib/settings.coffee b/atom/packages/vim-mode/lib/settings.coffee
new file mode 100644 (file)
index 0000000..30ff35b
--- /dev/null
@@ -0,0 +1,28 @@
+
+settings =
+  config:
+    startInInsertMode:
+      type: 'boolean'
+      default: false
+    useSmartcaseForSearch:
+      type: 'boolean'
+      default: false
+    wrapLeftRightMotion:
+      type: 'boolean'
+      default: false
+    useClipboardAsDefaultRegister:
+      type: 'boolean'
+      default: false
+    numberRegex:
+      type: 'string'
+      default: '-?[0-9]+'
+      description: 'Use this to control how Ctrl-A/Ctrl-X finds numbers; use "(?:\\B-)?[0-9]+" to treat numbers as positive if the minus is preceded by a character, e.g. in "identifier-1".'
+
+Object.keys(settings.config).forEach (k) ->
+  settings[k] = ->
+    atom.config.get('vim-mode.'+k)
+
+settings.defaultRegister = ->
+  if settings.useClipboardAsDefaultRegister() then '*' else '"'
+
+module.exports = settings
diff --git a/atom/packages/vim-mode/lib/status-bar-manager.coffee b/atom/packages/vim-mode/lib/status-bar-manager.coffee
new file mode 100644 (file)
index 0000000..82e35e1
--- /dev/null
@@ -0,0 +1,37 @@
+{Disposable, CompositeDisposable} = require 'event-kit'
+
+ContentsByMode =
+  'insert': ["status-bar-vim-mode-insert", "Insert"]
+  'insert.replace': ["status-bar-vim-mode-insert", "Replace"]
+  'command': ["status-bar-vim-mode-command", "Command"]
+  'visual': ["status-bar-vim-mode-visual", "Visual"]
+  'visual.characterwise': ["status-bar-vim-mode-visual", "Visual"]
+  'visual.linewise': ["status-bar-vim-mode-visual", "Visual Line"]
+  'visual.blockwise': ["status-bar-vim-mode-visual", "Visual Block"]
+
+module.exports =
+class StatusBarManager
+  constructor: ->
+    @element = document.createElement("div")
+    @element.id = "status-bar-vim-mode"
+
+    @container = document.createElement("div")
+    @container.className = "inline-block"
+    @container.appendChild(@element)
+
+  initialize: (@statusBar) ->
+
+  update: (currentMode, currentSubmode) ->
+    currentMode = currentMode + "." + currentSubmode if currentSubmode?
+    if newContents = ContentsByMode[currentMode]
+      [klass, text] = newContents
+      @element.className = klass
+      @element.textContent = text
+
+  # Private
+
+  attach: ->
+    @tile = @statusBar.addRightTile(item: @container, priority: 20)
+
+  detach: ->
+    @tile.destroy()
diff --git a/atom/packages/vim-mode/lib/text-objects.coffee b/atom/packages/vim-mode/lib/text-objects.coffee
new file mode 100644 (file)
index 0000000..6d9741b
--- /dev/null
@@ -0,0 +1,164 @@
+{Range} = require 'atom'
+AllWhitespace = /^\s$/
+
+class TextObject
+  constructor: (@editor, @state) ->
+
+  isComplete: -> true
+  isRecordable: -> false
+
+class SelectInsideWord extends TextObject
+  select: ->
+    @editor.selectWordsContainingCursors()
+    [true]
+
+# SelectInsideQuotes and the next class defined (SelectInsideBrackets) are
+# almost-but-not-quite-repeated code. They are different because of the depth
+# checks in the bracket matcher.
+
+class SelectInsideQuotes extends TextObject
+  constructor: (@editor, @char, @includeQuotes) ->
+
+  findOpeningQuote: (pos) ->
+    start = pos.copy()
+    pos = pos.copy()
+    while pos.row >= 0
+      line = @editor.lineTextForBufferRow(pos.row)
+      pos.column = line.length - 1 if pos.column is -1
+      while pos.column >= 0
+        if line[pos.column] is @char
+          if pos.column is 0 or line[pos.column - 1] isnt '\\'
+            if @isStartQuote(pos)
+              return pos
+            else
+              return @lookForwardOnLine(start)
+        -- pos.column
+      pos.column = -1
+      -- pos.row
+    @lookForwardOnLine(start)
+
+  isStartQuote: (end) ->
+    line = @editor.lineTextForBufferRow(end.row)
+    numQuotes = line.substring(0, end.column + 1).replace( "'#{@char}", '').split(@char).length - 1
+    numQuotes % 2
+
+  lookForwardOnLine: (pos) ->
+    line = @editor.lineTextForBufferRow(pos.row)
+
+    index = line.substring(pos.column).indexOf(@char)
+    if index >= 0
+      pos.column += index
+      return pos
+    null
+
+  findClosingQuote: (start) ->
+    end = start.copy()
+    escaping = false
+
+    while end.row < @editor.getLineCount()
+      endLine = @editor.lineTextForBufferRow(end.row)
+      while end.column < endLine.length
+        if endLine[end.column] is '\\'
+          ++ end.column
+        else if endLine[end.column] is @char
+          -- start.column if @includeQuotes
+          ++ end.column if @includeQuotes
+          return end
+        ++ end.column
+      end.column = 0
+      ++ end.row
+    return
+
+  select: ->
+    for selection in @editor.getSelections()
+      start = @findOpeningQuote(selection.cursor.getBufferPosition())
+      if start?
+        ++ start.column # skip the opening quote
+        end = @findClosingQuote(start)
+        if end?
+          selection.setBufferRange([start, end])
+      not selection.isEmpty()
+
+# SelectInsideBrackets and the previous class defined (SelectInsideQuotes) are
+# almost-but-not-quite-repeated code. They are different because of the depth
+# checks in the bracket matcher.
+
+class SelectInsideBrackets extends TextObject
+  constructor: (@editor, @beginChar, @endChar, @includeBrackets) ->
+
+  findOpeningBracket: (pos) ->
+    pos = pos.copy()
+    depth = 0
+    while pos.row >= 0
+      line = @editor.lineTextForBufferRow(pos.row)
+      pos.column = line.length - 1 if pos.column is -1
+      while pos.column >= 0
+        switch line[pos.column]
+          when @endChar then ++ depth
+          when @beginChar
+            return pos if -- depth < 0
+        -- pos.column
+      pos.column = -1
+      -- pos.row
+
+  findClosingBracket: (start) ->
+    end = start.copy()
+    depth = 0
+    while end.row < @editor.getLineCount()
+      endLine = @editor.lineTextForBufferRow(end.row)
+      while end.column < endLine.length
+        switch endLine[end.column]
+          when @beginChar then ++ depth
+          when @endChar
+            if -- depth < 0
+              -- start.column if @includeBrackets
+              ++ end.column if @includeBrackets
+              return end
+        ++ end.column
+      end.column = 0
+      ++ end.row
+    return
+
+  select: ->
+    for selection in @editor.getSelections()
+      start = @findOpeningBracket(selection.cursor.getBufferPosition())
+      if start?
+        ++ start.column # skip the opening quote
+        end = @findClosingBracket(start)
+        if end?
+          selection.setBufferRange([start, end])
+      not selection.isEmpty()
+
+class SelectAWord extends TextObject
+  select: ->
+    for selection in @editor.getSelections()
+      selection.selectWord()
+      loop
+        endPoint = selection.getBufferRange().end
+        char = @editor.getTextInRange(Range.fromPointWithDelta(endPoint, 0, 1))
+        break unless AllWhitespace.test(char)
+        selection.selectRight()
+      true
+
+class SelectInsideParagraph extends TextObject
+  constructor: (@editor, @inclusive) ->
+  select: ->
+    for selection in @editor.getSelections()
+      range = selection.cursor.getCurrentParagraphBufferRange()
+      if range?
+        selection.setBufferRange(range)
+        selection.selectToBeginningOfNextParagraph()
+      true
+
+class SelectAParagraph extends TextObject
+  constructor: (@editor, @inclusive) ->
+  select: ->
+    for selection in @editor.getSelections()
+      range = selection.cursor.getCurrentParagraphBufferRange()
+      if range?
+        selection.setBufferRange(range)
+        selection.selectToBeginningOfNextParagraph()
+        selection.selectDown()
+      true
+
+module.exports = {TextObject, SelectInsideWord, SelectInsideQuotes, SelectInsideBrackets, SelectAWord, SelectInsideParagraph, SelectAParagraph}
diff --git a/atom/packages/vim-mode/lib/utils.coffee b/atom/packages/vim-mode/lib/utils.coffee
new file mode 100644 (file)
index 0000000..362b65d
--- /dev/null
@@ -0,0 +1,14 @@
+module.exports =
+  # Public: Determines if a string should be considered linewise or character
+  #
+  # text - The string to consider
+  #
+  # Returns 'linewise' if the string ends with a line return and 'character'
+  #  otherwise.
+  copyType: (text) ->
+    if text.lastIndexOf("\n") is text.length - 1
+      'linewise'
+    else if text.lastIndexOf("\r") is text.length - 1
+      'linewise'
+    else
+      'character'
diff --git a/atom/packages/vim-mode/lib/view-models/search-view-model.coffee b/atom/packages/vim-mode/lib/view-models/search-view-model.coffee
new file mode 100644 (file)
index 0000000..8787210
--- /dev/null
@@ -0,0 +1,42 @@
+{ViewModel} = require './view-model'
+
+module.exports =
+class SearchViewModel extends ViewModel
+  constructor: (@searchMotion) ->
+    super(@searchMotion, class: 'search')
+    @historyIndex = -1
+
+    atom.commands.add(@view.editorElement, 'core:move-up', @increaseHistorySearch)
+    atom.commands.add(@view.editorElement, 'core:move-down', @decreaseHistorySearch)
+
+  restoreHistory: (index) ->
+    @view.editorElement.getModel().setText(@history(index))
+
+  history: (index) ->
+    @vimState.getSearchHistoryItem(index)
+
+  increaseHistorySearch: =>
+    if @history(@historyIndex + 1)?
+      @historyIndex += 1
+      @restoreHistory(@historyIndex)
+
+  decreaseHistorySearch: =>
+    if @historyIndex <= 0
+      # get us back to a clean slate
+      @historyIndex = -1
+      @view.editorElement.getModel().setText('')
+    else
+      @historyIndex -= 1
+      @restoreHistory(@historyIndex)
+
+  confirm: (view) =>
+    repeatChar = if @searchMotion.initiallyReversed then '?' else '/'
+    if @view.value is '' or @view.value is repeatChar
+      lastSearch = @history(0)
+      if lastSearch?
+        @view.value = lastSearch
+      else
+        @view.value = ''
+        atom.beep()
+    super(view)
+    @vimState.pushSearchHistory(@view.value)
diff --git a/atom/packages/vim-mode/lib/view-models/view-model.coffee b/atom/packages/vim-mode/lib/view-models/view-model.coffee
new file mode 100644 (file)
index 0000000..9cc63e1
--- /dev/null
@@ -0,0 +1,24 @@
+VimCommandModeInputElement = require './vim-command-mode-input-element'
+
+class ViewModel
+  constructor: (@operation, opts={}) ->
+    {@editor, @vimState} = @operation
+    @view = new VimCommandModeInputElement().initialize(this, opts)
+    @editor.commandModeInputView = @view
+    @vimState.onDidFailToCompose => @view.remove()
+
+  confirm: (view) ->
+    @vimState.pushOperations(new Input(@view.value))
+
+  cancel: (view) ->
+    if @vimState.isOperatorPending()
+      @vimState.pushOperations(new Input(''))
+
+class Input
+  constructor: (@characters) ->
+  isComplete: -> true
+  isRecordable: -> true
+
+module.exports = {
+  ViewModel, Input
+}
diff --git a/atom/packages/vim-mode/lib/view-models/vim-command-mode-input-element.coffee b/atom/packages/vim-mode/lib/view-models/vim-command-mode-input-element.coffee
new file mode 100644 (file)
index 0000000..4fd0c52
--- /dev/null
@@ -0,0 +1,64 @@
+class VimCommandModeInputElement extends HTMLDivElement
+  createdCallback: ->
+    @className = "command-mode-input"
+
+    @editorContainer = document.createElement("div")
+    @editorContainer.className = "editor-container"
+
+    @appendChild(@editorContainer)
+
+  initialize: (@viewModel, opts = {}) ->
+    if opts.class?
+      @editorContainer.classList.add(opts.class)
+
+    if opts.hidden
+      @editorContainer.style.height = "0px"
+
+    @editorElement = document.createElement "atom-text-editor"
+    @editorElement.classList.add('editor')
+    @editorElement.getModel().setMini(true)
+    @editorElement.setAttribute('mini', '')
+    @editorContainer.appendChild(@editorElement)
+
+    @singleChar = opts.singleChar
+    @defaultText = opts.defaultText ? ''
+
+    @panel = atom.workspace.addBottomPanel(item: this, priority: 100)
+
+    @focus()
+    @handleEvents()
+
+    this
+
+  handleEvents: ->
+    if @singleChar?
+      @editorElement.getModel().getBuffer().onDidChange (e) =>
+        @confirm() if e.newText
+    else
+      atom.commands.add(@editorElement, 'editor:newline', @confirm.bind(this))
+
+    atom.commands.add(@editorElement, 'core:confirm', @confirm.bind(this))
+    atom.commands.add(@editorElement, 'core:cancel', @cancel.bind(this))
+    atom.commands.add(@editorElement, 'blur', @cancel.bind(this))
+
+  confirm: ->
+    @value = @editorElement.getModel().getText() or @defaultText
+    @viewModel.confirm(this)
+    @removePanel()
+
+  focus: ->
+    @editorElement.focus()
+
+  cancel: (e) ->
+    @viewModel.cancel(this)
+    @removePanel()
+
+  removePanel: ->
+    atom.workspace.getActivePane().activate()
+    @panel.destroy()
+
+module.exports =
+document.registerElement("vim-command-mode-input"
+  extends: "div",
+  prototype: VimCommandModeInputElement.prototype
+)
diff --git a/atom/packages/vim-mode/lib/vim-mode.coffee b/atom/packages/vim-mode/lib/vim-mode.coffee
new file mode 100644 (file)
index 0000000..660fba0
--- /dev/null
@@ -0,0 +1,51 @@
+{Disposable, CompositeDisposable} = require 'event-kit'
+StatusBarManager = require './status-bar-manager'
+GlobalVimState = require './global-vim-state'
+VimState = require './vim-state'
+settings = require './settings'
+
+module.exports =
+  config: settings.config
+
+  activate: (state) ->
+    @disposables = new CompositeDisposable
+    @globalVimState = new GlobalVimState
+    @statusBarManager = new StatusBarManager
+
+    @vimStates = new Set
+    @vimStatesByEditor = new WeakMap
+
+    @disposables.add atom.workspace.observeTextEditors (editor) =>
+      return if editor.isMini() or @vimStatesByEditor.get(editor)
+
+      vimState = new VimState(
+        atom.views.getView(editor),
+        @statusBarManager,
+        @globalVimState
+      )
+
+      @vimStates.add(vimState)
+      @vimStatesByEditor.set(editor, vimState)
+      vimState.onDidDestroy => @vimStates.delete(vimState)
+
+    @disposables.add new Disposable =>
+      @vimStates.forEach (vimState) -> vimState.destroy()
+
+  deactivate: ->
+    @disposables.dispose()
+
+  getGlobalState: ->
+    @globalVimState
+
+  getEditorState: (editor) ->
+    @vimStatesByEditor.get(editor)
+
+  consumeStatusBar: (statusBar) ->
+    @statusBarManager.initialize(statusBar)
+    @statusBarManager.attach()
+    @disposables.add new Disposable =>
+      @statusBarManager.detach()
+
+  provideVimMode: ->
+    getGlobalState: @getGlobalState.bind(this)
+    getEditorState: @getEditorState.bind(this)
diff --git a/atom/packages/vim-mode/lib/vim-state.coffee b/atom/packages/vim-mode/lib/vim-state.coffee
new file mode 100644 (file)
index 0000000..a45551c
--- /dev/null
@@ -0,0 +1,592 @@
+_ = require 'underscore-plus'
+{Point, Range} = require 'atom'
+{Emitter, Disposable, CompositeDisposable} = require 'event-kit'
+settings = require './settings'
+
+Operators = require './operators/index'
+Prefixes = require './prefixes'
+Motions = require './motions/index'
+
+TextObjects = require './text-objects'
+Utils = require './utils'
+Scroll = require './scroll'
+
+module.exports =
+class VimState
+  editor: null
+  opStack: null
+  mode: null
+  submode: null
+  destroyed: false
+
+  constructor: (@editorElement, @statusBarManager, @globalVimState) ->
+    @emitter = new Emitter
+    @subscriptions = new CompositeDisposable
+    @editor = @editorElement.getModel()
+    @opStack = []
+    @history = []
+    @marks = {}
+    @subscriptions.add @editor.onDidDestroy => @destroy()
+
+    @subscriptions.add @editor.onDidChangeSelectionRange _.debounce(=>
+      return unless @editor?
+      if @editor.getSelections().every((selection) -> selection.isEmpty())
+        @activateCommandMode() if @mode is 'visual'
+      else
+        @activateVisualMode('characterwise') if @mode is 'command'
+    , 100)
+
+    @editorElement.classList.add("vim-mode")
+    @setupCommandMode()
+    if settings.startInInsertMode()
+      @activateInsertMode()
+    else
+      @activateCommandMode()
+
+  destroy: ->
+    unless @destroyed
+      @destroyed = true
+      @emitter.emit 'did-destroy'
+      @subscriptions.dispose()
+      if @editor.isAlive()
+        @deactivateInsertMode()
+        @editorElement.component?.setInputEnabled(true)
+        @editorElement.classList.remove("vim-mode")
+        @editorElement.classList.remove("command-mode")
+      @editor = null
+      @editorElement = null
+
+  # Private: Creates the plugin's bindings
+  #
+  # Returns nothing.
+  setupCommandMode: ->
+    @registerCommands
+      'activate-command-mode': => @activateCommandMode()
+      'activate-linewise-visual-mode': => @activateVisualMode('linewise')
+      'activate-characterwise-visual-mode': => @activateVisualMode('characterwise')
+      'activate-blockwise-visual-mode': => @activateVisualMode('blockwise')
+      'reset-command-mode': => @resetCommandMode()
+      'repeat-prefix': (e) => @repeatPrefix(e)
+      'reverse-selections': (e) => @reverseSelections(e)
+      'undo': (e) => @undo(e)
+
+    @registerOperationCommands
+      'activate-insert-mode': => new Operators.Insert(@editor, this)
+      'substitute': => new Operators.Substitute(@editor, this)
+      'substitute-line': => new Operators.SubstituteLine(@editor, this)
+      'insert-after': => new Operators.InsertAfter(@editor, this)
+      'insert-after-end-of-line': => new Operators.InsertAfterEndOfLine(@editor, this)
+      'insert-at-beginning-of-line': => new Operators.InsertAtBeginningOfLine(@editor, this)
+      'insert-above-with-newline': => new Operators.InsertAboveWithNewline(@editor, this)
+      'insert-below-with-newline': => new Operators.InsertBelowWithNewline(@editor, this)
+      'delete': => @linewiseAliasedOperator(Operators.Delete)
+      'change': => @linewiseAliasedOperator(Operators.Change)
+      'change-to-last-character-of-line': => [new Operators.Change(@editor, this), new Motions.MoveToLastCharacterOfLine(@editor, this)]
+      'delete-right': => [new Operators.Delete(@editor, this), new Motions.MoveRight(@editor, this)]
+      'delete-left': => [new Operators.Delete(@editor, this), new Motions.MoveLeft(@editor, this)]
+      'delete-to-last-character-of-line': => [new Operators.Delete(@editor, this), new Motions.MoveToLastCharacterOfLine(@editor, this)]
+      'toggle-case': => new Operators.ToggleCase(@editor, this)
+      'upper-case': => new Operators.UpperCase(@editor, this)
+      'lower-case': => new Operators.LowerCase(@editor, this)
+      'toggle-case-now': => new Operators.ToggleCase(@editor, this, complete: true)
+      'yank': => @linewiseAliasedOperator(Operators.Yank)
+      'yank-line': => [new Operators.Yank(@editor, this), new Motions.MoveToRelativeLine(@editor, this)]
+      'put-before': => new Operators.Put(@editor, this, location: 'before')
+      'put-after': => new Operators.Put(@editor, this, location: 'after')
+      'join': => new Operators.Join(@editor, this)
+      'indent': => @linewiseAliasedOperator(Operators.Indent)
+      'outdent': => @linewiseAliasedOperator(Operators.Outdent)
+      'auto-indent': => @linewiseAliasedOperator(Operators.Autoindent)
+      'increase': => new Operators.Increase(@editor, this)
+      'decrease': => new Operators.Decrease(@editor, this)
+      'move-left': => new Motions.MoveLeft(@editor, this)
+      'move-up': => new Motions.MoveUp(@editor, this)
+      'move-down': => new Motions.MoveDown(@editor, this)
+      'move-right': => new Motions.MoveRight(@editor, this)
+      'move-to-next-word': => new Motions.MoveToNextWord(@editor, this)
+      'move-to-next-whole-word': => new Motions.MoveToNextWholeWord(@editor, this)
+      'move-to-end-of-word': => new Motions.MoveToEndOfWord(@editor, this)
+      'move-to-end-of-whole-word': => new Motions.MoveToEndOfWholeWord(@editor, this)
+      'move-to-previous-word': => new Motions.MoveToPreviousWord(@editor, this)
+      'move-to-previous-whole-word': => new Motions.MoveToPreviousWholeWord(@editor, this)
+      'move-to-next-paragraph': => new Motions.MoveToNextParagraph(@editor, this)
+      'move-to-previous-paragraph': => new Motions.MoveToPreviousParagraph(@editor, this)
+      'move-to-first-character-of-line': => new Motions.MoveToFirstCharacterOfLine(@editor, this)
+      'move-to-first-character-of-line-and-down': => new Motions.MoveToFirstCharacterOfLineAndDown(@editor, this)
+      'move-to-last-character-of-line': => new Motions.MoveToLastCharacterOfLine(@editor, this)
+      'move-to-last-nonblank-character-of-line-and-down': => new Motions.MoveToLastNonblankCharacterOfLineAndDown(@editor, this)
+      'move-to-beginning-of-line': (e) => @moveOrRepeat(e)
+      'move-to-first-character-of-line-up': => new Motions.MoveToFirstCharacterOfLineUp(@editor, this)
+      'move-to-first-character-of-line-down': => new Motions.MoveToFirstCharacterOfLineDown(@editor, this)
+      'move-to-start-of-file': => new Motions.MoveToStartOfFile(@editor, this)
+      'move-to-line': => new Motions.MoveToAbsoluteLine(@editor, this)
+      'move-to-top-of-screen': => new Motions.MoveToTopOfScreen(@editorElement, this)
+      'move-to-bottom-of-screen': => new Motions.MoveToBottomOfScreen(@editorElement, this)
+      'move-to-middle-of-screen': => new Motions.MoveToMiddleOfScreen(@editorElement, this)
+      'scroll-down': => new Scroll.ScrollDown(@editorElement)
+      'scroll-up': => new Scroll.ScrollUp(@editorElement)
+      'scroll-cursor-to-top': => new Scroll.ScrollCursorToTop(@editorElement)
+      'scroll-cursor-to-top-leave': => new Scroll.ScrollCursorToTop(@editorElement, {leaveCursor: true})
+      'scroll-cursor-to-middle': => new Scroll.ScrollCursorToMiddle(@editorElement)
+      'scroll-cursor-to-middle-leave': => new Scroll.ScrollCursorToMiddle(@editorElement, {leaveCursor: true})
+      'scroll-cursor-to-bottom': => new Scroll.ScrollCursorToBottom(@editorElement)
+      'scroll-cursor-to-bottom-leave': => new Scroll.ScrollCursorToBottom(@editorElement, {leaveCursor: true})
+      'scroll-half-screen-up': => new Motions.ScrollHalfUpKeepCursor(@editorElement, this)
+      'scroll-full-screen-up': => new Motions.ScrollFullUpKeepCursor(@editorElement, this)
+      'scroll-half-screen-down': => new Motions.ScrollHalfDownKeepCursor(@editorElement, this)
+      'scroll-full-screen-down': => new Motions.ScrollFullDownKeepCursor(@editorElement, this)
+      'select-inside-word': => new TextObjects.SelectInsideWord(@editor)
+      'select-inside-double-quotes': => new TextObjects.SelectInsideQuotes(@editor, '"', false)
+      'select-inside-single-quotes': => new TextObjects.SelectInsideQuotes(@editor, '\'', false)
+      'select-inside-back-ticks': => new TextObjects.SelectInsideQuotes(@editor, '`', false)
+      'select-inside-curly-brackets': => new TextObjects.SelectInsideBrackets(@editor, '{', '}', false)
+      'select-inside-angle-brackets': => new TextObjects.SelectInsideBrackets(@editor, '<', '>', false)
+      'select-inside-tags': => new TextObjects.SelectInsideBrackets(@editor, '>', '<', false)
+      'select-inside-square-brackets': => new TextObjects.SelectInsideBrackets(@editor, '[', ']', false)
+      'select-inside-parentheses': => new TextObjects.SelectInsideBrackets(@editor, '(', ')', false)
+      'select-inside-paragraph': => new TextObjects.SelectInsideParagraph(@editor, false)
+      'select-a-word': => new TextObjects.SelectAWord(@editor)
+      'select-around-double-quotes': => new TextObjects.SelectInsideQuotes(@editor, '"', true)
+      'select-around-single-quotes': => new TextObjects.SelectInsideQuotes(@editor, '\'', true)
+      'select-around-back-ticks': => new TextObjects.SelectInsideQuotes(@editor, '`', true)
+      'select-around-curly-brackets': => new TextObjects.SelectInsideBrackets(@editor, '{', '}', true)
+      'select-around-angle-brackets': => new TextObjects.SelectInsideBrackets(@editor, '<', '>', true)
+      'select-around-square-brackets': => new TextObjects.SelectInsideBrackets(@editor, '[', ']', true)
+      'select-around-parentheses': => new TextObjects.SelectInsideBrackets(@editor, '(', ')', true)
+      'select-around-paragraph': => new TextObjects.SelectAParagraph(@editor, true)
+      'register-prefix': (e) => @registerPrefix(e)
+      'repeat': (e) => new Operators.Repeat(@editor, this)
+      'repeat-search': (e) => new Motions.RepeatSearch(@editor, this)
+      'repeat-search-backwards': (e) => new Motions.RepeatSearch(@editor, this).reversed()
+      'move-to-mark': (e) => new Motions.MoveToMark(@editor, this)
+      'move-to-mark-literal': (e) => new Motions.MoveToMark(@editor, this, false)
+      'mark': (e) => new Operators.Mark(@editor, this)
+      'find': (e) => new Motions.Find(@editor, this)
+      'find-backwards': (e) => new Motions.Find(@editor, this).reverse()
+      'till': (e) => new Motions.Till(@editor, this)
+      'till-backwards': (e) => new Motions.Till(@editor, this).reverse()
+      'repeat-find': (e) => @currentFind.repeat() if @currentFind?
+      'repeat-find-reverse': (e) => @currentFind.repeat(reverse: true) if @currentFind?
+      'replace': (e) => new Operators.Replace(@editor, this)
+      'search': (e) => new Motions.Search(@editor, this)
+      'reverse-search': (e) => (new Motions.Search(@editor, this)).reversed()
+      'search-current-word': (e) => new Motions.SearchCurrentWord(@editor, this)
+      'bracket-matching-motion': (e) => new Motions.BracketMatchingMotion(@editor, this)
+      'reverse-search-current-word': (e) => (new Motions.SearchCurrentWord(@editor, this)).reversed()
+
+  # Private: Register multiple command handlers via an {Object} that maps
+  # command names to command handler functions.
+  #
+  # Prefixes the given command names with 'vim-mode:' to reduce redundancy in
+  # the provided object.
+  registerCommands: (commands) ->
+    for commandName, fn of commands
+      do (fn) =>
+        @subscriptions.add(atom.commands.add(@editorElement, "vim-mode:#{commandName}", fn))
+
+  # Private: Register multiple Operators via an {Object} that
+  # maps command names to functions that return operations to push.
+  #
+  # Prefixes the given command names with 'vim-mode:' to reduce redundancy in
+  # the given object.
+  registerOperationCommands: (operationCommands) ->
+    commands = {}
+    for commandName, operationFn of operationCommands
+      do (operationFn) =>
+        commands[commandName] = (event) => @pushOperations(operationFn(event))
+    @registerCommands(commands)
+
+  # Private: Push the given operations onto the operation stack, then process
+  # it.
+  pushOperations: (operations) ->
+    return unless operations?
+    operations = [operations] unless _.isArray(operations)
+
+    for operation in operations
+      # Motions in visual mode perform their selections.
+      if @mode is 'visual' and (operation instanceof Motions.Motion or operation instanceof TextObjects.TextObject)
+        operation.execute = operation.select
+
+      # if we have started an operation that responds to canComposeWith check if it can compose
+      # with the operation we're going to push onto the stack
+      if (topOp = @topOperation())? and topOp.canComposeWith? and not topOp.canComposeWith(operation)
+        @resetCommandMode()
+        @emitter.emit('failed-to-compose')
+        break
+
+      @opStack.push(operation)
+
+      # If we've received an operator in visual mode, mark the current
+      # selection as the motion to operate on.
+      if @mode is 'visual' and operation instanceof Operators.Operator
+        @opStack.push(new Motions.CurrentSelection(@editor, this))
+
+      @processOpStack()
+
+  onDidFailToCompose: (fn) ->
+    @emitter.on('failed-to-compose', fn)
+
+  onDidDestroy: (fn) ->
+    @emitter.on('did-destroy', fn)
+
+  # Private: Removes all operations from the stack.
+  #
+  # Returns nothing.
+  clearOpStack: ->
+    @opStack = []
+
+  undo: ->
+    @editor.undo()
+    @activateCommandMode()
+
+  # Private: Processes the command if the last operation is complete.
+  #
+  # Returns nothing.
+  processOpStack: ->
+    unless @opStack.length > 0
+      return
+
+    unless @topOperation().isComplete()
+      if @mode is 'command' and @topOperation() instanceof Operators.Operator
+        @activateOperatorPendingMode()
+      return
+
+    poppedOperation = @opStack.pop()
+    if @opStack.length
+      try
+        @topOperation().compose(poppedOperation)
+        @processOpStack()
+      catch e
+        if (e instanceof Operators.OperatorError) or (e instanceof Motions.MotionError)
+          @resetCommandMode()
+        else
+          throw e
+    else
+      @history.unshift(poppedOperation) if poppedOperation.isRecordable()
+      poppedOperation.execute()
+
+  # Private: Fetches the last operation.
+  #
+  # Returns the last operation.
+  topOperation: ->
+    _.last @opStack
+
+  # Private: Fetches the value of a given register.
+  #
+  # name - The name of the register to fetch.
+  #
+  # Returns the value of the given register or undefined if it hasn't
+  # been set.
+  getRegister: (name) ->
+    if name in ['*', '+']
+      text = atom.clipboard.read()
+      type = Utils.copyType(text)
+      {text, type}
+    else if name is '%'
+      text = @editor.getURI()
+      type = Utils.copyType(text)
+      {text, type}
+    else if name is "_" # Blackhole always returns nothing
+      text = ''
+      type = Utils.copyType(text)
+      {text, type}
+    else
+      @globalVimState.registers[name.toLowerCase()]
+
+  # Private: Fetches the value of a given mark.
+  #
+  # name - The name of the mark to fetch.
+  #
+  # Returns the value of the given mark or undefined if it hasn't
+  # been set.
+  getMark: (name) ->
+    if @marks[name]
+      @marks[name].getBufferRange().start
+    else
+      undefined
+
+  # Private: Sets the value of a given register.
+  #
+  # name  - The name of the register to fetch.
+  # value - The value to set the register to.
+  #
+  # Returns nothing.
+  setRegister: (name, value) ->
+    if name in ['*', '+']
+      atom.clipboard.write(value.text)
+    else if name is '_'
+      # Blackhole register, nothing to do
+    else if /^[A-Z]$/.test(name)
+      @appendRegister(name.toLowerCase(), value)
+    else
+      @globalVimState.registers[name] = value
+
+
+  # Private: append a value into a given register
+  # like setRegister, but appends the value
+  appendRegister: (name, value) ->
+    register = @globalVimState.registers[name] ?=
+      type: 'character'
+      text: ""
+    if register.type is 'linewise' and value.type isnt 'linewise'
+      register.text += value.text + '\n'
+    else if register.type isnt 'linewise' and value.type is 'linewise'
+      register.text += '\n' + value.text
+      register.type = 'linewise'
+    else
+      register.text += value.text
+
+  # Private: Sets the value of a given mark.
+  #
+  # name  - The name of the mark to fetch.
+  # pos {Point} - The value to set the mark to.
+  #
+  # Returns nothing.
+  setMark: (name, pos) ->
+    # check to make sure name is in [a-z] or is `
+    if (charCode = name.charCodeAt(0)) >= 96 and charCode <= 122
+      marker = @editor.markBufferRange(new Range(pos, pos), {invalidate: 'never', persistent: false})
+      @marks[name] = marker
+
+  # Public: Append a search to the search history.
+  #
+  # Motions.Search - The confirmed search motion to append
+  #
+  # Returns nothing
+  pushSearchHistory: (search) ->
+    @globalVimState.searchHistory.unshift search
+
+  # Public: Get the search history item at the given index.
+  #
+  # index - the index of the search history item
+  #
+  # Returns a search motion
+  getSearchHistoryItem: (index = 0) ->
+    @globalVimState.searchHistory[index]
+
+  ##############################################################################
+  # Mode Switching
+  ##############################################################################
+
+  # Private: Used to enable command mode.
+  #
+  # Returns nothing.
+  activateCommandMode: ->
+    @deactivateInsertMode()
+    @deactivateVisualMode()
+
+    @mode = 'command'
+    @submode = null
+
+    @changeModeClass('command-mode')
+
+    @clearOpStack()
+    selection.clear(autoscroll: false) for selection in @editor.getSelections()
+    for cursor in @editor.getCursors()
+      if cursor.isAtEndOfLine() and not cursor.isAtBeginningOfLine()
+        cursor.moveLeft()
+
+    @updateStatusBar()
+
+  # Private: Used to enable insert mode.
+  #
+  # Returns nothing.
+  activateInsertMode: ->
+    @mode = 'insert'
+    @editorElement.component.setInputEnabled(true)
+    @setInsertionCheckpoint()
+    @submode = null
+    @changeModeClass('insert-mode')
+    @updateStatusBar()
+
+  setInsertionCheckpoint: ->
+    @insertionCheckpoint = @editor.createCheckpoint() unless @insertionCheckpoint?
+
+  deactivateInsertMode: ->
+    return unless @mode in [null, 'insert']
+    @editorElement.component.setInputEnabled(false)
+    @editor.groupChangesSinceCheckpoint(@insertionCheckpoint)
+    changes = getChangesSinceCheckpoint(@editor.buffer, @insertionCheckpoint)
+    item = @inputOperator(@history[0])
+    @insertionCheckpoint = null
+    if item?
+      item.confirmChanges(changes)
+    for cursor in @editor.getCursors()
+      cursor.moveLeft() unless cursor.isAtBeginningOfLine()
+
+  deactivateVisualMode: ->
+    return unless @mode is 'visual'
+    for selection in @editor.getSelections()
+      selection.cursor.moveLeft() unless (selection.isEmpty() or selection.isReversed())
+
+  # Private: Get the input operator that needs to be told about about the
+  # typed undo transaction in a recently completed operation, if there
+  # is one.
+  inputOperator: (item) ->
+    return item unless item?
+    return item if item.inputOperator?()
+    return item.composedObject if item.composedObject?.inputOperator?()
+
+  # Private: Used to enable visual mode.
+  #
+  # type - One of 'characterwise', 'linewise' or 'blockwise'
+  #
+  # Returns nothing.
+  activateVisualMode: (type) ->
+    # Already in 'visual', this means one of following command is
+    # executed within `vim-mode.visual-mode`
+    #  * activate-blockwise-visual-mode
+    #  * activate-characterwise-visual-mode
+    #  * activate-linewise-visual-mode
+    if @mode is 'visual'
+      if @submode is type
+        @activateCommandMode()
+        return
+
+      @submode = type
+      if @submode is 'linewise'
+        for selection in @editor.getSelections()
+          # Keep original range as marker's property to get back
+          # to characterwise.
+          # Since selectLine lost original cursor column.
+          originalRange = selection.getBufferRange()
+          selection.marker.setProperties({originalRange})
+          [start, end] = selection.getBufferRowRange()
+          selection.selectLine(row) for row in [start..end]
+
+      else if @submode in ['characterwise', 'blockwise']
+        # Currently, 'blockwise' is not yet implemented.
+        # So treat it as characterwise.
+        # Recover original range.
+        for selection in @editor.getSelections()
+          {originalRange} = selection.marker.getProperties()
+          if originalRange
+            [startRow, endRow] = selection.getBufferRowRange()
+            originalRange.start.row = startRow
+            originalRange.end.row   = endRow
+            selection.setBufferRange(originalRange)
+    else
+      @deactivateInsertMode()
+      @mode = 'visual'
+      @submode = type
+      @changeModeClass('visual-mode')
+
+      if @submode is 'linewise'
+        @editor.selectLinesContainingCursors()
+      else if @editor.getSelectedText() is ''
+        @editor.selectRight()
+
+    @updateStatusBar()
+
+  # Private: Used to re-enable visual mode
+  resetVisualMode: ->
+    @activateVisualMode(@submode)
+
+  # Private: Used to enable operator-pending mode.
+  activateOperatorPendingMode: ->
+    @deactivateInsertMode()
+    @mode = 'operator-pending'
+    @submodule = null
+    @changeModeClass('operator-pending-mode')
+
+    @updateStatusBar()
+
+  changeModeClass: (targetMode) ->
+    for mode in ['command-mode', 'insert-mode', 'visual-mode', 'operator-pending-mode']
+      if mode is targetMode
+        @editorElement.classList.add(mode)
+      else
+        @editorElement.classList.remove(mode)
+
+  # Private: Resets the command mode back to it's initial state.
+  #
+  # Returns nothing.
+  resetCommandMode: ->
+    @clearOpStack()
+    @editor.clearSelections()
+    @activateCommandMode()
+
+  # Private: A generic way to create a Register prefix based on the event.
+  #
+  # e - The event that triggered the Register prefix.
+  #
+  # Returns nothing.
+  registerPrefix: (e) ->
+    keyboardEvent = e.originalEvent?.originalEvent ? e.originalEvent
+    name = atom.keymaps.keystrokeForKeyboardEvent(keyboardEvent)
+    if name.lastIndexOf('shift-', 0) is 0
+      name = name.slice(6)
+    new Prefixes.Register(name)
+
+  # Private: A generic way to create a Number prefix based on the event.
+  #
+  # e - The event that triggered the Number prefix.
+  #
+  # Returns nothing.
+  repeatPrefix: (e) ->
+    keyboardEvent = e.originalEvent?.originalEvent ? e.originalEvent
+    num = parseInt(atom.keymaps.keystrokeForKeyboardEvent(keyboardEvent))
+    if @topOperation() instanceof Prefixes.Repeat
+      @topOperation().addDigit(num)
+    else
+      if num is 0
+        e.abortKeyBinding()
+      else
+        @pushOperations(new Prefixes.Repeat(num))
+
+  reverseSelections: ->
+    for selection in @editor.getSelections()
+      reversed = not selection.isReversed()
+      selection.setBufferRange(selection.getBufferRange(), {reversed})
+
+  # Private: Figure out whether or not we are in a repeat sequence or we just
+  # want to move to the beginning of the line. If we are within a repeat
+  # sequence, we pass control over to @repeatPrefix.
+  #
+  # e - The triggered event.
+  #
+  # Returns new motion or nothing.
+  moveOrRepeat: (e) ->
+    if @topOperation() instanceof Prefixes.Repeat
+      @repeatPrefix(e)
+      null
+    else
+      new Motions.MoveToBeginningOfLine(@editor, this)
+
+  # Private: A generic way to handle Operators that can be repeated for
+  # their linewise form.
+  #
+  # constructor - The constructor of the operator.
+  #
+  # Returns nothing.
+  linewiseAliasedOperator: (constructor) ->
+    if @isOperatorPending(constructor)
+      new Motions.MoveToRelativeLine(@editor, this)
+    else
+      new constructor(@editor, this)
+
+  # Private: Check if there is a pending operation of a certain type, or
+  # if there is any pending operation, if no type given.
+  #
+  # constructor - The constructor of the object type you're looking for.
+  #
+  isOperatorPending: (constructor) ->
+    if constructor?
+      for op in @opStack
+        return op if op instanceof constructor
+      false
+    else
+      @opStack.length > 0
+
+  updateStatusBar: ->
+    @statusBarManager.update(@mode, @submode)
+
+# This uses private APIs and may break if TextBuffer is refactored.
+# Package authors - copy and paste this code at your own risk.
+getChangesSinceCheckpoint = (buffer, checkpoint) ->
+  {history} = buffer
+
+  if (index = history.getCheckpointIndex(checkpoint))?
+    history.undoStack.slice(index)
+  else
+    []
diff --git a/atom/packages/vim-mode/node_modules/event-kit/LICENSE.md b/atom/packages/vim-mode/node_modules/event-kit/LICENSE.md
new file mode 100644 (file)
index 0000000..4d231b4
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2014 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/vim-mode/node_modules/event-kit/README.md b/atom/packages/vim-mode/node_modules/event-kit/README.md
new file mode 100644 (file)
index 0000000..0dc343d
--- /dev/null
@@ -0,0 +1,68 @@
+# event-kit
+
+This is a simple library for implementing event subscription APIs.
+
+## Implementing Event Subscription APIs
+
+```coffee
+{Emitter} = require 'event-kit'
+
+class User
+  constructor: ->
+     @emitter = new Emitter
+
+  onDidChangeName: (callback) ->
+     @emitter.on 'did-change-name', callback
+
+  setName: (name) ->
+     if name isnt @name
+       @name = name
+       @emitter.emit 'did-change-name', name
+     @name
+
+  destroy: ->
+    @emitter.dispose()
+```
+
+In the example above, we implement `::onDidChangeName` on the user object, which
+will register callbacks to be invoked whenever the user's name changes. To do
+so, we make use of an internal `Emitter` instance. We use `::on` to subscribe
+the given callback in `::onDidChangeName`, and `::emit` in `::setName` to notify
+subscribers. Finally, when the `User` instance is destroyed we call `::dispose`
+on the emitter to unsubscribe all subscribers.
+
+## Consuming Event Subscription APIs
+
+`Emitter::on` returns a `Disposable` instance, which has a `::dispose` method.
+To unsubscribe, simply call dispose on the returned object.
+
+```coffee
+subscription = user.onDidChangeName (name) -> console.log("My name is #{name}")
+# Later, to unsubscribe...
+subscription.dispose()
+```
+
+You can also use `CompositeDisposable` to combine disposable instances together.
+
+```coffee
+{CompositeDisposable} = require 'event-kit'
+
+subscriptions = new CompositeDisposable
+subscriptions.add user1.onDidChangeName (name) -> console.log("User 1: #{name}")
+subscriptions.add user2.onDidChangeName (name) -> console.log("User 2: #{name}")
+
+# Later, to unsubscribe from *both*...
+subscriptions.dispose()
+```
+
+## Creating Your Own Disposables
+
+Disposables are convenient ways to represent a resource you will no longer
+need at some point. You can instantiate a disposable with an action to take when
+no longer needed.
+
+```coffee
+{Disposable} = require 'event-kit'
+
+disposable = new Disposable => @destroyResource()
+```
diff --git a/atom/packages/vim-mode/node_modules/event-kit/api.json b/atom/packages/vim-mode/node_modules/event-kit/api.json
new file mode 100644 (file)
index 0000000..7a96959
--- /dev/null
@@ -0,0 +1,219 @@
+{
+  "classes": {
+    "CompositeDisposable": {
+      "name": "CompositeDisposable",
+      "filename": "src/composite-disposable.coffee",
+      "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L4",
+      "sections": [
+        {
+          "name": "Construction and Destruction",
+          "description": ""
+        },
+        {
+          "name": "Managing Disposables",
+          "description": ""
+        }
+      ],
+      "classMethods": [],
+      "instanceMethods": [
+        {
+          "name": "constructor",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L12",
+          "visibility": "Public",
+          "summary": "Construct an instance, optionally with one or more ",
+          "description": "Construct an instance, optionally with one or more "
+        },
+        {
+          "name": "dispose",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L19",
+          "visibility": "Public",
+          "summary": "Dispose all disposables added to this composite disposable.",
+          "description": "Dispose all disposables added to this composite disposable.\n\nIf this object has already been disposed, this method has no effect. "
+        },
+        {
+          "name": "add",
+          "sectionName": "Managing Disposables",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L35",
+          "visibility": "Public",
+          "summary": "Add a disposable to be disposed when the composite is disposed.",
+          "description": "Add a disposable to be disposed when the composite is disposed.\n\nIf this object has already been disposed, this method has no effect.",
+          "arguments": [
+            {
+              "name": "disposable",
+              "description": "{Disposable} instance or any object with a `.dispose()` method. ",
+              "type": "Disposable",
+              "isOptional": false
+            }
+          ]
+        },
+        {
+          "name": "remove",
+          "sectionName": "Managing Disposables",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L43",
+          "visibility": "Public",
+          "summary": "Remove a previously added disposable.",
+          "description": "Remove a previously added disposable.",
+          "arguments": [
+            {
+              "name": "disposable",
+              "description": "{Disposable} instance or any object with a `.dispose()` method. ",
+              "type": "Disposable",
+              "isOptional": false
+            }
+          ]
+        },
+        {
+          "name": "clear",
+          "sectionName": "Managing Disposables",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/composite-disposable.coffee#L49",
+          "visibility": "Public",
+          "summary": "Clear all disposables. They will not be disposed by the next call\nto dispose. ",
+          "description": "Clear all disposables. They will not be disposed by the next call\nto dispose. "
+        }
+      ],
+      "classProperties": [],
+      "instanceProperties": [],
+      "visibility": "Essential",
+      "summary": "An object that aggregates multiple {Disposable} instances together\ninto a single disposable, so they can all be disposed as a group. ",
+      "description": "An object that aggregates multiple {Disposable} instances together\ninto a single disposable, so they can all be disposed as a group. "
+    },
+    "Disposable": {
+      "name": "Disposable",
+      "filename": "src/disposable.coffee",
+      "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/disposable.coffee#L6",
+      "sections": [
+        {
+          "name": "Construction and Destruction",
+          "description": ""
+        }
+      ],
+      "classMethods": [],
+      "instanceMethods": [
+        {
+          "name": "constructor",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/disposable.coffee#L17",
+          "visibility": "Public",
+          "summary": "Construct a Disposable",
+          "description": "Construct a Disposable",
+          "arguments": [
+            {
+              "name": "disposalAction",
+              "description": "An action to perform when {::dispose} is called for the first time. ",
+              "type": null,
+              "isOptional": false
+            }
+          ]
+        },
+        {
+          "name": "dispose",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/disposable.coffee#L24",
+          "visibility": "Public",
+          "summary": "Perform the disposal action, indicating that the resource associated\nwith this disposable is no longer needed.",
+          "description": "Perform the disposal action, indicating that the resource associated\nwith this disposable is no longer needed.\n\nYou can call this method more than once, but the disposal action will only\nbe performed the first time. "
+        }
+      ],
+      "classProperties": [],
+      "instanceProperties": [],
+      "visibility": "Essential",
+      "summary": "A handle to a resource that can be disposed. For example,\n{Emitter::on} returns disposables representing subscriptions. ",
+      "description": "A handle to a resource that can be disposed. For example,\n{Emitter::on} returns disposables representing subscriptions. "
+    },
+    "Emitter": {
+      "name": "Emitter",
+      "filename": "src/emitter.coffee",
+      "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/emitter.coffee#L25",
+      "sections": [
+        {
+          "name": "Construction and Destruction",
+          "description": ""
+        },
+        {
+          "name": "Event Subscription",
+          "description": ""
+        },
+        {
+          "name": "Event Emission",
+          "description": ""
+        }
+      ],
+      "classMethods": [],
+      "instanceMethods": [
+        {
+          "name": "constructor",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/emitter.coffee#L37",
+          "visibility": "Public",
+          "summary": "Construct an emitter.",
+          "description": "Construct an emitter.\n\n```coffee\n@emitter = new Emitter()\n```"
+        },
+        {
+          "name": "dispose",
+          "sectionName": "Construction and Destruction",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/emitter.coffee#L41",
+          "visibility": "Public",
+          "summary": "Unsubscribe all handlers. ",
+          "description": "Unsubscribe all handlers. "
+        },
+        {
+          "name": "on",
+          "sectionName": "Event Subscription",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/emitter.coffee#L58",
+          "visibility": "Public",
+          "summary": "Register the given handler function to be invoked whenever events by\nthe given name are emitted via {::emit}.",
+          "description": "Register the given handler function to be invoked whenever events by\nthe given name are emitted via {::emit}.",
+          "arguments": [
+            {
+              "name": "eventName",
+              "description": "{String} naming the event that you want to invoke the handler when emitted.",
+              "type": "String",
+              "isOptional": false
+            },
+            {
+              "name": "handler",
+              "description": "{Function} to invoke when {::emit} is called with the given event name.",
+              "type": "Function",
+              "isOptional": false
+            }
+          ],
+          "returnValues": [
+            {
+              "type": "Disposable",
+              "description": "Returns a {Disposable} on which `.dispose()` can be called to unsubscribe."
+            }
+          ]
+        },
+        {
+          "name": "emit",
+          "sectionName": "Event Emission",
+          "srcUrl": "https://github.com/atom/event-kit/blob/v0.7.2/src/emitter.coffee#L91",
+          "visibility": "Public",
+          "summary": "Invoke handlers registered via {::on} for the given event name.",
+          "description": "Invoke handlers registered via {::on} for the given event name.",
+          "arguments": [
+            {
+              "name": "eventName",
+              "description": "The name of the event to emit. Handlers registered with {::on} for the same name will be invoked.",
+              "type": null,
+              "isOptional": false
+            },
+            {
+              "name": "value",
+              "description": "Callbacks will be invoked with this value as an argument. ",
+              "type": null,
+              "isOptional": false
+            }
+          ]
+        }
+      ],
+      "classProperties": [],
+      "instanceProperties": [],
+      "visibility": "Essential",
+      "summary": "Utility class to be used when implementing event-based APIs that\nallows for handlers registered via `::on` to be invoked with calls to\n`::emit`. Instances of this class are intended to be used internally by\nclasses that expose an event-based API.",
+      "description": "Utility class to be used when implementing event-based APIs that\nallows for handlers registered via `::on` to be invoked with calls to\n`::emit`. Instances of this class are intended to be used internally by\nclasses that expose an event-based API.\n\nFor example:\n\n```coffee\nclass User\n  constructor: ->\n    @emitter = new Emitter\n\n  onDidChangeName: (callback) ->\n    @emitter.on 'did-change-name', callback\n\n  setName: (name) ->\n    if name isnt @name\n      @name = name\n      @emitter.emit 'did-change-name', name\n    @name\n```"
+    }
+  }
+}
\ No newline at end of file
diff --git a/atom/packages/vim-mode/node_modules/event-kit/lib/composite-disposable.js b/atom/packages/vim-mode/node_modules/event-kit/lib/composite-disposable.js
new file mode 100644 (file)
index 0000000..4235b96
--- /dev/null
@@ -0,0 +1,61 @@
+(function() {
+  var CompositeDisposable;
+
+  module.exports = CompositeDisposable = (function() {
+    CompositeDisposable.prototype.disposed = false;
+
+
+    /*
+    Section: Construction and Destruction
+     */
+
+    function CompositeDisposable() {
+      var disposable, _i, _len;
+      this.disposables = [];
+      for (_i = 0, _len = arguments.length; _i < _len; _i++) {
+        disposable = arguments[_i];
+        this.add(disposable);
+      }
+    }
+
+    CompositeDisposable.prototype.dispose = function() {
+      var disposable, _i, _len, _ref;
+      if (!this.disposed) {
+        this.disposed = true;
+        _ref = this.disposables;
+        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+          disposable = _ref[_i];
+          disposable.dispose();
+        }
+        return this.clear();
+      }
+    };
+
+
+    /*
+    Section: Managing Disposables
+     */
+
+    CompositeDisposable.prototype.add = function(disposable) {
+      if (!this.disposed) {
+        return this.disposables.push(disposable);
+      }
+    };
+
+    CompositeDisposable.prototype.remove = function(disposable) {
+      var index;
+      index = this.disposables.indexOf(disposable);
+      if (index !== -1) {
+        return this.disposables.splice(index, 1);
+      }
+    };
+
+    CompositeDisposable.prototype.clear = function() {
+      return this.disposables.length = 0;
+    };
+
+    return CompositeDisposable;
+
+  })();
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/lib/disposable.js b/atom/packages/vim-mode/node_modules/event-kit/lib/disposable.js
new file mode 100644 (file)
index 0000000..4ccb3da
--- /dev/null
@@ -0,0 +1,34 @@
+(function() {
+  var Disposable, Grim;
+
+  Grim = require('grim');
+
+  module.exports = Disposable = (function() {
+    Disposable.prototype.disposed = false;
+
+
+    /*
+    Section: Construction and Destruction
+     */
+
+    function Disposable(disposalAction) {
+      this.disposalAction = disposalAction;
+    }
+
+    Disposable.prototype.dispose = function() {
+      if (!this.disposed) {
+        this.disposed = true;
+        return typeof this.disposalAction === "function" ? this.disposalAction() : void 0;
+      }
+    };
+
+    Disposable.prototype.off = function() {
+      Grim.deprecate("Use ::dispose to cancel subscriptions instead of ::off");
+      return this.dispose();
+    };
+
+    return Disposable;
+
+  })();
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/lib/emitter.js b/atom/packages/vim-mode/node_modules/event-kit/lib/emitter.js
new file mode 100644 (file)
index 0000000..1c8336a
--- /dev/null
@@ -0,0 +1,80 @@
+(function() {
+  var Disposable, Emitter;
+
+  Disposable = require('./disposable');
+
+  module.exports = Emitter = (function() {
+    Emitter.prototype.isDisposed = false;
+
+
+    /*
+    Section: Construction and Destruction
+     */
+
+    function Emitter() {
+      this.handlersByEventName = {};
+    }
+
+    Emitter.prototype.dispose = function() {
+      this.handlersByEventName = null;
+      return this.isDisposed = true;
+    };
+
+
+    /*
+    Section: Event Subscription
+     */
+
+    Emitter.prototype.on = function(eventName, handler) {
+      var currentHandlers;
+      if (this.isDisposed) {
+        throw new Error("Emitter has been disposed");
+      }
+      if (typeof handler !== 'function') {
+        throw new Error("Handler must be a function");
+      }
+      if (currentHandlers = this.handlersByEventName[eventName]) {
+        this.handlersByEventName[eventName] = currentHandlers.concat(handler);
+      } else {
+        this.handlersByEventName[eventName] = [handler];
+      }
+      return new Disposable(this.off.bind(this, eventName, handler));
+    };
+
+    Emitter.prototype.off = function(eventName, handlerToRemove) {
+      var handler, newHandlers, oldHandlers, _i, _len;
+      if (this.isDisposed) {
+        return;
+      }
+      if (oldHandlers = this.handlersByEventName[eventName]) {
+        newHandlers = [];
+        for (_i = 0, _len = oldHandlers.length; _i < _len; _i++) {
+          handler = oldHandlers[_i];
+          if (handler !== handlerToRemove) {
+            newHandlers.push(handler);
+          }
+        }
+        return this.handlersByEventName[eventName] = newHandlers;
+      }
+    };
+
+
+    /*
+    Section: Event Emission
+     */
+
+    Emitter.prototype.emit = function(eventName, value) {
+      var handler, handlers, _i, _len, _ref;
+      if (handlers = (_ref = this.handlersByEventName) != null ? _ref[eventName] : void 0) {
+        for (_i = 0, _len = handlers.length; _i < _len; _i++) {
+          handler = handlers[_i];
+          handler(value);
+        }
+      }
+    };
+
+    return Emitter;
+
+  })();
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/lib/event-kit.js b/atom/packages/vim-mode/node_modules/event-kit/lib/event-kit.js
new file mode 100644 (file)
index 0000000..8250ea0
--- /dev/null
@@ -0,0 +1,8 @@
+(function() {
+  exports.Emitter = require('./emitter');
+
+  exports.Disposable = require('./disposable');
+
+  exports.CompositeDisposable = require('./composite-disposable');
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/LICENSE.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/LICENSE.md
new file mode 100644 (file)
index 0000000..4d231b4
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2014 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/README.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/README.md
new file mode 100644 (file)
index 0000000..c7a023c
--- /dev/null
@@ -0,0 +1,21 @@
+# Grim [![Build Status](https://travis-ci.org/atom/grim.svg)](https://travis-ci.org/atom/grim)
+
+Log deprecate calls
+
+## Installing
+
+```sh
+npm install grim
+```
+
+## Usage
+
+```javascript
+Grim = require('grim')
+
+function someOldMethod() {
+  Grim.deprecate("Use theNewMethod instead.")
+}
+```
+
+To view all calls to deprecated methods use `Grim.logDeprecations()` or get direct access to the deprecated calls by using `Grim.getDeprecations()`
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/lib/deprecation.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/lib/deprecation.js
new file mode 100644 (file)
index 0000000..c366d1a
--- /dev/null
@@ -0,0 +1,122 @@
+(function() {
+  var Deprecation, _;
+
+  _ = require('underscore-plus');
+
+  module.exports = Deprecation = (function() {
+    Deprecation.generateStack = function() {
+      var error, originalPrepareStackTrace, stack;
+      originalPrepareStackTrace = Error.prepareStackTrace;
+      Error.prepareStackTrace = function(error, stack) {
+        return stack;
+      };
+      error = new Error();
+      Error.captureStackTrace(error);
+      stack = error.stack.slice(1);
+      Error.prepareStackTrace = originalPrepareStackTrace;
+      return stack;
+    };
+
+    Deprecation.getFunctionNameFromCallsite = function(callsite) {
+      var _ref, _ref1, _ref2;
+      if (callsite.isToplevel()) {
+        return (_ref = callsite.getFunctionName()) != null ? _ref : '<unknown>';
+      } else {
+        if (callsite.isConstructor()) {
+          return "new " + (callsite.getFunctionName());
+        } else if (callsite.getMethodName() && !callsite.getFunctionName()) {
+          return callsite.getMethodName();
+        } else {
+          return "" + (callsite.getTypeName()) + "." + ((_ref1 = (_ref2 = callsite.getMethodName()) != null ? _ref2 : callsite.getFunctionName()) != null ? _ref1 : '<anonymous>');
+        }
+      }
+    };
+
+    function Deprecation(message) {
+      this.message = message;
+      this.callCount = 0;
+      this.stacks = [];
+    }
+
+    Deprecation.prototype.getFunctionNameFromCallsite = function(callsite) {
+      return Deprecation.getFunctionNameFromCallsite(callsite);
+    };
+
+    Deprecation.prototype.getLocationFromCallsite = function(callsite) {
+      if (callsite.isNative()) {
+        return "native";
+      } else if (callsite.isEval()) {
+        return "eval at " + (this.getLocationFromCallsite(callsite.getEvalOrigin()));
+      } else {
+        return "" + (callsite.getFileName()) + ":" + (callsite.getLineNumber()) + ":" + (callsite.getColumnNumber());
+      }
+    };
+
+    Deprecation.prototype.getOriginName = function() {
+      return this.originName;
+    };
+
+    Deprecation.prototype.getMessage = function() {
+      return this.message;
+    };
+
+    Deprecation.prototype.getStacks = function() {
+      return _.clone(this.stacks);
+    };
+
+    Deprecation.prototype.getCallCount = function() {
+      return this.callCount;
+    };
+
+    Deprecation.prototype.addStack = function(stack) {
+      var existingStack;
+      if (this.originName == null) {
+        this.originName = this.getFunctionNameFromCallsite(stack[0]);
+      }
+      stack = this.parseStack(stack);
+      if (existingStack = this.isStackUnique(stack)) {
+        existingStack.callCount++;
+      } else {
+        this.stacks.push(stack);
+      }
+      return this.callCount++;
+    };
+
+    Deprecation.prototype.parseStack = function(stack) {
+      stack = stack.map((function(_this) {
+        return function(callsite) {
+          return {
+            functionName: _this.getFunctionNameFromCallsite(callsite),
+            location: _this.getLocationFromCallsite(callsite),
+            fileName: callsite.getFileName()
+          };
+        };
+      })(this));
+      stack.callCount = 1;
+      return stack;
+    };
+
+    Deprecation.prototype.isStackUnique = function(stack) {
+      var stacks;
+      stacks = this.stacks.filter(function(s) {
+        var callsite, functionName, i, location, _i, _len, _ref;
+        if (s.length !== stack.length) {
+          return false;
+        }
+        for (i = _i = 0, _len = s.length; _i < _len; i = ++_i) {
+          _ref = s[i], functionName = _ref.functionName, location = _ref.location;
+          callsite = stack[i];
+          if (!(functionName === callsite.functionName && location === callsite.location)) {
+            return false;
+          }
+        }
+        return true;
+      });
+      return stacks[0];
+    };
+
+    return Deprecation;
+
+  })();
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/lib/grim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/lib/grim.js
new file mode 100644 (file)
index 0000000..eee1d91
--- /dev/null
@@ -0,0 +1,61 @@
+(function() {
+  var Deprecation, Emitter, grim, _;
+
+  _ = require('underscore-plus');
+
+  Emitter = require('emissary').Emitter;
+
+  Deprecation = require('./deprecation');
+
+  if (global.__grim__ == null) {
+    grim = global.__grim__ = {
+      grimDeprecations: [],
+      maxDeprecationCallCount: function() {
+        return 250;
+      },
+      getDeprecations: function() {
+        return _.clone(grim.grimDeprecations);
+      },
+      getDeprecationsLength: function() {
+        return grim.grimDeprecations.length;
+      },
+      clearDeprecations: function() {
+        return grim.grimDeprecations = [];
+      },
+      logDeprecations: function() {
+        var deprecation, deprecations, _i, _len, _results;
+        deprecations = grim.getDeprecations();
+        deprecations.sort(function(a, b) {
+          return b.getCallCount() - a.getCallCount();
+        });
+        console.warn("\nCalls to deprecated functions\n-----------------------------");
+        _results = [];
+        for (_i = 0, _len = deprecations.length; _i < _len; _i++) {
+          deprecation = deprecations[_i];
+          _results.push(console.warn("(" + (deprecation.getCallCount()) + ") " + (deprecation.getOriginName()) + " : " + (deprecation.getMessage()), deprecation));
+        }
+        return _results;
+      },
+      deprecate: function(message) {
+        var deprecation, deprecations, methodName, stack;
+        stack = Deprecation.generateStack().slice(1);
+        methodName = Deprecation.getFunctionNameFromCallsite(stack[0]);
+        deprecations = grim.grimDeprecations;
+        if (!(deprecation = _.find(deprecations, function(d) {
+          return d.getOriginName() === methodName;
+        }))) {
+          deprecation = new Deprecation(message);
+          grim.grimDeprecations.push(deprecation);
+        }
+        if (deprecation.getCallCount() < grim.maxDeprecationCallCount()) {
+          deprecation.addStack(stack);
+          return grim.emit("updated", deprecation);
+        }
+      }
+    };
+    Emitter.extend(grim);
+  }
+
+  module.exports = global.__grim__;
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/LICENSE.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/README.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/README.md
new file mode 100644 (file)
index 0000000..9415c13
--- /dev/null
@@ -0,0 +1,49 @@
+# Emissary – Mixins for Events [![Build Status](https://travis-ci.org/atom/emissary.svg?branch=master)](https://travis-ci.org/atom/emissary)
+
+**Achtung!** This library is currently used in Atom and various Atom dependencies, but our long-term plan is to transition away from it in favor of the simpler [event-kit](https://github.com/atom/event-kit) library. Don't depend on supporting this library forever.
+
+**Achtung Again!** The Subscriber mixin requires ES6 Harmony WeakMaps. To enable them, run your program with the  `node --harmony_collections` flag. If you're using it in a node framework such as jasmine, run its script with the flag enabled as follows: `node --harmony-collections .bin/jasmine-node specs`.
+
+## Emitter
+
+Emitter is backward-compatible with Node's event emitter, but offers more functionality. You can construct standalone `Emitter` instances or use it as a mixin.
+
+* `Emitter.extend(object)`
+  Turns the given object into an emitter by adding the appropriate methods.
+
+* `Emitter.includeInto(class)`
+  Turns the class into an emitter by extending its prototype.
+
+* `::on(eventNames, handler)`
+  Subscribe to one or more events. Events names are separated by spaces, and can optionally be namespaced with a dot-suffix. E.g. `event1 event2.namespace`.
+
+* `::once(eventName, handler)`
+  Like `::on`, but only fires the handler once before unsubscribing automatically.
+
+* `::off(eventNames[, handler])`
+  Unsubscribe to one or more events. Event names are separated by spaces. Passing a non-namespaced event name unsubscribes from every namespace for that event. Passing only a namespace unsubscribes from that entire namespace. Passing a handler removes only a subscription corresponding to the given event name(s) and that handler.
+
+* `::emit(eventName[, data...])`
+  Emit an event with the given name. If the event name is namespaced, only calls handlers for the event associated with the namespace, otherwise it fires all handlers. Handlers are called with zero or more data arguments provided after the event name.
+
+* `::pauseEvents()`
+  Buffers events instead of emitting them until `::resumeEvents` is called.
+
+* `::resumeEvents()`
+  Emits all events buffered since pausing and resumes normal emitting behavior.
+
+* `::getSubscriptionCount()`
+  Get the total number of handlers registered on the emitter.
+
+## Subscriber
+
+Subscriber works in partnership with an emitter or any object supporting subscription cancellation with `.off`. This includes standard Node event emitters and jQuery objects.
+
+* `::subscribe(object, eventNames, handler)`
+  Subscribe to the given event name(s) on the given object.
+
+* `::subscribeWith(object, methodName, eventNames, handler)`
+  Subscribe to the given object with a method other than `.on`.
+
+* `::unsubscribe([object])`
+  Cancel subscriptions previously registered with `::subscribe`. If an object is given, only unsubscribe from that object. If called without an object, unsubscribe from everything.
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/behavior.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/behavior.js
new file mode 100644 (file)
index 0000000..863c2f2
--- /dev/null
@@ -0,0 +1,120 @@
+(function() {
+  var Behavior, PropertyAccessors, Signal, helpers, isEqual,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  isEqual = require('underscore-plus').isEqual;
+
+  PropertyAccessors = require('property-accessors');
+
+  Signal = require('./signal');
+
+  module.exports = Behavior = (function(_super) {
+    __extends(Behavior, _super);
+
+    PropertyAccessors.includeInto(Behavior);
+
+    function Behavior() {
+      var args, subscribeCallback, _ref;
+      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+      if (typeof ((_ref = args[0]) != null ? _ref.call : void 0) !== 'function') {
+        this.value = args.shift();
+      }
+      Behavior.__super__.constructor.call(this, subscribeCallback = args.shift());
+    }
+
+    Behavior.prototype.retained = function() {
+      var _this = this;
+      this.subscribe(this, 'value-internal', function(value) {
+        return _this.value = value;
+      });
+      this.subscribe(this, 'value-subscription-added', function(handler) {
+        return handler(_this.value);
+      });
+      return typeof this.subscribeCallback === "function" ? this.subscribeCallback() : void 0;
+    };
+
+    Behavior.prototype.emit = function() {
+      var args, name;
+      name = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      if (name === 'value') {
+        this.emit.apply(this, ['value-internal'].concat(__slice.call(args)));
+      }
+      return Behavior.__super__.emit.apply(this, arguments);
+    };
+
+    Behavior.prototype.getValue = function() {
+      if (!(this.retainCount > 0)) {
+        throw new Error("Subscribe to or retain this behavior before calling getValue");
+      }
+      return this.value;
+    };
+
+    Behavior.prototype.and = function(right) {
+      return helpers.combine(this, right, (function(leftValue, rightValue) {
+        return leftValue && rightValue;
+      })).distinctUntilChanged();
+    };
+
+    Behavior.prototype.or = function(right) {
+      return helpers.combine(this, right, (function(leftValue, rightValue) {
+        return leftValue || rightValue;
+      })).distinctUntilChanged();
+    };
+
+    Behavior.prototype.toBehavior = function() {
+      return this;
+    };
+
+    Behavior.prototype.lazyAccessor('changes', function() {
+      var source;
+      source = this;
+      return new Signal(function() {
+        var gotFirst,
+          _this = this;
+        gotFirst = false;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          if (gotFirst) {
+            _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+          }
+          return gotFirst = true;
+        });
+      });
+    });
+
+    Behavior.prototype.becomes = function(predicateOrTargetValue) {
+      var predicate, targetValue;
+      if (typeof predicateOrTargetValue !== 'function') {
+        targetValue = predicateOrTargetValue;
+        return this.becomes(function(value) {
+          return isEqual(value, targetValue);
+        });
+      }
+      predicate = predicateOrTargetValue;
+      return this.map(function(value) {
+        return !!predicate(value);
+      }).distinctUntilChanged().changes;
+    };
+
+    Behavior.prototype.becomesLessThan = function(targetValue) {
+      return this.becomes(function(value) {
+        return value < targetValue;
+      });
+    };
+
+    Behavior.prototype.becomesGreaterThan = function(targetValue) {
+      return this.becomes(function(value) {
+        return value > targetValue;
+      });
+    };
+
+    return Behavior;
+
+  })(Signal);
+
+  helpers = require('./helpers');
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emissary.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emissary.js
new file mode 100644 (file)
index 0000000..9ba21f4
--- /dev/null
@@ -0,0 +1,14 @@
+(function() {
+  var combine;
+
+  combine = require('./helpers').combine;
+
+  module.exports = {
+    Emitter: require('./emitter'),
+    Subscriber: require('./subscriber'),
+    Signal: require('./signal'),
+    Behavior: require('./behavior'),
+    combine: combine
+  };
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emitter.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emitter.js
new file mode 100644 (file)
index 0000000..0e999db
--- /dev/null
@@ -0,0 +1,384 @@
+(function() {
+  var Emitter, Mixin, Signal, Subscription, removeFromArray, subscriptionRemovedPattern, _ref,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  Mixin = require('mixto');
+
+  Signal = null;
+
+  Subscription = null;
+
+  subscriptionRemovedPattern = /^(last-)?.+-subscription-removed$/;
+
+  module.exports = Emitter = (function(_super) {
+    __extends(Emitter, _super);
+
+    function Emitter() {
+      _ref = Emitter.__super__.constructor.apply(this, arguments);
+      return _ref;
+    }
+
+    Emitter.prototype.eventHandlersByEventName = null;
+
+    Emitter.prototype.eventHandlersByNamespace = null;
+
+    Emitter.prototype.subscriptionCounts = null;
+
+    Emitter.prototype.pauseCountsByEventName = null;
+
+    Emitter.prototype.queuedEventsByEventName = null;
+
+    Emitter.prototype.globalPauseCount = null;
+
+    Emitter.prototype.globalQueuedEvents = null;
+
+    Emitter.prototype.signalsByEventName = null;
+
+    Emitter.prototype.on = function(eventNames, handler) {
+      var eventName, namespace, _base, _base1, _base2, _i, _len, _ref1, _ref2;
+      _ref1 = eventNames.split(/\s+/);
+      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+        eventName = _ref1[_i];
+        if (!(eventName !== '')) {
+          continue;
+        }
+        _ref2 = eventName.split('.'), eventName = _ref2[0], namespace = _ref2[1];
+        this.emit("" + eventName + "-subscription-will-be-added", handler);
+        if (this.incrementSubscriptionCount(eventName) === 1) {
+          this.emit("first-" + eventName + "-subscription-will-be-added", handler);
+        }
+        if (this.eventHandlersByEventName == null) {
+          this.eventHandlersByEventName = {};
+        }
+        if ((_base = this.eventHandlersByEventName)[eventName] == null) {
+          _base[eventName] = [];
+        }
+        this.eventHandlersByEventName[eventName].push(handler);
+        if (namespace) {
+          if (this.eventHandlersByNamespace == null) {
+            this.eventHandlersByNamespace = {};
+          }
+          if ((_base1 = this.eventHandlersByNamespace)[namespace] == null) {
+            _base1[namespace] = {};
+          }
+          if ((_base2 = this.eventHandlersByNamespace[namespace])[eventName] == null) {
+            _base2[eventName] = [];
+          }
+          this.eventHandlersByNamespace[namespace][eventName].push(handler);
+        }
+        this.emit("" + eventName + "-subscription-added", handler);
+      }
+      if (Subscription == null) {
+        Subscription = require('./subscription');
+      }
+      return new Subscription(this, eventNames, handler);
+    };
+
+    Emitter.prototype.once = function(eventName, handler) {
+      var subscription;
+      return subscription = this.on(eventName, function() {
+        var args;
+        args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+        subscription.off();
+        return handler.apply(null, args);
+      });
+    };
+
+    Emitter.prototype.signal = function(eventName) {
+      var _base;
+      if (Signal == null) {
+        Signal = require('./signal');
+      }
+      if (this.signalsByEventName == null) {
+        this.signalsByEventName = {};
+      }
+      return (_base = this.signalsByEventName)[eventName] != null ? (_base = this.signalsByEventName)[eventName] : _base[eventName] = Signal.fromEmitter(this, eventName);
+    };
+
+    Emitter.prototype.behavior = function(eventName, initialValue) {
+      return this.signal(eventName).toBehavior(initialValue);
+    };
+
+    Emitter.prototype.emit = function(eventName, payload) {
+      var handler, handlers, queuedEvents, _i, _len, _ref1, _ref2, _ref3;
+      if (arguments.length > 2 || /\s|\./.test(eventName)) {
+        return this.emitSlow.apply(this, arguments);
+      } else {
+        if (this.globalQueuedEvents != null) {
+          return this.globalQueuedEvents.push([eventName, payload]);
+        } else {
+          if (queuedEvents = (_ref1 = this.queuedEventsByEventName) != null ? _ref1[eventName] : void 0) {
+            return queuedEvents.push([eventName, payload]);
+          } else if (handlers = (_ref2 = this.eventHandlersByEventName) != null ? _ref2[eventName] : void 0) {
+            _ref3 = handlers.slice();
+            for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
+              handler = _ref3[_i];
+              handler(payload);
+            }
+            return this.emit("after-" + eventName, payload);
+          }
+        }
+      }
+    };
+
+    Emitter.prototype.emitSlow = function() {
+      var args, eventName, handlers, namespace, queuedEvents, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6;
+      eventName = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      if (this.globalQueuedEvents) {
+        return this.globalQueuedEvents.push([eventName].concat(__slice.call(args)));
+      } else {
+        _ref1 = eventName.split('.'), eventName = _ref1[0], namespace = _ref1[1];
+        if (namespace) {
+          if (queuedEvents = (_ref2 = this.queuedEventsByEventName) != null ? _ref2[eventName] : void 0) {
+            return queuedEvents.push(["" + eventName + "." + namespace].concat(__slice.call(args)));
+          } else if (handlers = (_ref3 = this.eventHandlersByNamespace) != null ? (_ref4 = _ref3[namespace]) != null ? _ref4[eventName] : void 0 : void 0) {
+            (function(func, args, ctor) {
+              ctor.prototype = func.prototype;
+              var child = new ctor, result = func.apply(child, args);
+              return Object(result) === result ? result : child;
+            })(Array, handlers, function(){}).forEach(function(handler) {
+              return handler.apply(null, args);
+            });
+            return this.emit.apply(this, ["after-" + eventName].concat(__slice.call(args)));
+          }
+        } else {
+          if (queuedEvents = (_ref5 = this.queuedEventsByEventName) != null ? _ref5[eventName] : void 0) {
+            return queuedEvents.push([eventName].concat(__slice.call(args)));
+          } else if (handlers = (_ref6 = this.eventHandlersByEventName) != null ? _ref6[eventName] : void 0) {
+            (function(func, args, ctor) {
+              ctor.prototype = func.prototype;
+              var child = new ctor, result = func.apply(child, args);
+              return Object(result) === result ? result : child;
+            })(Array, handlers, function(){}).forEach(function(handler) {
+              return handler.apply(null, args);
+            });
+            return this.emit.apply(this, ["after-" + eventName].concat(__slice.call(args)));
+          }
+        }
+      }
+    };
+
+    Emitter.prototype.off = function(eventNames, handler) {
+      var eventHandlers, eventName, handlers, namespace, namespaceHandlers, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref1, _ref10, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9;
+      if (eventNames) {
+        _ref1 = eventNames.split(/\s+/);
+        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+          eventName = _ref1[_i];
+          if (!(eventName !== '')) {
+            continue;
+          }
+          _ref2 = eventName.split('.'), eventName = _ref2[0], namespace = _ref2[1];
+          if (eventName === '') {
+            eventName = void 0;
+          }
+          if (namespace) {
+            if (eventName) {
+              handlers = (_ref3 = (_ref4 = this.eventHandlersByNamespace) != null ? (_ref5 = _ref4[namespace]) != null ? _ref5[eventName] : void 0 : void 0) != null ? _ref3 : [];
+              if (handler != null) {
+                removeFromArray(handlers, handler);
+                this.off(eventName, handler);
+              } else {
+                _ref6 = (function(func, args, ctor) {
+                  ctor.prototype = func.prototype;
+                  var child = new ctor, result = func.apply(child, args);
+                  return Object(result) === result ? result : child;
+                })(Array, handlers, function(){});
+                for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
+                  handler = _ref6[_j];
+                  removeFromArray(handlers, handler);
+                  this.off(eventName, handler);
+                }
+              }
+            } else {
+              namespaceHandlers = (_ref7 = (_ref8 = this.eventHandlersByNamespace) != null ? _ref8[namespace] : void 0) != null ? _ref7 : {};
+              if (handler != null) {
+                for (eventName in namespaceHandlers) {
+                  handlers = namespaceHandlers[eventName];
+                  removeFromArray(handlers, handler);
+                  this.off(eventName, handler);
+                }
+              } else {
+                for (eventName in namespaceHandlers) {
+                  handlers = namespaceHandlers[eventName];
+                  _ref9 = (function(func, args, ctor) {
+                    ctor.prototype = func.prototype;
+                    var child = new ctor, result = func.apply(child, args);
+                    return Object(result) === result ? result : child;
+                  })(Array, handlers, function(){});
+                  for (_k = 0, _len2 = _ref9.length; _k < _len2; _k++) {
+                    handler = _ref9[_k];
+                    removeFromArray(handlers, handler);
+                    this.off(eventName, handler);
+                  }
+                }
+              }
+            }
+          } else {
+            eventHandlers = (_ref10 = this.eventHandlersByEventName) != null ? _ref10[eventName] : void 0;
+            if (eventHandlers == null) {
+              return;
+            }
+            if (handler == null) {
+              for (_l = 0, _len3 = eventHandlers.length; _l < _len3; _l++) {
+                handler = eventHandlers[_l];
+                this.off(eventName, handler);
+              }
+              return;
+            }
+            if (removeFromArray(eventHandlers, handler)) {
+              this.decrementSubscriptionCount(eventName);
+              this.emit("" + eventName + "-subscription-removed", handler);
+              if (this.getSubscriptionCount(eventName) === 0) {
+                this.emit("last-" + eventName + "-subscription-removed", handler);
+                delete this.eventHandlersByEventName[eventName];
+              }
+            }
+          }
+        }
+      } else {
+        for (eventName in this.eventHandlersByEventName) {
+          if (!subscriptionRemovedPattern.test(eventName)) {
+            this.off(eventName);
+          }
+        }
+        for (eventName in this.eventHandlersByEventName) {
+          this.off(eventName);
+        }
+        return this.eventHandlersByNamespace = {};
+      }
+    };
+
+    Emitter.prototype.pauseEvents = function(eventNames) {
+      var eventName, _base, _base1, _i, _len, _ref1, _results;
+      if (eventNames) {
+        _ref1 = eventNames.split(/\s+/);
+        _results = [];
+        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+          eventName = _ref1[_i];
+          if (!(eventName !== '')) {
+            continue;
+          }
+          if (this.pauseCountsByEventName == null) {
+            this.pauseCountsByEventName = {};
+          }
+          if (this.queuedEventsByEventName == null) {
+            this.queuedEventsByEventName = {};
+          }
+          if ((_base = this.pauseCountsByEventName)[eventName] == null) {
+            _base[eventName] = 0;
+          }
+          this.pauseCountsByEventName[eventName]++;
+          _results.push((_base1 = this.queuedEventsByEventName)[eventName] != null ? (_base1 = this.queuedEventsByEventName)[eventName] : _base1[eventName] = []);
+        }
+        return _results;
+      } else {
+        if (this.globalPauseCount == null) {
+          this.globalPauseCount = 0;
+        }
+        if (this.globalQueuedEvents == null) {
+          this.globalQueuedEvents = [];
+        }
+        return this.globalPauseCount++;
+      }
+    };
+
+    Emitter.prototype.resumeEvents = function(eventNames) {
+      var event, eventName, queuedEvents, _i, _j, _len, _len1, _ref1, _ref2, _results, _results1;
+      if (eventNames) {
+        _ref1 = eventNames.split(/\s+/);
+        _results = [];
+        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+          eventName = _ref1[_i];
+          if (eventName !== '') {
+            if (((_ref2 = this.pauseCountsByEventName) != null ? _ref2[eventName] : void 0) > 0 && --this.pauseCountsByEventName[eventName] === 0) {
+              queuedEvents = this.queuedEventsByEventName[eventName];
+              this.queuedEventsByEventName[eventName] = null;
+              _results.push((function() {
+                var _j, _len1, _results1;
+                _results1 = [];
+                for (_j = 0, _len1 = queuedEvents.length; _j < _len1; _j++) {
+                  event = queuedEvents[_j];
+                  _results1.push(this.emit.apply(this, event));
+                }
+                return _results1;
+              }).call(this));
+            } else {
+              _results.push(void 0);
+            }
+          }
+        }
+        return _results;
+      } else {
+        for (eventName in this.pauseCountsByEventName) {
+          this.resumeEvents(eventName);
+        }
+        if (this.globalPauseCount > 0 && --this.globalPauseCount === 0) {
+          queuedEvents = this.globalQueuedEvents;
+          this.globalQueuedEvents = null;
+          _results1 = [];
+          for (_j = 0, _len1 = queuedEvents.length; _j < _len1; _j++) {
+            event = queuedEvents[_j];
+            _results1.push(this.emit.apply(this, event));
+          }
+          return _results1;
+        }
+      }
+    };
+
+    Emitter.prototype.incrementSubscriptionCount = function(eventName) {
+      var _base;
+      if (this.subscriptionCounts == null) {
+        this.subscriptionCounts = {};
+      }
+      if ((_base = this.subscriptionCounts)[eventName] == null) {
+        _base[eventName] = 0;
+      }
+      return ++this.subscriptionCounts[eventName];
+    };
+
+    Emitter.prototype.decrementSubscriptionCount = function(eventName) {
+      var count;
+      count = --this.subscriptionCounts[eventName];
+      if (count === 0) {
+        delete this.subscriptionCounts[eventName];
+      }
+      return count;
+    };
+
+    Emitter.prototype.getSubscriptionCount = function(eventName) {
+      var count, name, total, _ref1, _ref2, _ref3;
+      if (eventName != null) {
+        return (_ref1 = (_ref2 = this.subscriptionCounts) != null ? _ref2[eventName] : void 0) != null ? _ref1 : 0;
+      } else {
+        total = 0;
+        _ref3 = this.subscriptionCounts;
+        for (name in _ref3) {
+          count = _ref3[name];
+          total += count;
+        }
+        return total;
+      }
+    };
+
+    Emitter.prototype.hasSubscriptions = function(eventName) {
+      return this.getSubscriptionCount(eventName) > 0;
+    };
+
+    return Emitter;
+
+  })(Mixin);
+
+  removeFromArray = function(array, element) {
+    var index;
+    index = array.indexOf(element);
+    if (index > -1) {
+      array.splice(index, 1);
+      return true;
+    } else {
+      return false;
+    }
+  };
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/helpers.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/helpers.js
new file mode 100644 (file)
index 0000000..89df58c
--- /dev/null
@@ -0,0 +1,55 @@
+(function() {
+  var Behavior, combineArray, combineWithFunction,
+    __slice = [].slice;
+
+  Behavior = require('./behavior');
+
+  exports.combine = function() {
+    var args;
+    args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+    if (args.length === 1 && Array.isArray(args[0])) {
+      return combineArray(args[0]);
+    } else if (typeof args[args.length - 1] === 'function') {
+      return combineWithFunction(args);
+    } else {
+      throw new Error("Invalid object type");
+    }
+  };
+
+  combineArray = function(array) {
+    var behavior;
+    return behavior = new Behavior(function() {
+      var element, i, outputArray, ready, _i, _len,
+        _this = this;
+      outputArray = array.slice();
+      ready = false;
+      for (i = _i = 0, _len = array.length; _i < _len; i = ++_i) {
+        element = array[i];
+        if (element.constructor.name === 'Behavior') {
+          (function(element, i) {
+            return _this.subscribe(element.onValue(function(value, metadata) {
+              if (ready) {
+                outputArray = outputArray.slice();
+              }
+              outputArray[i] = value;
+              if (ready) {
+                return _this.emitValue(outputArray, metadata);
+              }
+            }));
+          })(element, i);
+        }
+      }
+      ready = true;
+      return this.emitValue(outputArray);
+    });
+  };
+
+  combineWithFunction = function(args) {
+    var fn;
+    fn = args.pop();
+    return combineArray(args).map(function(argsArray) {
+      return fn.apply(null, argsArray);
+    });
+  };
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/signal.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/signal.js
new file mode 100644 (file)
index 0000000..368f63a
--- /dev/null
@@ -0,0 +1,292 @@
+(function() {
+  var Behavior, Emitter, Signal, Subscriber, isEqual,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  isEqual = require('underscore-plus').isEqual;
+
+  Emitter = require('./emitter');
+
+  Subscriber = require('./subscriber');
+
+  Behavior = null;
+
+  module.exports = Signal = (function(_super) {
+    __extends(Signal, _super);
+
+    Subscriber.includeInto(Signal);
+
+    Signal.fromEmitter = function(emitter, eventName) {
+      return new Signal(function() {
+        var _this = this;
+        return this.subscribe(emitter, eventName, function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    function Signal(subscribeCallback) {
+      var _this = this;
+      this.subscribeCallback = subscribeCallback;
+      this.retainCount = 0;
+      this.on('value-subscription-will-be-added', function() {
+        return _this.retain();
+      });
+      this.on('value-subscription-removed', function() {
+        return _this.release();
+      });
+    }
+
+    Signal.prototype.isSignal = true;
+
+    Signal.prototype.retained = function() {
+      return typeof this.subscribeCallback === "function" ? this.subscribeCallback() : void 0;
+    };
+
+    Signal.prototype.released = function() {
+      return this.unsubscribe();
+    };
+
+    Signal.prototype.retain = function() {
+      if (++this.retainCount === 1) {
+        if (typeof this.retained === "function") {
+          this.retained();
+        }
+      }
+      return this;
+    };
+
+    Signal.prototype.release = function() {
+      if (--this.retainCount === 0) {
+        if (typeof this.released === "function") {
+          this.released();
+        }
+      }
+      return this;
+    };
+
+    Signal.prototype.onValue = function(handler) {
+      return this.on('value', handler);
+    };
+
+    Signal.prototype.emitValue = function(value, metadata) {
+      if (metadata == null) {
+        metadata = {};
+      }
+      if (metadata.source == null) {
+        metadata.source = this;
+      }
+      return this.emit('value', value, metadata);
+    };
+
+    Signal.prototype.toBehavior = function(initialValue) {
+      var source;
+      source = this;
+      return this.buildBehavior(initialValue, function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype.changes = function() {
+      return this;
+    };
+
+    Signal.prototype.injectMetadata = function(fn) {
+      var source;
+      source = this;
+      return new this.constructor(function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function(value, metadata) {
+          var k, newMetadata, v;
+          newMetadata = fn(value, metadata);
+          for (k in newMetadata) {
+            v = newMetadata[k];
+            metadata[k] = v;
+          }
+          return _this.emitValue(value, metadata);
+        });
+      });
+    };
+
+    Signal.prototype.filter = function(predicate) {
+      var source;
+      source = this;
+      return new this.constructor(function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          if (predicate.call(value, value)) {
+            return _this.emitValue.apply(_this, [value].concat(__slice.call(metadata)));
+          }
+        });
+      });
+    };
+
+    Signal.prototype.filterDefined = function() {
+      return this.filter(function(value) {
+        return value != null;
+      });
+    };
+
+    Signal.prototype.map = function(fn) {
+      var property, source;
+      if (typeof fn === 'string') {
+        property = fn;
+        fn = function(value) {
+          return value != null ? value[property] : void 0;
+        };
+      }
+      source = this;
+      return new this.constructor(function() {
+        var _this = this;
+        return this.subscribe(source, 'value', function() {
+          var metadata, value;
+          value = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [fn.call(value, value)].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype["switch"] = function(fn) {
+      var source;
+      source = this.map(fn);
+      return new this.constructor(function() {
+        var currentSignal,
+          _this = this;
+        currentSignal = null;
+        return this.subscribe(source, 'value', function(newSignal, outerMetadata) {
+          if (currentSignal != null) {
+            _this.unsubscribe(currentSignal);
+          }
+          currentSignal = newSignal;
+          if (currentSignal != null) {
+            return _this.subscribe(currentSignal, 'value', function(value, innerMetadata) {
+              return _this.emitValue(value, innerMetadata);
+            });
+          } else {
+            return _this.emitValue(void 0, outerMetadata);
+          }
+        });
+      });
+    };
+
+    Signal.prototype.skipUntil = function(predicateOrTargetValue) {
+      var doneSkipping, predicate, targetValue;
+      if (typeof predicateOrTargetValue !== 'function') {
+        targetValue = predicateOrTargetValue;
+        return this.skipUntil(function(value) {
+          return isEqual(value, targetValue);
+        });
+      }
+      predicate = predicateOrTargetValue;
+      doneSkipping = false;
+      return this.filter(function(value) {
+        if (doneSkipping) {
+          return true;
+        }
+        if (predicate(value)) {
+          return doneSkipping = true;
+        } else {
+          return false;
+        }
+      });
+    };
+
+    Signal.prototype.scan = function(initialValue, fn) {
+      var source;
+      source = this;
+      return this.buildBehavior(initialValue, function() {
+        var oldValue,
+          _this = this;
+        oldValue = initialValue;
+        return this.subscribe(source, 'value', function() {
+          var metadata, newValue;
+          newValue = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          return _this.emitValue.apply(_this, [(oldValue = fn(oldValue, newValue))].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype.diff = function(initialValue, fn) {
+      var source;
+      source = this;
+      return this.buildBehavior(function() {
+        var oldValue,
+          _this = this;
+        oldValue = initialValue;
+        return this.subscribe(source, 'value', function() {
+          var fnOldValue, metadata, newValue;
+          newValue = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          fnOldValue = oldValue;
+          oldValue = newValue;
+          return _this.emitValue.apply(_this, [fn(fnOldValue, newValue)].concat(__slice.call(metadata)));
+        });
+      });
+    };
+
+    Signal.prototype.distinctUntilChanged = function() {
+      var source;
+      source = this;
+      return new this.constructor(function() {
+        var oldValue, receivedValue,
+          _this = this;
+        receivedValue = false;
+        oldValue = void 0;
+        return this.subscribe(source, 'value', function() {
+          var metadata, newValue;
+          newValue = arguments[0], metadata = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+          if (receivedValue) {
+            if (isEqual(oldValue, newValue)) {
+              return oldValue = newValue;
+            } else {
+              oldValue = newValue;
+              return _this.emitValue.apply(_this, [newValue].concat(__slice.call(metadata)));
+            }
+          } else {
+            receivedValue = true;
+            oldValue = newValue;
+            return _this.emitValue.apply(_this, [newValue].concat(__slice.call(metadata)));
+          }
+        });
+      });
+    };
+
+    Signal.prototype.equals = function(expected) {
+      return this.map(function(actual) {
+        return isEqual(actual, expected);
+      }).distinctUntilChanged();
+    };
+
+    Signal.prototype.isDefined = function() {
+      return this.map(function(value) {
+        return value != null;
+      }).distinctUntilChanged();
+    };
+
+    Signal.prototype.buildBehavior = function() {
+      var args;
+      args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+      if (Behavior == null) {
+        Behavior = require('./behavior');
+      }
+      return (function(func, args, ctor) {
+        ctor.prototype = func.prototype;
+        var child = new ctor, result = func.apply(child, args);
+        return Object(result) === result ? result : child;
+      })(Behavior, args, function(){});
+    };
+
+    return Signal;
+
+  })(Emitter);
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscriber.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscriber.js
new file mode 100644 (file)
index 0000000..25016be
--- /dev/null
@@ -0,0 +1,109 @@
+(function() {
+  var Mixin, Signal, Subscriber, Subscription, WeakMap, _ref, _ref1,
+    __hasProp = {}.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; },
+    __slice = [].slice;
+
+  Mixin = require('mixto');
+
+  Signal = null;
+
+  WeakMap = (_ref = global.WeakMap) != null ? _ref : require('es6-weak-map');
+
+  Subscription = require('./subscription');
+
+  module.exports = Subscriber = (function(_super) {
+    __extends(Subscriber, _super);
+
+    function Subscriber() {
+      _ref1 = Subscriber.__super__.constructor.apply(this, arguments);
+      return _ref1;
+    }
+
+    Subscriber.prototype.subscribeWith = function(eventEmitter, methodName, args) {
+      var callback, eventNames;
+      if (eventEmitter[methodName] == null) {
+        throw new Error("Object does not have method '" + methodName + "' with which to subscribe");
+      }
+      eventEmitter[methodName].apply(eventEmitter, args);
+      eventNames = args[0];
+      callback = args[args.length - 1];
+      return this.addSubscription(new Subscription(eventEmitter, eventNames, callback));
+    };
+
+    Subscriber.prototype.addSubscription = function(subscription) {
+      var emitter;
+      if (this._subscriptions == null) {
+        this._subscriptions = [];
+      }
+      this._subscriptions.push(subscription);
+      emitter = subscription.emitter;
+      if (emitter != null) {
+        if (this._subscriptionsByObject == null) {
+          this._subscriptionsByObject = new WeakMap;
+        }
+        if (this._subscriptionsByObject.has(emitter)) {
+          this._subscriptionsByObject.get(emitter).push(subscription);
+        } else {
+          this._subscriptionsByObject.set(emitter, [subscription]);
+        }
+      }
+      return subscription;
+    };
+
+    Subscriber.prototype.subscribe = function() {
+      var args, eventEmitterOrSubscription;
+      eventEmitterOrSubscription = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      if (args.length === 0) {
+        return this.addSubscription(eventEmitterOrSubscription);
+      } else {
+        if (args.length === 1 && eventEmitterOrSubscription.isSignal) {
+          args.unshift('value');
+        }
+        return this.subscribeWith(eventEmitterOrSubscription, 'on', args);
+      }
+    };
+
+    Subscriber.prototype.subscribeToCommand = function() {
+      var args, eventEmitter;
+      eventEmitter = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
+      return this.subscribeWith(eventEmitter, 'command', args);
+    };
+
+    Subscriber.prototype.unsubscribe = function(object) {
+      var index, subscription, _i, _j, _len, _len1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7;
+      if (object != null) {
+        _ref4 = (_ref2 = (_ref3 = this._subscriptionsByObject) != null ? _ref3.get(object) : void 0) != null ? _ref2 : [];
+        for (_i = 0, _len = _ref4.length; _i < _len; _i++) {
+          subscription = _ref4[_i];
+          if (typeof subscription.dispose === 'function') {
+            subscription.dispose();
+          } else {
+            subscription.off();
+          }
+          index = this._subscriptions.indexOf(subscription);
+          if (index >= 0) {
+            this._subscriptions.splice(index, 1);
+          }
+        }
+        return (_ref5 = this._subscriptionsByObject) != null ? _ref5["delete"](object) : void 0;
+      } else {
+        _ref7 = (_ref6 = this._subscriptions) != null ? _ref6 : [];
+        for (_j = 0, _len1 = _ref7.length; _j < _len1; _j++) {
+          subscription = _ref7[_j];
+          if (typeof subscription.dispose === 'function') {
+            subscription.dispose();
+          } else {
+            subscription.off();
+          }
+        }
+        this._subscriptions = null;
+        return this._subscriptionsByObject = null;
+      }
+    };
+
+    return Subscriber;
+
+  })(Mixin);
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscription.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscription.js
new file mode 100644 (file)
index 0000000..b1d749f
--- /dev/null
@@ -0,0 +1,40 @@
+(function() {
+  var Emitter, Subscription,
+    __hasProp = {}.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; };
+
+  Emitter = require('./emitter');
+
+  module.exports = Subscription = (function(_super) {
+    __extends(Subscription, _super);
+
+    Subscription.prototype.cancelled = false;
+
+    function Subscription(emitter, eventNames, handler) {
+      this.emitter = emitter;
+      this.eventNames = eventNames;
+      this.handler = handler;
+    }
+
+    Subscription.prototype.off = function() {
+      return this.dispose();
+    };
+
+    Subscription.prototype.dispose = function() {
+      var unsubscribe, _ref;
+      if (this.cancelled) {
+        return;
+      }
+      unsubscribe = (_ref = this.emitter.off) != null ? _ref : this.emitter.removeListener;
+      unsubscribe.call(this.emitter, this.eventNames, this.handler);
+      this.emitter = null;
+      this.handler = null;
+      this.cancelled = true;
+      return this.emit('cancelled');
+    };
+
+    return Subscription;
+
+  })(Emitter);
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.lint b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.lint
new file mode 100644 (file)
index 0000000..cf54d81
--- /dev/null
@@ -0,0 +1,11 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.npmignore b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.travis.yml b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/.travis.yml
new file mode 100644 (file)
index 0000000..08f04a1
--- /dev/null
@@ -0,0 +1,10 @@
+sudo: false # use faster docker infrastructure
+language: node_js
+node_js:
+  - 0.10
+  - 0.12
+  - iojs
+
+notifications:
+  email:
+    - medikoo+es6-weak-map@medikoo.com
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/CHANGES b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/CHANGES
new file mode 100644 (file)
index 0000000..3394408
--- /dev/null
@@ -0,0 +1,24 @@
+v0.1.4  --  2015.04.13
+* Republish v0.1.2 as v0.1.4 due to breaking changes
+  (v0.1.3 should have been published as next major)
+
+v0.1.3  --  2015.04.12
+* Update up to changes in specification (require new, remove clear method)
+* Improve native implementation validation
+* Configure lint scripts
+* Rename LICENCE to LICENSE
+
+v0.1.2  --  2014.09.01
+* Use internal random and unique id generator instead of external (time-uuid based).
+  Global uniqueness is not needed in scope of this module. Fixes #1
+
+v0.1.1  --  2014.05.15
+* Improve valid WeakMap detection
+
+v0.1.0  --  2014.04.29
+* Assure to depend only npm hosted dependencies
+* Update to use latest versions of dependencies
+* Use ES6 symbols internally
+
+v0.0.0  --  2013.10.24
+Initial (dev version)
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/LICENCE b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/LICENCE
new file mode 100644 (file)
index 0000000..aaf3528
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013 Mariusz Nowak (www.medikoo.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/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/README.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/README.md
new file mode 100644 (file)
index 0000000..dd91b46
--- /dev/null
@@ -0,0 +1,65 @@
+# es6-weak-map
+## WeakMap collection as specified in ECMAScript6
+
+_Roughly inspired by Mark Miller's and Kris Kowal's [WeakMap implementation](https://github.com/drses/weak-map)_.
+
+Differences are:
+- Assumes compliant ES5 environment (no weird ES3 workarounds or hacks)
+- Well modularized CJS style
+- Based on one solution.
+
+### Limitations
+
+- Will fail on non extensible objects provided as keys
+- While `clear` method is provided, it's not perfectly spec compliant. If some objects were saved as _values_, they need to be removed via `delete`. Otherwise they'll remain infinitely attached to _key_ object (that means, they'll be free for GC only if _key_ object was collected as well).
+
+### Installation
+
+       $ npm install es6-weak-map
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+### Usage
+
+If you want to make sure your environment implements `WeakMap`, do:
+
+```javascript
+require('es6-weak-map/implement');
+```
+
+If you'd like to use native version when it exists and fallback to polyfill if it doesn't, but without implementing `WeakMap` on global scope, do:
+
+```javascript
+var WeakMap = require('es6-weak-map');
+```
+
+If you strictly want to use polyfill even if native `WeakMap` exists, do:
+
+```javascript
+var WeakMap = require('es6-weak-map/polyfill');
+```
+
+#### API
+
+Best is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-weakmap-objects). Still if you want quick look, follow example:
+
+```javascript
+var WeakMap = require('es6-weak-map');
+
+var map = new WeakMap();
+var obj = {};
+
+map.set(obj, 'foo'); // map
+map.get(obj);        // 'foo'
+map.has(obj);        // true
+map.delete(obj);     // true
+map.get(obj);        // undefined
+map.has(obj);        // false
+map.set(obj, 'bar'); // map
+map.clear();         // undefined
+map.has(obj);        // false
+```
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/es6-weak-map.png)](https://travis-ci.org/medikoo/es6-weak-map)
+
+       $ npm test
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js
new file mode 100644 (file)
index 0000000..6c3f306
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(require('es5-ext/global'), 'WeakMap',
+               { value: require('./polyfill'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js
new file mode 100644 (file)
index 0000000..5edc4cc
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               WeakMap : require('./polyfill');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js
new file mode 100644 (file)
index 0000000..455ff81
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function () {
+       var map;
+       if (typeof WeakMap !== 'function') return false;
+       map = new WeakMap();
+       if (typeof map.set !== 'function') return false;
+       if (map.set({}, 1) !== map) return false;
+       if (typeof map.clear !== 'function') return false;
+       if (typeof map.delete !== 'function') return false;
+       if (typeof map.has !== 'function') return false;
+
+       return true;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js
new file mode 100644 (file)
index 0000000..b3fe5a5
--- /dev/null
@@ -0,0 +1,10 @@
+// Exports true if environment provides native `WeakMap` implementation,
+// whatever that is.
+
+'use strict';
+
+module.exports = (function () {
+       if (typeof WeakMap === 'undefined') return false;
+       return (Object.prototype.toString.call(WeakMap.prototype) ===
+                       '[object WeakMap]');
+}());
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js
new file mode 100644 (file)
index 0000000..10bb2a1
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var toStringTagSymbol = require('es6-symbol').toStringTag
+
+  , toString = Object.prototype.toString
+  , id = '[object WeakMap]'
+  , Global = (typeof WeakMap === 'undefined') ? null : WeakMap;
+
+module.exports = function (x) {
+       return (x && ((Global && (x instanceof Global)) ||
+                       (toString.call(x) === id) || (x[toStringTagSymbol] === 'WeakMap'))) ||
+                       false;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.lint b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.lint
new file mode 100644 (file)
index 0000000..858b753
--- /dev/null
@@ -0,0 +1,12 @@
+@root
+
+es5
+module
+
+tabs
+indent 2
+maxlen 80
+
+ass
+nomen
+plusplus
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.npmignore b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.travis.yml b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/.travis.yml
new file mode 100644 (file)
index 0000000..50008b2
--- /dev/null
@@ -0,0 +1,9 @@
+language: node_js
+node_js:
+  - 0.8
+  - 0.10
+  - 0.11
+
+notifications:
+  email:
+    - medikoo+d@medikoo.com
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/CHANGES b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/CHANGES
new file mode 100644 (file)
index 0000000..45233f7
--- /dev/null
@@ -0,0 +1,7 @@
+v0.1.1  --  2014.04.24
+- Add `autoBind` and `lazy` utilities
+- Allow to pass other options to be merged onto created descriptor.
+  Useful when used with other custom utilties
+
+v0.1.0  --  2013.06.20
+Initial (derived from es5-ext project)
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/LICENCE b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/LICENCE
new file mode 100644 (file)
index 0000000..aaf3528
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013 Mariusz Nowak (www.medikoo.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/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/README.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/README.md
new file mode 100644 (file)
index 0000000..872d493
--- /dev/null
@@ -0,0 +1,108 @@
+# D - Property descriptor factory
+
+_Originally derived from [es5-ext](https://github.com/medikoo/es5-ext) package._
+
+Defining properties with descriptors is very verbose:
+
+```javascript
+var Account = function () {};
+Object.defineProperties(Account.prototype, {
+  deposit: { value: function () {
+      /* ... */
+    }, configurable: true, enumerable: false, writable: true },
+  whithdraw: { value: function () {
+      /* ... */
+    }, configurable: true, enumerable: false, writable: true },
+  balance: { get: function () {
+      /* ... */
+    }, configurable: true, enumerable: false }
+});
+```
+
+D cuts that to:
+
+```javascript
+var d = require('d');
+
+var Account = function () {};
+Object.defineProperties(Account.prototype, {
+  deposit: d(function () {
+    /* ... */
+  }),
+  whithdraw: d(function () {
+    /* ... */
+  }),
+  balance: d.gs(function () {
+    /* ... */
+  })
+});
+```
+
+By default, created descriptor follow characteristics of native ES5 properties, and defines values as:
+
+```javascript
+{ configurable: true, enumerable: false, writable: true }
+```
+
+You can overwrite it by preceding _value_ argument with instruction:
+```javascript
+d('c', value); // { configurable: true, enumerable: false, writable: false }
+d('ce', value); // { configurable: true, enumerable: true, writable: false }
+d('e', value); // { configurable: false, enumerable: true, writable: false }
+
+// Same way for get/set:
+d.gs('e', value); // { configurable: false, enumerable: true }
+```
+
+### Other utilities
+
+#### autoBind(obj, props) _(d/auto-bind)_
+
+Define methods which will be automatically bound to its instances
+
+```javascript
+var d = require('d');
+var autoBind = require('d/auto-bind');
+
+var Foo = function () { this._count = 0; };
+autoBind(Foo.prototype, {
+  increment: d(function () { ++this._count; });
+});
+
+var foo = new Foo();
+
+// Increment foo counter on each domEl click
+domEl.addEventListener('click', foo.increment, false);
+```
+
+#### lazy(obj, props) _(d/lazy)_
+
+Define lazy properties, which will be resolved on first access
+
+```javascript
+var d = require('d');
+var lazy = require('d/lazy');
+
+var Foo = function () {};
+lazy(Foo.prototype, {
+  items: d(function () { return []; })
+});
+
+var foo = new Foo();
+foo.items.push(1, 2); // foo.items array created
+```
+
+## Installation
+### NPM
+
+In your project path:
+
+       $ npm install d
+
+### Browser
+
+You can easily bundle _D_ for browser with [modules-webmake](https://github.com/medikoo/modules-webmake)
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/d.png)](https://travis-ci.org/medikoo/d)
+
+       $ npm test
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js
new file mode 100644 (file)
index 0000000..1b00dba
--- /dev/null
@@ -0,0 +1,31 @@
+'use strict';
+
+var copy       = require('es5-ext/object/copy')
+  , map        = require('es5-ext/object/map')
+  , callable   = require('es5-ext/object/valid-callable')
+  , validValue = require('es5-ext/object/valid-value')
+
+  , bind = Function.prototype.bind, defineProperty = Object.defineProperty
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , define;
+
+define = function (name, desc, bindTo) {
+       var value = validValue(desc) && callable(desc.value), dgs;
+       dgs = copy(desc);
+       delete dgs.writable;
+       delete dgs.value;
+       dgs.get = function () {
+               if (hasOwnProperty.call(this, name)) return value;
+               desc.value = bind.call(value, (bindTo == null) ? this : this[bindTo]);
+               defineProperty(this, name, desc);
+               return this[name];
+       };
+       return dgs;
+};
+
+module.exports = function (props/*, bindTo*/) {
+       var bindTo = arguments[1];
+       return map(props, function (desc, name) {
+               return define(name, desc, bindTo);
+       });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js
new file mode 100644 (file)
index 0000000..076ae46
--- /dev/null
@@ -0,0 +1,63 @@
+'use strict';
+
+var assign        = require('es5-ext/object/assign')
+  , normalizeOpts = require('es5-ext/object/normalize-options')
+  , isCallable    = require('es5-ext/object/is-callable')
+  , contains      = require('es5-ext/string/#/contains')
+
+  , d;
+
+d = module.exports = function (dscr, value/*, options*/) {
+       var c, e, w, options, desc;
+       if ((arguments.length < 2) || (typeof dscr !== 'string')) {
+               options = value;
+               value = dscr;
+               dscr = null;
+       } else {
+               options = arguments[2];
+       }
+       if (dscr == null) {
+               c = w = true;
+               e = false;
+       } else {
+               c = contains.call(dscr, 'c');
+               e = contains.call(dscr, 'e');
+               w = contains.call(dscr, 'w');
+       }
+
+       desc = { value: value, configurable: c, enumerable: e, writable: w };
+       return !options ? desc : assign(normalizeOpts(options), desc);
+};
+
+d.gs = function (dscr, get, set/*, options*/) {
+       var c, e, options, desc;
+       if (typeof dscr !== 'string') {
+               options = set;
+               set = get;
+               get = dscr;
+               dscr = null;
+       } else {
+               options = arguments[3];
+       }
+       if (get == null) {
+               get = undefined;
+       } else if (!isCallable(get)) {
+               options = get;
+               get = set = undefined;
+       } else if (set == null) {
+               set = undefined;
+       } else if (!isCallable(set)) {
+               options = set;
+               set = undefined;
+       }
+       if (dscr == null) {
+               c = true;
+               e = false;
+       } else {
+               c = contains.call(dscr, 'c');
+               e = contains.call(dscr, 'e');
+       }
+
+       desc = { get: get, set: set, configurable: c, enumerable: e };
+       return !options ? desc : assign(normalizeOpts(options), desc);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js
new file mode 100644 (file)
index 0000000..61e4665
--- /dev/null
@@ -0,0 +1,111 @@
+'use strict';
+
+var map        = require('es5-ext/object/map')
+  , isCallable = require('es5-ext/object/is-callable')
+  , validValue = require('es5-ext/object/valid-value')
+  , contains   = require('es5-ext/string/#/contains')
+
+  , call = Function.prototype.call
+  , defineProperty = Object.defineProperty
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+  , getPrototypeOf = Object.getPrototypeOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , cacheDesc = { configurable: false, enumerable: false, writable: false,
+               value: null }
+  , define;
+
+define = function (name, options) {
+       var value, dgs, cacheName, desc, writable = false, resolvable
+         , flat;
+       options = Object(validValue(options));
+       cacheName = options.cacheName;
+       flat = options.flat;
+       if (cacheName == null) cacheName = name;
+       delete options.cacheName;
+       value = options.value;
+       resolvable = isCallable(value);
+       delete options.value;
+       dgs = { configurable: Boolean(options.configurable),
+               enumerable: Boolean(options.enumerable) };
+       if (name !== cacheName) {
+               dgs.get = function () {
+                       if (hasOwnProperty.call(this, cacheName)) return this[cacheName];
+                       cacheDesc.value = resolvable ? call.call(value, this, options) : value;
+                       cacheDesc.writable = writable;
+                       defineProperty(this, cacheName, cacheDesc);
+                       cacheDesc.value = null;
+                       if (desc) defineProperty(this, name, desc);
+                       return this[cacheName];
+               };
+       } else if (!flat) {
+               dgs.get = function self() {
+                       var ownDesc;
+                       if (hasOwnProperty.call(this, name)) {
+                               ownDesc = getOwnPropertyDescriptor(this, name);
+                               // It happens in Safari, that getter is still called after property
+                               // was defined with a value, following workarounds that
+                               if (ownDesc.hasOwnProperty('value')) return ownDesc.value;
+                               if ((typeof ownDesc.get === 'function') && (ownDesc.get !== self)) {
+                                       return ownDesc.get.call(this);
+                               }
+                               return value;
+                       }
+                       desc.value = resolvable ? call.call(value, this, options) : value;
+                       defineProperty(this, name, desc);
+                       desc.value = null;
+                       return this[name];
+               };
+       } else {
+               dgs.get = function self() {
+                       var base = this, ownDesc;
+                       if (hasOwnProperty.call(this, name)) {
+                               // It happens in Safari, that getter is still called after property
+                               // was defined with a value, following workarounds that
+                               ownDesc = getOwnPropertyDescriptor(this, name);
+                               if (ownDesc.hasOwnProperty('value')) return ownDesc.value;
+                               if ((typeof ownDesc.get === 'function') && (ownDesc.get !== self)) {
+                                       return ownDesc.get.call(this);
+                               }
+                       }
+                       while (!hasOwnProperty.call(base, name)) base = getPrototypeOf(base);
+                       desc.value = resolvable ? call.call(value, base, options) : value;
+                       defineProperty(base, name, desc);
+                       desc.value = null;
+                       return base[name];
+               };
+       }
+       dgs.set = function (value) {
+               dgs.get.call(this);
+               this[cacheName] = value;
+       };
+       if (options.desc) {
+               desc = {
+                       configurable: contains.call(options.desc, 'c'),
+                       enumerable: contains.call(options.desc, 'e')
+               };
+               if (cacheName === name) {
+                       desc.writable = contains.call(options.desc, 'w');
+                       desc.value = null;
+               } else {
+                       writable = contains.call(options.desc, 'w');
+                       desc.get = dgs.get;
+                       desc.set = dgs.set;
+               }
+               delete options.desc;
+       } else if (cacheName === name) {
+               desc = {
+                       configurable: Boolean(options.configurable),
+                       enumerable: Boolean(options.enumerable),
+                       writable: Boolean(options.writable),
+                       value: null
+               };
+       }
+       delete options.configurable;
+       delete options.enumerable;
+       delete options.writable;
+       return dgs;
+};
+
+module.exports = function (props) {
+       return map(props, function (desc, name) { return define(name, desc); });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json
new file mode 100644 (file)
index 0000000..3f09c82
--- /dev/null
@@ -0,0 +1,58 @@
+{
+  "name": "d",
+  "version": "0.1.1",
+  "description": "Property descriptor factory",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "scripts": {
+    "test": "node node_modules/tad/bin/tad"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/d.git"
+  },
+  "keywords": [
+    "descriptor",
+    "es",
+    "ecmascript",
+    "ecma",
+    "property",
+    "descriptors",
+    "meta",
+    "properties"
+  ],
+  "dependencies": {
+    "es5-ext": "~0.10.2"
+  },
+  "devDependencies": {
+    "tad": "~0.1.21"
+  },
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/medikoo/d/issues"
+  },
+  "homepage": "https://github.com/medikoo/d",
+  "_id": "d@0.1.1",
+  "dist": {
+    "shasum": "da184c535d18d8ee7ba2aa229b914009fae11309",
+    "tarball": "http://registry.npmjs.org/d/-/d-0.1.1.tgz"
+  },
+  "_from": "d@>=0.1.1 <0.2.0",
+  "_npmVersion": "1.4.3",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "directories": {},
+  "_shasum": "da184c535d18d8ee7ba2aa229b914009fae11309",
+  "_resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz"
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/auto-bind.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/auto-bind.js
new file mode 100644 (file)
index 0000000..89edfb8
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var d = require('../');
+
+module.exports = function (t, a) {
+       var o = Object.defineProperties({}, t({
+               bar: d(function () { return this === o; }),
+               bar2: d(function () { return this; })
+       }));
+
+       a.deep([(o.bar)(), (o.bar2)()], [true, o]);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/index.js
new file mode 100644 (file)
index 0000000..3db0af1
--- /dev/null
@@ -0,0 +1,182 @@
+'use strict';
+
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+module.exports = function (t, a) {
+       var o, c, cg, cs, ce, ceg, ces, cew, cw, e, eg, es, ew, v, vg, vs, w, df, dfg
+         , dfs;
+
+       o = Object.create(Object.prototype, {
+               c: t('c', c = {}),
+               cgs: t.gs('c', cg = function () {}, cs = function () {}),
+               ce: t('ce', ce = {}),
+               cegs: t.gs('ce', ceg = function () {}, ces = function () {}),
+               cew: t('cew', cew = {}),
+               cw: t('cw', cw = {}),
+               e: t('e', e = {}),
+               egs: t.gs('e', eg = function () {}, es = function () {}),
+               ew: t('ew', ew = {}),
+               v: t('', v = {}),
+               vgs: t.gs('', vg = function () {}, vs = function () {}),
+               w: t('w', w = {}),
+
+               df: t(df = {}),
+               dfgs: t.gs(dfg = function () {}, dfs = function () {})
+       });
+
+       return {
+               c: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'c');
+                       a(d.value, c, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'cgs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, cg, "GS Get");
+                       a(d.set, cs, "GS Set");
+                       a(d.configurable, true, "GS Configurable");
+                       a(d.enumerable, false, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               ce: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'ce');
+                       a(d.value, ce, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'cegs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, ceg, "GS Get");
+                       a(d.set, ces, "GS Set");
+                       a(d.configurable, true, "GS Configurable");
+                       a(d.enumerable, true, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               cew: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'cew');
+                       a(d.value, cew, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               cw: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'cw');
+                       a(d.value, cw, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               e: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'e');
+                       a(d.value, e, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'egs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, eg, "GS Get");
+                       a(d.set, es, "GS Set");
+                       a(d.configurable, false, "GS Configurable");
+                       a(d.enumerable, true, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               ew: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'ew');
+                       a(d.value, ew, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, true, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               v: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'v');
+                       a(d.value, v, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, false, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'vgs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, vg, "GS Get");
+                       a(d.set, vs, "GS Set");
+                       a(d.configurable, false, "GS Configurable");
+                       a(d.enumerable, false, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               w: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'w');
+                       a(d.value, w, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, false, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, true, "Writable");
+               },
+               d: function (a) {
+                       var d = getOwnPropertyDescriptor(o, 'df');
+                       a(d.value, df, "Value");
+                       a(d.get, undefined, "Get");
+                       a(d.set, undefined, "Set");
+                       a(d.configurable, true, "Configurable");
+                       a(d.enumerable, false, "Enumerable");
+                       a(d.writable, true, "Writable");
+
+                       d = getOwnPropertyDescriptor(o, 'dfgs');
+                       a(d.value, undefined, "GS Value");
+                       a(d.get, dfg, "GS Get");
+                       a(d.set, dfs, "GS Set");
+                       a(d.configurable, true, "GS Configurable");
+                       a(d.enumerable, false, "GS Enumerable");
+                       a(d.writable, undefined, "GS Writable");
+               },
+               Options: {
+                       v: function (a) {
+                               var x = {}, d = t(x, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, writable: true,
+                                       value: x, foo: true }, "No descriptor");
+                               d = t('c', 'foo', { marko: 'elo' });
+                               a.deep(d, { configurable: true, enumerable: false, writable: false,
+                                       value: 'foo', marko: 'elo' }, "Descriptor");
+                       },
+                       gs: function (a) {
+                               var gFn = function () {}, sFn = function () {}, d;
+                               d = t.gs(gFn, sFn, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, get: gFn, set: sFn,
+                                       foo: true }, "No descriptor");
+                               d = t.gs(null, sFn, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, get: undefined,
+                                       set: sFn, foo: true }, "No descriptor: Just set");
+                               d = t.gs(gFn, { foo: true });
+                               a.deep(d, { configurable: true, enumerable: false, get: gFn,
+                                       set: undefined, foo: true }, "No descriptor: Just get");
+
+                               d = t.gs('e', gFn, sFn, { bar: true });
+                               a.deep(d, { configurable: false, enumerable: true, get: gFn, set: sFn,
+                                       bar: true }, "Descriptor");
+                               d = t.gs('e', null, sFn, { bar: true });
+                               a.deep(d, { configurable: false, enumerable: true, get: undefined,
+                                       set: sFn, bar: true }, "Descriptor: Just set");
+                               d = t.gs('e', gFn, { bar: true });
+                               a.deep(d, { configurable: false, enumerable: true, get: gFn,
+                                       set: undefined, bar: true }, "Descriptor: Just get");
+                       }
+               }
+       };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/lazy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test/lazy.js
new file mode 100644 (file)
index 0000000..8266deb
--- /dev/null
@@ -0,0 +1,77 @@
+'use strict';
+
+var d = require('../')
+
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+module.exports = function (t, a) {
+       var Foo = function () {}, i = 1, o, o2, desc;
+       Object.defineProperties(Foo.prototype, t({
+               bar: d(function () { return ++i; }),
+               bar2: d(function () { return this.bar + 23; }),
+               bar3: d(function () { return this.bar2 + 34; }, { desc: 'ew' }),
+               bar4: d(function () { return this.bar3 + 12; }, { cacheName: '_bar4_' }),
+               bar5: d(function () { return this.bar4 + 3; },
+                       { cacheName: '_bar5_', desc: 'e' })
+       }));
+
+       desc = getOwnPropertyDescriptor(Foo.prototype, 'bar');
+       a(desc.configurable, true, "Configurable: default");
+       a(desc.enumerable, false, "Enumerable: default");
+
+       o = new Foo();
+       a.deep([o.bar, o.bar2, o.bar3, o.bar4, o.bar5], [2, 25, 59, 71, 74],
+               "Values");
+
+       a.deep(getOwnPropertyDescriptor(o, 'bar3'), { configurable: false,
+               enumerable: true, writable: true, value: 59 }, "Desc");
+       a(o.hasOwnProperty('bar4'), false, "Cache not exposed");
+       desc = getOwnPropertyDescriptor(o, 'bar5');
+       a.deep(desc, { configurable: false,
+               enumerable: true, get: desc.get, set: desc.set }, "Cache & Desc: desc");
+
+       o2 = Object.create(o);
+       o2.bar = 30;
+       o2.bar3 = 100;
+
+       a.deep([o2.bar, o2.bar2, o2.bar3, o2.bar4, o2.bar5], [30, 25, 100, 112, 115],
+               "Extension Values");
+
+       Foo = function () {};
+       Object.defineProperties(Foo.prototype, t({
+               test: d('w', function () { return 'raz'; }),
+               test2: d('', function () { return 'raz'; }, { desc: 'w' }),
+               test3: d('', function () { return 'raz'; },
+                       { cacheName: '__test3__', desc: 'w' }),
+               test4: d('w', 'bar')
+       }));
+
+       o = new Foo();
+       o.test = 'marko';
+       a.deep(getOwnPropertyDescriptor(o, 'test'),
+               { configurable: false, enumerable: false, writable: true, value: 'marko' },
+               "Set before get");
+       o.test2 = 'marko2';
+       a.deep(getOwnPropertyDescriptor(o, 'test2'),
+               { configurable: false, enumerable: false, writable: true, value: 'marko2' },
+               "Set before get: Custom desc");
+       o.test3 = 'marko3';
+       a.deep(getOwnPropertyDescriptor(o, '__test3__'),
+               { configurable: false, enumerable: false, writable: true, value: 'marko3' },
+               "Set before get: Custom cache name");
+       a(o.test4, 'bar', "Resolve by value");
+
+       a.h1("Flat");
+       Object.defineProperties(Foo.prototype, t({
+               flat: d(function () { return 'foo'; }, { flat: true }),
+               flat2: d(function () { return 'bar'; }, { flat: true })
+       }));
+
+       a.h2("Instance");
+       a(o.flat, 'foo', "Value");
+       a(o.hasOwnProperty('flat'), false, "Instance");
+       a(Foo.prototype.flat, 'foo', "Prototype");
+
+       a.h2("Direct");
+       a(Foo.prototype.flat2, 'bar');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lint b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lint
new file mode 100644 (file)
index 0000000..d1da610
--- /dev/null
@@ -0,0 +1,38 @@
+@root
+
+module
+
+indent 2
+maxlen 100
+tabs
+
+ass
+continue
+forin
+nomen
+plusplus
+vars
+
+./global.js
+./function/_define-length.js
+./function/#/copy.js
+./object/unserialize.js
+./test/function/valid-function.js
+evil
+
+./math/_pack-ieee754.js
+./math/_unpack-ieee754.js
+./math/clz32/shim.js
+./math/imul/shim.js
+./number/to-uint32.js
+./string/#/at.js
+bitwise
+
+./math/fround/shim.js
+predef+ Float32Array
+
+./object/first-key.js
+forin
+
+./test/reg-exp/#/index.js
+predef+ __dirname
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lintignore b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.lintignore
new file mode 100644 (file)
index 0000000..ed703ed
--- /dev/null
@@ -0,0 +1,8 @@
+/string/#/normalize/_data.js
+/test/boolean/is-boolean.js
+/test/date/is-date.js
+/test/number/is-number.js
+/test/object/is-copy.js
+/test/object/is-object.js
+/test/reg-exp/is-reg-exp.js
+/test/string/is-string.js
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.npmignore b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.npmignore
new file mode 100644 (file)
index 0000000..eb09b50
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/.lintcache
+/npm-debug.log
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.travis.yml b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/.travis.yml
new file mode 100644 (file)
index 0000000..a183dbc
--- /dev/null
@@ -0,0 +1,15 @@
+sudo: false # http://docs.travis-ci.com/user/workers/container-based-infrastructure/
+language: node_js
+node_js:
+  - 0.10
+  - 0.12
+  - iojs
+
+before_install:
+  - mkdir node_modules; ln -s ../ node_modules/es5-ext
+
+notifications:
+  email:
+    - medikoo+es5-ext@medikoo.com
+
+script: "npm test && npm run lint"
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/CHANGES b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/CHANGES
new file mode 100644 (file)
index 0000000..5d0ace5
--- /dev/null
@@ -0,0 +1,611 @@
+v0.10.7  --  2015.04.22
+* New utlitities. They're convention differs from v0.10, as they were supposed to land in v1.
+  Still they're non breaking and start the conventions to be used in v1
+  * Object.validateArrayLike
+  * Object.validateArrayLikeObject
+  * Object.validateStringifiable
+  * Object.validateStringifiableValue
+  * Universal utilities for array-like/iterable objects
+    * Iterable.is
+    * Iterable.validate
+    * Iterable.validateObject
+    * Iterable.forEach
+* Fix camelToHyphen resolution, it must be absolutely reversable by hyphenToCamel
+* Fix calculations of large numbers in Math.tanh
+* Fix algorithm of Math.sinh
+* Fix indexes to not use real symbols
+* Fix length of String.fromCodePoint
+* Fix tests of Array#copyWithin
+* Update Travis CI configuration
+
+v0.10.6  --  2015.02.02
+* Fix handling of infinite values in Math.trunc
+* Fix handling of getters in Object.normalizeOptions
+
+v0.10.5  --  2015.01.20
+* Add Function#toStringTokens
+* Add Object.serialize and Object.unserialize
+* Add String.randomUniq
+* Fix Strin#camelToHyphen issue with tokens that end with digit
+* Optimise Number.isInteger logic
+* Improve documentation
+* Configure lint scripts
+* Fix spelling of LICENSE
+
+v0.10.4  --  2014.04.30
+* Assure maximum spec compliance of Array.of and Array.from (thanks @mathiasbynens)
+* Improve documentations
+
+v0.10.3  --  2014.04.29
+Provide accurate iterators handling:
+* Array.from improvements:
+  * Assure right unicode symbols resolution when processing strings in Array.from
+  * Rely on ES6 symbol shim and use native @@iterator Symbol if provided by environment
+* Add methods:
+  * Array.prototype.entries
+  * Array.prototype.keys
+  * Array.prototype.values
+  * Array.prototype[@@iterator]
+  * String.prototype[@@iterator]
+
+Improve documentation
+
+v0.10.2  --  2014.04.24
+- Simplify and deprecate `isCallable`. It seems in ES5 based engines there are
+  no callable objects which are `typeof obj !== 'function'`
+- Update Array.from map callback signature (up to latest resolution of TC39)
+- Improve documentation
+
+v0.10.1  --  2014.04.14
+Bump version for npm
+(Workaround for accidental premature publish & unpublish of v0.10.0 a while ago)
+
+v0.10.0  --  2014.04.13
+Major update:
+- All methods and function specified for ECMAScript 6 are now introduced as
+  shims accompanied with functions through which (optionally) they can be
+  implementend on native objects
+- Filename convention was changed to shorter and strictly lower case names. e.g.
+  `lib/String/prototype/starts-with` became `string/#/starts-with`
+- Generated functions are guaranteed to have expected length
+- Objects with null prototype (created via `Object.create(null)`) are widely
+  supported (older version have crashed due to implied `obj.hasOwnProperty` and
+  related invocations)
+- Support array subclasses
+- When handling lists do not limit its length to Uint32 range
+- Use newly introduced `Object.eq` for strict equality in place of `Object.is`
+- Iteration of Object have been improved so properties that were hidden or
+  removed after iteration started are not iterated.
+
+Additions:
+- `Array.isPlainArray`
+- `Array.validArray`
+- `Array.prototype.concat` (as updated with ES6)
+- `Array.prototype.copyWithin` (as introduced with ES6)
+- `Array.prototype.fill` (as introduced with ES6)
+- `Array.prototype.filter` (as updated with ES6)
+- `Array.prototype.findIndex` (as introduced with ES6)
+- `Array.prototype.map` (as updated with ES6)
+- `Array.prototype.separate`
+- `Array.prototype.slice` (as updated with ES6)
+- `Array.prototype.splice` (as updated with ES6)
+- `Function.prototype.copy`
+- `Math.acosh` (as introduced with ES6)
+- `Math.atanh` (as introduced with ES6)
+- `Math.cbrt` (as introduced with ES6)
+- `Math.clz32` (as introduced with ES6)
+- `Math.cosh` (as introduced with ES6)
+- `Math.expm1` (as introduced with ES6)
+- `Math.fround` (as introduced with ES6)
+- `Math.hypot` (as introduced with ES6)
+- `Math.imul` (as introduced with ES6)
+- `Math.log2` (as introduced with ES6)
+- `Math.log10` (as introduced with ES6)
+- `Math.log1p` (as introduced with ES6)
+- `Math.sinh` (as introduced with ES6)
+- `Math.tanh` (as introduced with ES6)
+- `Math.trunc` (as introduced with ES6)
+- `Number.EPSILON` (as introduced with ES6)
+- `Number.MIN_SAFE_INTEGER` (as introduced with ES6)
+- `Number.MAX_SAFE_INTEGER` (as introduced with ES6)
+- `Number.isFinite` (as introduced with ES6)
+- `Number.isInteger` (as introduced with ES6)
+- `Number.isSafeInteger` (as introduced with ES6)
+- `Object.create` (with fix for V8 issue which disallows prototype turn of
+  objects derived from null
+- `Object.eq` - Less restrictive version of `Object.is` based on SameValueZero
+  algorithm
+- `Object.firstKey`
+- `Object.keys` (as updated with ES6)
+- `Object.mixinPrototypes`
+- `Object.primitiveSet`
+- `Object.setPrototypeOf` (as introduced with ES6)
+- `Object.validObject`
+- `RegExp.escape`
+- `RegExp.prototype.match` (as introduced with ES6)
+- `RegExp.prototype.replace` (as introduced with ES6)
+- `RegExp.prototype.search` (as introduced with ES6)
+- `RegExp.prototype.split` (as introduced with ES6)
+- `RegExp.prototype.sticky` (as introduced with ES6)
+- `RegExp.prototype.unicode` (as introduced with ES6)
+- `String.fromCodePoint` (as introduced with ES6)
+- `String.raw` (as introduced with ES6)
+- `String.prototype.at`
+- `String.prototype.codePointAt` (as introduced with ES6)
+- `String.prototype.normalize` (as introduced with ES6)
+- `String.prototype.plainReplaceAll`
+
+Removals:
+- `reserved` set
+- `Array.prototype.commonLeft`
+- `Function.insert`
+- `Function.remove`
+- `Function.prototype.silent`
+- `Function.prototype.wrap`
+- `Object.descriptor` Move to external `d` project.
+  See: https://github.com/medikoo/d
+- `Object.diff`
+- `Object.extendDeep`
+- `Object.reduce`
+- `Object.values`
+- `String.prototype.trimCommonLeft`
+
+Renames:
+- `Function.i` into `Function.identity`
+- `Function.k` into `Function.constant`
+- `Number.toInt` into `Number.toInteger`
+- `Number.toUint` into `Number.toPosInteger`
+- `Object.extend` into `Object.assign` (as introduced in ES 6)
+- `Object.extendProperties` into `Object.mixin`, with improved internal
+  handling, so it matches temporarily specified `Object.mixin` for ECMAScript 6
+- `Object.isList` into `Object.isArrayLike`
+- `Object.mapToArray` into `Object.toArray` (with fixed function length)
+- `Object.toPlainObject` into `Object.normalizeOptions` (as this is the real
+  use case where we use this function)
+- `Function.prototype.chain` into `Function.prototype.compose`
+- `Function.prototype.match` into `Function.prototype.spread`
+- `String.prototype.format` into `String.formatMethod`
+
+Improvements & Fixes:
+- Remove workaround for primitive values handling in object iterators
+- `Array.from`: Update so it follows ES 6 spec
+- `Array.prototype.compact`: filters just null and undefined values
+  (not all falsies)
+- `Array.prototype.eIndexOf` and `Array.prototype.eLastIndexOf`: fix position
+  handling, improve internals
+- `Array.prototype.find`: return undefined not null, in case of not found
+  (follow ES 6)
+- `Array.prototype.remove` fix function length
+- `Error.custom`: simplify, Custom class case is addressed by outer
+  `error-create` project -> https://github.com/medikoo/error-create
+- `Error.isError` true only for Error instances (remove detection of host
+  Exception objects)
+- `Number.prototype.pad`: Normalize negative pad
+- `Object.clear`: Handle errors same way as in `Object.assign`
+- `Object.compact`: filters just null and undefined values (not all falsies)
+- `Object.compare`: Take into account NaN values
+- `Object.copy`: Split into `Object.copy` and `Object.copyDeep`
+- `Object.isCopy`: Separate into `Object.isCopy` and `Object.isCopyDeep`, where
+  `isCopyDeep` handles nested plain objects and plain arrays only
+- `String.prototype.endsWith`: Adjust up to ES6 specification
+- `String.prototype.repeat`: Adjust up to ES6 specification and improve algorithm
+- `String.prototype.simpleReplace`: Rename into `String.prototype.plainReplace`
+- `String.prototype.startsWith`: Adjust up to ES6 specification
+- Update lint rules, and adjust code to that
+- Update Travis CI configuration
+- Remove Makefile (it's cross-env utility)
+
+v0.9.2  --  2013.03.11
+Added:
+* Array.prototype.isCopy
+* Array.prototype.isUniq
+* Error.CustomError
+* Function.validFunction
+* Object.extendDeep
+* Object.descriptor.binder
+* Object.safeTraverse
+* RegExp.validRegExp
+* String.prototype.capitalize
+* String.prototype.simpleReplace
+
+Fixed:
+* Fix Array.prototype.diff for sparse arrays
+* Accept primitive objects as input values in Object iteration methods and
+  Object.clear, Object.count, Object.diff, Object.extend,
+  Object.getPropertyNames, Object.values
+* Pass expected arguments to callbacks of Object.filter, Object.mapKeys,
+  Object.mapToArray, Object.map
+* Improve callable callback support in Object.mapToArray
+
+v0.9.1  --  2012.09.17
+* Object.reduce - reduce for hash-like collections
+* Accapt any callable object as callback in Object.filter, mapKeys and map
+* Convention cleanup
+
+v0.9.0  --  2012.09.13
+We're getting to real solid API
+
+Removed:
+* Function#memoize - it's grown up to be external package, to be soon published
+  as 'memoizee'
+* String.guid - it doesn't fit es5-ext (extensions) concept, will be provided as
+  external package
+# Function.arguments - obsolete
+# Function.context - obsolete
+# Function#flip - not readable when used, so it was never used
+# Object.clone - obsolete and confusing
+
+Added:
+* String#camelToHyphen - String format convertion
+
+Renamed:
+* String#dashToCamelCase -> String#hyphenToCamel
+
+Fixes:
+* Object.isObject - Quote names in literals that match reserved keywords
+  (older implementations crashed on that)
+* String#repeat - Do not accept negative values (coerce them to 1)
+
+Improvements:
+* Array#remove - Accepts many arguments, we can now remove many values at once
+* Object iterators (forEach, map, some) - Compare function invoked with scope
+  object bound to this
+* Function#curry - Algorithm cleanup
+* Object.isCopy - Support for all types, not just plain objects
+* Object.isPlainObject - Support for cross-frame objects
+* Do not memoize any of the functions, it shouldn't be decided internally
+* Remove Object.freeze calls in reserved, it's not up to convention
+* Improved documentation
+* Better linting (hard-core approach using both JSLint mod and JSHint)
+* Optional arguments are now documented in funtions signature
+
+v0.8.2  --  2012.06.22
+Fix errors in Array's intersection and exclusion methods, related to improper
+usage of contains method
+
+v0.8.1  --  2012.06.13
+Reorganized internal logic of Function.prototype.memoize. So it's more safe now
+and clears cache properly. Additionally preventCache option was provided.
+
+v0.8.0  --  2012.05.28
+Again, major overhaul. Probably last experimental stuff was trashed, all API
+looks more like standard extensions now.
+
+Changes:
+* Turn all Object.prototype extensions into functions and move them to Object
+namespace. We learned that extending Object.prototype is bad idea in any case.
+* Rename Function.prototype.curry into Function.prototype.partial. This function
+  is really doing partial application while currying is slightly different
+  concept.
+* Convert Function.prototype.ncurry to new implementation of
+  Function.prototype.curry, it now serves real curry concept additionaly it
+  covers use cases for aritize and hold, which were removed.
+* Rename Array's peek to last, and provide support for sparse arrays in it
+* Rename Date's monthDaysCount into daysInMonth
+* Simplify object iterators, now order of iteration can be configured with just
+  compareFn argument (no extra byKeys option)
+* Rename Object.isDuplicate to Object.isCopy
+* Rename Object.isEqual to Object.is which is compatible with future 'is'
+  keyword
+* Function.memoize is now Function.prototype.memoize. Additionally clear cache
+  functionality is added, and access to original arguments object.
+* Rename validation functions: assertNotNull to validValue, assertCallable to
+  validCallable. validValue was moved to Object namespace. On success they now
+  return validated value instead of true, it supports better composition.
+  Additionally created Date.validDate and Error.validError
+* All documentation is now held in README.md not in code files.
+* Move guid to String namespace. All guids now start with numbers.
+* Array.generate: fill argument is now optional
+* Object.toArray is now Array.from (as new ES6 specification draft suggests)
+* All methods that rely on indexOf or lastIndexOf, now rely on egal (Object.is)
+  versions of them (eIndexOf, eLastIndexOf)
+* Turn all get* functions that returned methods into actuall methods (get*
+  functionality can still be achieved with help of Function.prototype.partial).
+  So: Date.getFormat is now Date.prototype.format,
+  Number.getPad is now Number.prototype.pad,
+  String.getFormat is now String.prototype.format,
+  String.getIndent is now String.prototype.indent,
+  String.getPad is now String.prototype.pad
+* Refactored Object.descriptor, it is now just two functions, main one and
+  main.gs, main is for describing values, and gs for describing getters and
+  setters. Configuration is passed with first argument as string e.g. 'ce' for
+  configurable and enumerable. If no configuration string is provided then by
+  default it returns configurable and writable but not enumerable for value or
+  configurable but not enumerable for getter/setter
+* Function.prototype.silent now returns prepared function (it was
+  expected to be fixed for 0.7)
+* Reserved keywords map (reserved) is now array not hash.
+* Object.merge is now Object.extend (while former Object.extend was completely
+  removed) - 'extend' implies that we change object, not creating new one (as
+  'merge' may imply). Similarily Object.mergeProperties was renamed to
+  Object.extendProperties
+* Position argument support in Array.prototype.contains and
+  String.prototype.contains (so it follows ES6 specification draft)
+* endPosition argument support in String.prototype.endsWith and fromPosition
+  argument support in String.prototype.startsWith (so it follows ES6
+  specification draft)
+* Better and cleaner String.prototype.indent implementation. No default value
+  for indent string argument, optional nest value (defaults to 1), remove
+  nostart argument
+* Correct length values for most methods (so they reflect length of similar
+  methods in standard)
+* Length argument is now optional in number and string pad methods.
+* Improve arguments validation in general, so it adheres to standard conventions
+* Fixed format of package.json
+
+Removed methods and functions:
+* Object.prototype.slice - Object is not ordered collection, so slice doesn't
+  make sense.
+* Function's rcurry, rncurry, s - too cumbersome for JS, not many use cases for
+  that
+* Function.prototype.aritize and Function.prototype.hold - same functionality
+  can be achieved with new Function.prototype.curry
+* Function.prototype.log - provided more generic Function.prototype.wrap for
+  same use case
+* getNextIdGenerator - no use case for that (String.guid should be used if
+  needed)
+* Object.toObject - Can be now acheived with Object(validValue(x))
+* Array.prototype.someValue - no real use case (personally used once and
+  case was already controversial)
+* Date.prototype.duration - moved to external package
+* Number.getAutoincrement - No real use case
+* Object.prototype.extend, Object.prototype.override,
+  Object.prototype.plainCreate, Object.prototype.plainExtend - It was probably
+  too complex, same should be achieved just with Object.create,
+  Object.descriptor and by saving references to super methods in local scope.
+* Object.getCompareBy - Functions should be created individually for each use
+  case
+* Object.get, Object.getSet, Object.set, Object.unset - Not many use cases and
+  same can be easily achieved with simple inline function
+* String.getPrefixWith - Not real use case for something that can be easily
+  achieved with '+' operator
+* Object.isPrimitive - It's just negation of Object.isObject
+* Number.prototype.isLess, Number.prototype.isLessOrEqual - they shouldn't be in
+  Number namespace and should rather be addressed with simple inline functions.
+* Number.prototype.subtract - Should rather be addressed with simple inline
+  function
+
+New methods and functions:
+* Array.prototype.lastIndex - Returns last declared index in array
+* String.prototype.last - last for strings
+* Function.prototype.wrap - Wrap function with other, it allows to specify
+  before and after behavior transform return value or prevent original function
+  from being called.
+* Math.sign - Returns sign of a number (already in ES6 specification draft)
+* Number.toInt - Converts value to integer (already in ES6 specification draft)
+* Number.isNaN - Returns true if value is NaN (already in ES6 specification
+  draft)
+* Number.toUint - Converts value to unsigned integer
+* Number.toUint32 - Converts value to 32bit unsigned integer
+* Array.prototype.eIndexOf, eLastIndexOf - Egal version (that uses Object.is) of
+  standard methods (all methods that were using native indexOf or lastIndexOf
+  now uses eIndexOf and elastIndexOf respectively)
+* Array.of - as it's specified for ES6
+
+Fixes:
+* Fixed binarySearch so it always returns valid list index
+* Object.isList - it failed on lists that are callable (e.g. NodeList in Nitro
+  engine)
+* Object.map now supports third argument for callback
+
+v0.7.1  --  2012.01.05
+New methods:
+* Array.prototype.firstIndex - returns first valid index of array (for
+       sparse arrays it may not be '0'
+
+Improvements:
+* Array.prototype.first - now returns value for index returned by firstIndex
+* Object.prototype.mapToArray - can be called without callback, then array of
+       key-value pairs is returned
+
+Fixes
+* Array.prototype.forEachRight, object's length read through UInt32 conversion
+
+v0.7.0  --  2011.12.27
+Major update.
+Stepped back from experimental ideas and introduced more standard approach
+taking example from how ES5 methods and functions are designed. One exceptions
+is that, we don’t refrain from declaring methods for Object.prototype - it’s up
+to developer whether how he decides to use it in his context (as function or as
+method).
+
+In general:
+* Removed any method 'functionalization' and functionalize method itself.
+       es5-ext declares plain methods, which can be configured to work as functions
+       with call.bind(method) - see documentation.
+* Removed separation of Object methods for ES5 (with descriptors) and
+       ES3 (plain) - we're following ES5 idea on that, some methods are intended just
+       for enumerable properties and some are for all properties, all are declared
+       for Object.prototype
+* Removed separation of Array generic (collected in List folder) and not generic
+       methods (collected in Array folder). Now all methods are generic and are in
+       Array/prototype folder. This separation also meant, that methods in Array are
+       usually destructive. We don’t do that separation now, there’s generally no use
+       case for destructive iterators, we should be fine with one version of each
+       method, (same as ES5 is fine with  e.g. one, non destructive 'filter' method)
+* Folder structure resembles tree of native ES5 Objects
+* All methods are written with ES5 conventions in mind, it means that most
+       methods are generic and can be run on any object. In more detail:
+       ** Array.prototype and Object.prototype methods can be run on any object (any
+               not null or undefined value),
+       ** Date.prototype methods should be called only on Date instances.
+       ** Function.prototype methods can be called on any callable objects (not
+               necessarily functions)
+       ** Number.prototype & String.prototype methods can be called on any value, in
+               case of Number it it’ll be degraded to number, in case of string it’ll be
+               degraded to string.
+* Travis CI support (only for Node v0.6 branch, as v0.4 has buggy V8 version)
+
+Improvements for existing functions and methods:
+* Function.memoize (was Function.cache) is now fully generic, can operate on any
+       type of arguments and it’s NaN safe (all NaN objects are considered equal)
+* Method properties passed to Object.prototype.extend or
+       Object.prototype.override can aside of _super optionally take prototype object
+       via _proto argument
+* Object iterators: forEach, mapToArray and every can now iterate in specified
+       order
+* pluck, invoke and other functions that return reusable functions or methods
+       have now their results memoized.
+
+New methods:
+* Global: assertNotNull, getNextIdGenerator, guid, isEqual, isPrimitive,
+       toObject
+* Array: generate
+* Array.prototype: binarySearch, clear, contains, diff, exclusion, find, first,
+       forEachRight, group, indexesOf, intersection, remove, someRight, someValue
+* Boolean: isBoolean
+* Date: isDate
+* Function: arguments, context, insert, isArguments, remove
+* Function.prototype: not, silent
+* Number: getAutoincrement, isNumber
+* Number.prototype: isLessOrEqual, isLess, subtract
+* Object: assertCallable, descriptor (functions for clean descriptors),
+       getCompareBy, isCallable, isObject
+* Object.prototype: clone (real clone), compact, count, diff, empty,
+       getPropertyNames, get, keyOf, mapKeys, override, plainCreate, plainExtend,
+       slice, some, unset
+* RegExp: isRegExp
+* String: getPrefixWith, isString
+* String.prototype: caseInsensitiveCompare, contains, isNumeric
+
+Renamed methods:
+* Date.clone -> Date.prototype.copy
+* Date.format -> Date.getFormat
+* Date/day/floor -> Date.prototype.floorDay
+* Date/month/floor -> Date.prototype.floorMonth
+* Date/month/year -> Date.prototype.floorYear
+* Function.cache -> Function.memoize
+* Function.getApplyArg -> Function.prototype.match
+* Function.sequence -> Function.prototype.chain
+* List.findSameStartLength -> Array.prototype.commonLeft
+* Number.pad -> Number.getPad
+* Object/plain/clone -> Object.prototype.copy
+* Object/plain/elevate -> Object.prototype.flatten
+* Object/plain/same -> Object.prototype.isDuplicate
+* Object/plain/setValue -> Object.getSet
+* String.format -> String.getFormat
+* String.indent -> String.getIndent
+* String.pad -> String.getPad
+* String.trimLeftStr -> String.prototype.trimCommonLeft
+* Object.merge -> Object.prototype.mergeProperties
+* Object/plain/pluck -> Object.prototype.get
+* Array.clone is now Array.prototype.copy and can be used also on any array-like
+       objects
+* List.isList -> Object.isList
+* List.toArray -> Object.prototype.toArray
+* String/convert/dashToCamelCase -> String.prototype.dashToCamelCase
+
+Removed methods:
+* Array.compact - removed destructive version (that operated on same array), we
+       have now non destructive version as Array.prototype.compact.
+* Function.applyBind -> use apply.bind directly
+* Function.bindBind -> use bind.bind directly
+* Function.callBind -> use call.bind directly
+* Fuction.clone -> no valid use case
+* Function.dscope -> controversial approach, shouldn’t be considered seriously
+* Function.functionalize -> It was experimental but standards are standards
+* List/sort/length -> It can be easy obtained by Object.getCompareBy(‘length’)
+* List.concat -> Concat’s for array-like’s makes no sense, just convert to array
+       first
+* List.every -> Use Array.prototype.every directly
+* List.filter -> Use Array.prototype.filter directly
+* List.forEach -> User Array.prototype.forEach directly
+* List.isListObject -> No valid use case, do: isList(list) && (typeof list ===
+       'object’)
+* List.map -> Use Array.prototype.map directly
+* List.reduce -> Use Array.prototype.reduce directly
+* List.shiftSame -> Use Array.prototype.commonLeft and do slice
+* List.slice -> Use Array.prototype.slice directly
+* List.some -> Use Array.prototype.some directly
+* Object.bindMethods -> it was version that considered descriptors, we have now
+       Object.prototype.bindMethods which operates only on enumerable properties
+* Object.every -> version that considered all properties, we have now
+       Object.prototype.every which iterates only enumerables
+* Object.invoke -> no use case
+* Object.mergeDeep -> no use case
+* Object.pluck -> no use case
+* Object.same -> it considered descriptors, now there’s only Object.isDuplicate
+       which compares only enumerable properties
+* Object.sameType -> no use case
+* Object.toDescriptor and Object.toDescriptors -> replaced by much nicer
+       Object.descriptor functions
+* Object/plain/link -> no use case (it was used internally only by
+       Object/plain/merge)
+* Object/plain/setTrue -> now easily configurable by more universal
+       Object.getSet(true)
+* String.trimRightStr -> Eventually String.prototype.trimCommonRight will be
+       added
+
+v0.6.3  --  2011.12.12
+* Cleared npm warning for misnamed property in package.json
+
+v0.6.2  --  2011.08.12
+* Calling String.indent without scope (global scope then) now treated as calling
+  it with null scope, it allows more direct invocations when using default nest
+  string: indent().call(str, nest)
+
+v0.6.1  --  2011.08.08
+* Added TAD test suite to devDependencies, configured test commands.
+  Tests can be run with 'make test' or 'npm test'
+
+v0.6.0  --  2011.08.07
+New methods:
+* Array: clone, compact (in place)
+* Date: format, duration, clone, monthDaysCount, day.floor, month.floor,
+  year.floor
+* Function: getApplyArg, , ncurry, rncurry, hold, cache, log
+* List: findSameStartLength, shiftSame, peek, isListObject
+* Number: pad
+* Object: sameType, toString, mapToArray, mergeDeep, toDescriptor,
+  toDescriptors, invoke
+* String: startsWith, endsWith, indent, trimLeftStr, trimRightStr, pad, format
+
+Fixed:
+* Object.extend does now prototypal extend as exptected
+* Object.merge now tries to overwrite only configurable properties
+* Function.flip
+
+Improved:
+* Faster List.toArray
+* Better global retrieval
+* Functionalized all Function methods
+* Renamed bindApply and bindCall to applyBind and callBind
+* Removed Function.inherit (as it's unintuitive curry clone)
+* Straightforward logic in Function.k
+* Fixed naming of some tests files (letter case issue)
+* Renamed Function.saturate into Function.lock
+* String.dashToCamelCase digits support
+* Strings now considered as List objects
+* Improved List.compact
+* Concise logic for List.concat
+* Test wit TAD in clean ES5 context
+
+v0.5.1  --  2011.07.11
+* Function's bindBind, bindCall and bindApply now more versatile
+
+v0.5.0  --  2011.07.07
+* Removed Object.is and List.apply
+* Renamed Object.plain.is to Object.plain.isPlainObject (keep naming convention
+  consistent)
+* Improved documentation
+
+v0.4.0  --  2011.07.05
+* Take most functions on Object to Object.plain to keep them away from object
+  descriptors
+* Object functions with ES5 standard in mind (object descriptors)
+
+v0.3.0  --  2011.06.24
+* New functions
+* Consistent file naming (dash instead of camelCase)
+
+v0.2.1  --  2011.05.28
+* Renamed Functions.K and Function.S to to lowercase versions (use consistent
+  naming)
+
+v0.2.0  --  2011.05.28
+* Renamed Array folder to List (as its generic functions for array-like objects)
+* Added Makefile
+* Added various functions
+
+v0.1.0  --  2011.05.24
+* Initial version
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/LICENSE b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/LICENSE
new file mode 100644 (file)
index 0000000..de39071
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2011-2015 Mariusz Nowak (www.medikoo.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/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/README.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/README.md
new file mode 100644 (file)
index 0000000..11d8a34
--- /dev/null
@@ -0,0 +1,993 @@
+# es5-ext
+## ECMAScript 5 extensions
+### (with respect to ECMAScript 6 standard)
+
+Shims for upcoming ES6 standard and other goodies implemented strictly with ECMAScript conventions in mind.
+
+It's designed to be used in compliant ECMAScript 5 or ECMAScript 6 environments. Older environments are not supported, although most of the features should work with correct ECMAScript 5 shim on board.
+
+When used in ECMAScript 6 environment, native implementation (if valid) takes precedence over shims.
+
+### Installation
+
+       $ npm install es5-ext
+       
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+### Usage
+
+#### ECMAScript 6 features
+
+You can force ES6 features to be implemented in your environment, e.g. following will assign `from` function to `Array` (only if it's not implemented already).
+
+```javascript
+require('es5-ext/array/from/implement');
+Array.from('foo'); // ['f', 'o', 'o']
+```
+
+You can also access shims directly, without fixing native objects. Following will return native `Array.from` if it's available and fallback to shim if it's not.
+
+```javascript
+var aFrom = require('es5-ext/array/from');
+aFrom('foo'); // ['f', 'o', 'o']
+```
+
+If you want to use shim unconditionally (even if native implementation exists) do:
+
+```javascript
+var aFrom = require('es5-ext/array/from/shim');
+aFrom('foo'); // ['f', 'o', 'o']
+```
+
+##### List of ES6 shims
+
+It's about properties introduced with ES6 and those that have been updated in new spec.
+
+- `Array.from` -> `require('es5-ext/array/from')`
+- `Array.of` -> `require('es5-ext/array/of')`
+- `Array.prototype.concat` -> `require('es5-ext/array/#/concat')`
+- `Array.prototype.copyWithin` -> `require('es5-ext/array/#/copy-within')`
+- `Array.prototype.entries` -> `require('es5-ext/array/#/entries')`
+- `Array.prototype.fill` -> `require('es5-ext/array/#/fill')`
+- `Array.prototype.filter` -> `require('es5-ext/array/#/filter')`
+- `Array.prototype.find` -> `require('es5-ext/array/#/find')`
+- `Array.prototype.findIndex` -> `require('es5-ext/array/#/find-index')`
+- `Array.prototype.keys` -> `require('es5-ext/array/#/keys')`
+- `Array.prototype.map` -> `require('es5-ext/array/#/map')`
+- `Array.prototype.slice` -> `require('es5-ext/array/#/slice')`
+- `Array.prototype.splice` -> `require('es5-ext/array/#/splice')`
+- `Array.prototype.values` -> `require('es5-ext/array/#/values')`
+- `Array.prototype[@@iterator]` -> `require('es5-ext/array/#/@@iterator')`
+- `Math.acosh` -> `require('es5-ext/math/acosh')`
+- `Math.asinh` -> `require('es5-ext/math/asinh')`
+- `Math.atanh` -> `require('es5-ext/math/atanh')`
+- `Math.cbrt` -> `require('es5-ext/math/cbrt')`
+- `Math.clz32` -> `require('es5-ext/math/clz32')`
+- `Math.cosh` -> `require('es5-ext/math/cosh')`
+- `Math.exmp1` -> `require('es5-ext/math/expm1')`
+- `Math.fround` -> `require('es5-ext/math/fround')`
+- `Math.hypot` -> `require('es5-ext/math/hypot')`
+- `Math.imul` -> `require('es5-ext/math/imul')`
+- `Math.log1p` -> `require('es5-ext/math/log1p')`
+- `Math.log2` -> `require('es5-ext/math/log2')`
+- `Math.log10` -> `require('es5-ext/math/log10')`
+- `Math.sign` -> `require('es5-ext/math/sign')`
+- `Math.signh` -> `require('es5-ext/math/signh')`
+- `Math.tanh` -> `require('es5-ext/math/tanh')`
+- `Math.trunc` -> `require('es5-ext/math/trunc')`
+- `Number.EPSILON` -> `require('es5-ext/number/epsilon')`
+- `Number.MAX_SAFE_INTEGER` -> `require('es5-ext/number/max-safe-integer')`
+- `Number.MIN_SAFE_INTEGER` -> `require('es5-ext/number/min-safe-integer')`
+- `Number.isFinite` -> `require('es5-ext/number/is-finite')`
+- `Number.isInteger` -> `require('es5-ext/number/is-integer')`
+- `Number.isNaN` -> `require('es5-ext/number/is-nan')`
+- `Number.isSafeInteger` -> `require('es5-ext/number/is-safe-integer')`
+- `Object.assign` -> `require('es5-ext/object/assign')`
+- `Object.keys` -> `require('es5-ext/object/keys')`
+- `Object.setPrototypeOf` -> `require('es5-ext/object/set-prototype-of')`
+- `RegExp.prototype.match` -> `require('es5-ext/reg-exp/#/match')`
+- `RegExp.prototype.replace` -> `require('es5-ext/reg-exp/#/replace')`
+- `RegExp.prototype.search` -> `require('es5-ext/reg-exp/#/search')`
+- `RegExp.prototype.split` -> `require('es5-ext/reg-exp/#/split')`
+- `RegExp.prototype.sticky` -> Implement with `require('es5-ext/reg-exp/#/sticky/implement')`, use as function with `require('es5-ext/reg-exp/#/is-sticky')`
+- `RegExp.prototype.unicode` -> Implement with `require('es5-ext/reg-exp/#/unicode/implement')`, use as function with `require('es5-ext/reg-exp/#/is-unicode')`
+- `String.fromCodePoint` -> `require('es5-ext/string/from-code-point')`
+- `String.raw` -> `require('es5-ext/string/raw')`
+- `String.prototype.codePointAt` -> `require('es5-ext/string/#/code-point-at')`
+- `String.prototype.contains` -> `require('es5-ext/string/#/contains')`
+- `String.prototype.endsWith` -> `require('es5-ext/string/#/ends-with')`
+- `String.prototype.normalize` -> `require('es5-ext/string/#/normalize')`
+- `String.prototype.repeat` -> `require('es5-ext/string/#/repeat')`
+- `String.prototype.startsWith` -> `require('es5-ext/string/#/starts-with')`
+- `String.prototype[@@iterator]` -> `require('es5-ext/string/#/@@iterator')`
+
+#### Non ECMAScript standard features
+
+__es5-ext__ provides also other utils, and implements them as if they were proposed for a standard. It mostly offers methods (not functions) which can directly be assigned to native prototypes:
+
+```javascript
+Object.defineProperty(Function.prototype, 'partial', { value: require('es5-ext/function/#/partial'),
+  configurable: true, enumerable: false, writable: true });
+Object.defineProperty(Array.prototype, 'flatten', { value: require('es5-ext/array/#/flatten'),
+  configurable: true, enumerable: false, writable: true });
+Object.defineProperty(String.prototype, 'capitalize', { value: require('es5-ext/string/#/capitalize'),
+  configurable: true, enumerable: false, writable: true });
+```
+
+See [es5-extend](https://github.com/wookieb/es5-extend#es5-extend), a great utility that automatically will extend natives for you. 
+
+__Important:__ Remember to __not__ extend natives in scope of generic reusable packages (e.g. ones you intend to publish to npm). Extending natives is fine __only__ if you're the _owner_ of the global scope, so e.g. in final project you lead development of.
+
+When you're in situation when native extensions are not good idea, then you should use methods indirectly:
+
+
+```javascript
+var flatten = require('es5-ext/array/#/flatten');
+
+flatten.call([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+for better convenience you can turn methods into functions:
+
+
+```javascript
+var call = Function.prototype.call
+var flatten = call.bind(require('es5-ext/array/#/flatten'));
+
+flatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+You can configure custom toolkit (like [underscorejs](http://underscorejs.org/)), and use it throughout your application
+
+```javascript
+var util = {};
+util.partial = call.bind(require('es5-ext/function/#/partial'));
+util.flatten = call.bind(require('es5-ext/array/#/flatten'));
+util.startsWith = call.bind(require('es5-ext/string/#/starts-with'));
+
+util.flatten([1, [2, [3, 4]]]); // [1, 2, 3, 4]
+```
+
+As with native ones most methods are generic and can be run on any type of object.
+
+## API
+
+### Global extensions
+
+#### global _(es5-ext/global)_
+
+Object that represents global scope
+
+### Array Constructor extensions
+
+#### from(arrayLike[, mapFn[, thisArg]]) _(es5-ext/array/from)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from).  
+Returns array representation of _iterable_ or _arrayLike_. If _arrayLike_ is an instance of array, its copy is returned.
+
+#### generate([length[, …fill]]) _(es5-ext/array/generate)_
+
+Generate an array of pre-given _length_ built of repeated arguments.
+
+#### isPlainArray(x) _(es5-ext/array/is-plain-array)_
+
+Returns true if object is plain array (not instance of one of the Array's extensions).
+
+#### of([…items]) _(es5-ext/array/of)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.of).  
+Create an array from given arguments.
+
+#### toArray(obj) _(es5-ext/array/to-array)_
+
+Returns array representation of `obj`. If `obj` is already an array, `obj` is returned back.
+
+#### validArray(obj) _(es5-ext/array/valid-array)_
+
+Returns `obj` if it's an array, otherwise throws `TypeError`
+
+### Array Prototype extensions
+
+#### arr.binarySearch(compareFn) _(es5-ext/array/#/binary-search)_
+
+In __sorted__ list search for index of item for which _compareFn_ returns value closest to _0_.  
+It's variant of binary search algorithm
+
+#### arr.clear() _(es5-ext/array/#/clear)_
+
+Clears the array
+
+#### arr.compact() _(es5-ext/array/#/compact)_
+
+Returns a copy of the context with all non-values (`null` or `undefined`) removed.
+
+#### arr.concat() _(es5-ext/array/#/concat)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.concat).  
+ES6's version of `concat`. Supports `isConcatSpreadable` symbol, and returns array of same type as the context.
+
+#### arr.contains(searchElement[, position]) _(es5-ext/array/#/contains)_
+
+Whether list contains the given value.
+
+#### arr.copyWithin(target, start[, end]) _(es5-ext/array/#/copy-within)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.copywithin).  
+
+#### arr.diff(other) _(es5-ext/array/#/diff)_
+
+Returns the array of elements that are present in context list but not present in other list.
+
+#### arr.eIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-index-of)_
+
+_egal_ version of `indexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision
+
+#### arr.eLastIndexOf(searchElement[, fromIndex]) _(es5-ext/array/#/e-last-index-of)_
+
+_egal_ version of `lastIndexOf` method. [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) logic is used for comparision
+
+#### arr.entries() _(es5-ext/array/#/entries)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.entries).  
+Returns iterator object, which traverses the array. Each value is represented with an array, where first value is an index and second is corresponding to index value.
+
+#### arr.exclusion([…lists]]) _(es5-ext/array/#/exclusion)_
+
+Returns the array of elements that are found only in one of the lists (either context list or list provided in arguments).
+
+#### arr.fill(value[, start, end]) _(es5-ext/array/#/fill)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.fill).  
+
+#### arr.filter(callback[, thisArg]) _(es5-ext/array/#/filter)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.filter).  
+ES6's version of `filter`, returns array of same type as the context.
+
+#### arr.find(predicate[, thisArg]) _(es5-ext/array/#/find)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.find).  
+Return first element for which given function returns true
+
+#### arr.findIndex(predicate[, thisArg]) _(es5-ext/array/#/find-index)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.findindex).  
+Return first index for which given function returns true
+
+#### arr.first() _(es5-ext/array/#/first)_
+
+Returns value for first defined index
+
+#### arr.firstIndex() _(es5-ext/array/#/first-index)_
+
+Returns first declared index of the array
+
+#### arr.flatten() _(es5-ext/array/#/flatten)_
+
+Returns flattened version of the array
+
+#### arr.forEachRight(cb[, thisArg]) _(es5-ext/array/#/for-each-right)_
+
+`forEach` starting from last element
+
+#### arr.group(cb[, thisArg]) _(es5-ext/array/#/group)_
+
+Group list elements by value returned by _cb_ function
+
+#### arr.indexesOf(searchElement[, fromIndex]) _(es5-ext/array/#/indexes-of)_
+
+Returns array of all indexes of given value
+
+#### arr.intersection([…lists]) _(es5-ext/array/#/intersection)_
+
+Computes the array of values that are the intersection of all lists (context list and lists given in arguments)
+
+#### arr.isCopy(other) _(es5-ext/array/#/is-copy)_
+
+Returns true if both context and _other_ lists have same content
+
+#### arr.isUniq() _(es5-ext/array/#/is-uniq)_
+
+Returns true if all values in array are unique
+
+#### arr.keys() _(es5-ext/array/#/keys)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.keys).  
+Returns iterator object, which traverses all array indexes.
+
+#### arr.last() _(es5-ext/array/#/last)_
+
+Returns value of last defined index
+
+#### arr.lastIndex() _(es5-ext/array/#/last)_
+
+Returns last defined index of the array
+
+#### arr.map(callback[, thisArg]) _(es5-ext/array/#/map)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.map).  
+ES6's version of `map`, returns array of same type as the context.
+
+#### arr.remove(value[, …valuen]) _(es5-ext/array/#/remove)_
+
+Remove values from the array
+
+#### arr.separate(sep) _(es5-ext/array/#/separate)_
+
+Returns array with items separated with `sep` value
+
+#### arr.slice(callback[, thisArg]) _(es5-ext/array/#/slice)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.slice).  
+ES6's version of `slice`, returns array of same type as the context.
+
+#### arr.someRight(cb[, thisArg]) _(es5-ext/array/#/someRight)_
+
+`some` starting from last element
+
+#### arr.splice(callback[, thisArg]) _(es5-ext/array/#/splice)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.splice).  
+ES6's version of `splice`, returns array of same type as the context.
+
+#### arr.uniq() _(es5-ext/array/#/uniq)_
+
+Returns duplicate-free version of the array
+
+#### arr.values() _(es5-ext/array/#/values)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.values).  
+Returns iterator object which traverses all array values.
+
+#### arr[@@iterator] _(es5-ext/array/#/@@iterator)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype-@@iterator).  
+Returns iterator object which traverses all array values.
+
+### Boolean Constructor extensions
+
+#### isBoolean(x) _(es5-ext/boolean/is-boolean)_
+
+Whether value is boolean
+
+### Date Constructor extensions
+
+#### isDate(x) _(es5-ext/date/is-date)_
+
+Whether value is date instance
+
+#### validDate(x) _(es5-ext/date/valid-date)_
+
+If given object is not date throw TypeError in other case return it.
+
+### Date Prototype extensions
+
+#### date.copy(date) _(es5-ext/date/#/copy)_
+
+Returns a copy of the date object
+
+#### date.daysInMonth() _(es5-ext/date/#/days-in-month)_
+
+Returns number of days of date's month
+
+#### date.floorDay() _(es5-ext/date/#/floor-day)_
+
+Sets the date time to 00:00:00.000
+
+#### date.floorMonth() _(es5-ext/date/#/floor-month)_
+
+Sets date day to 1 and date time to 00:00:00.000
+
+#### date.floorYear() _(es5-ext/date/#/floor-year)_
+
+Sets date month to 0, day to 1 and date time to 00:00:00.000
+
+#### date.format(pattern) _(es5-ext/date/#/format)_
+
+Formats date up to given string. Supported patterns:
+
+* `%Y` - Year with century, 1999, 2003
+* `%y` - Year without century, 99, 03
+* `%m` - Month, 01..12
+* `%d` - Day of the month 01..31
+* `%H` - Hour (24-hour clock), 00..23
+* `%M` - Minute, 00..59
+* `%S` - Second, 00..59
+* `%L` - Milliseconds, 000..999
+
+### Error Constructor extensions
+
+#### custom(message/*, code, ext*/) _(es5-ext/error/custom)_
+
+Creates custom error object, optinally extended with `code` and other extension properties (provided with `ext` object)  
+
+#### isError(x) _(es5-ext/error/is-error)_
+
+Whether value is an error (instance of `Error`).  
+
+#### validError(x) _(es5-ext/error/valid-error)_
+
+If given object is not error throw TypeError in other case return it.
+
+### Error Prototype extensions
+
+#### err.throw() _(es5-ext/error/#/throw)_
+
+Throws error
+
+### Function Constructor extensions
+
+Some of the functions were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele
+
+#### constant(x) _(es5-ext/function/constant)_
+
+Returns a constant function that returns pregiven argument
+
+_k(x)(y)  =def  x_
+
+#### identity(x) _(es5-ext/function/identity)_
+
+Identity function. Returns first argument
+
+_i(x)  =def  x_
+
+#### invoke(name[, …args]) _(es5-ext/function/invoke)_
+
+Returns a function that takes an object as an argument, and applies object's
+_name_ method to arguments.  
+_name_ can be name of the method or method itself.
+
+_invoke(name, …args)(object, …args2)  =def  object\[name\]\(…args, …args2\)_
+
+#### isArguments(x) _(es5-ext/function/is-arguments)_
+
+Whether value is arguments object
+
+#### isFunction(arg) _(es5-ext/function/is-function)_
+
+Wether value is instance of function
+
+#### noop() _(es5-ext/function/noop)_
+
+No operation function
+
+#### pluck(name) _(es5-ext/function/pluck)_
+
+Returns a function that takes an object, and returns the value of its _name_
+property
+
+_pluck(name)(obj)  =def  obj[name]_
+
+#### validFunction(arg) _(es5-ext/function/valid-function)_
+
+If given object is not function throw TypeError in other case return it.
+
+### Function Prototype extensions
+
+Some of the methods were inspired by [Functional JavaScript](http://osteele.com/sources/javascript/functional/) project by Olivier Steele
+
+#### fn.compose([…fns]) _(es5-ext/function/#/compose)_
+
+Applies the functions in reverse argument-list order.
+
+_f1.compose(f2, f3, f4)(…args)  =def  f1(f2(f3(f4(…arg))))_
+
+#### fn.copy() _(es5-ext/function/#/copy)_
+
+Produces copy of given function
+
+#### fn.curry([n]) _(es5-ext/function/#/curry)_
+
+Invoking the function returned by this function only _n_ arguments are passed to the underlying function. If the underlying function is not saturated, the result is a function that passes all its arguments to the underlying function.  
+If _n_ is not provided then it defaults to context function length
+
+_f.curry(4)(arg1, arg2)(arg3)(arg4)  =def  f(arg1, args2, arg3, arg4)_
+
+#### fn.lock([…args]) _(es5-ext/function/#/lock)_
+
+Returns a function that applies the underlying function to _args_, and ignores its own arguments.
+
+_f.lock(…args)(…args2)  =def  f(…args)_
+
+_Named after it's counterpart in Google Closure_
+
+#### fn.not() _(es5-ext/function/#/not)_
+
+Returns a function that returns boolean negation of value returned by underlying function.
+
+_f.not()(…args)  =def !f(…args)_
+
+#### fn.partial([…args]) _(es5-ext/function/#/partial)_
+
+Returns a function that when called will behave like context function called with initially passed arguments. If more arguments are suplilied, they are appended to initial args.
+
+_f.partial(…args1)(…args2)  =def  f(…args1, …args2)_
+
+#### fn.spread() _(es5-ext/function/#/spread)_
+
+Returns a function that applies underlying function with first list argument
+
+_f.match()(args)  =def  f.apply(null, args)_
+
+#### fn.toStringTokens() _(es5-ext/function/#/to-string-tokens)_
+
+Serializes function into two (arguments and body) string tokens. Result is plain object with `args` and `body` properties.
+
+### Math extensions
+
+#### acosh(x) _(es5-ext/math/acosh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.acosh).  
+
+#### asinh(x) _(es5-ext/math/asinh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.asinh).  
+
+#### atanh(x) _(es5-ext/math/atanh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.atanh).  
+
+#### cbrt(x) _(es5-ext/math/cbrt)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cbrt).  
+
+#### clz32(x) _(es5-ext/math/clz32)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.clz32).  
+
+#### cosh(x) _(es5-ext/math/cosh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.cosh).  
+
+#### expm1(x) _(es5-ext/math/expm1)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.expm1).  
+
+#### fround(x) _(es5-ext/math/fround)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.fround).  
+
+#### hypot([…values]) _(es5-ext/math/hypot)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.hypot).  
+
+#### imul(x, y) _(es5-ext/math/imul)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.imul).  
+
+#### log1p(x) _(es5-ext/math/log1p)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log1p).  
+
+#### log2(x) _(es5-ext/math/log2)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log2).  
+
+#### log10(x) _(es5-ext/math/log10)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.log10).  
+
+#### sign(x) _(es5-ext/math/sign)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sign).  
+
+#### sinh(x) _(es5-ext/math/sinh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.sinh).  
+
+#### tanh(x) _(es5-ext/math/tanh)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.tanh).  
+
+#### trunc(x) _(es5-ext/math/trunc)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.trunc).  
+
+### Number Constructor extensions
+
+#### EPSILON _(es5-ext/number/epsilon)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.epsilon).  
+
+The difference between 1 and the smallest value greater than 1 that is representable as a Number value, which is approximately 2.2204460492503130808472633361816 x 10-16.
+
+#### isFinite(x) _(es5-ext/number/is-finite)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite).  
+Whether value is finite. Differs from global isNaN that it doesn't do type coercion.
+
+#### isInteger(x) _(es5-ext/number/is-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isinteger).  
+Whether value is integer.
+
+#### isNaN(x) _(es5-ext/number/is-nan)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isnan).  
+Whether value is NaN. Differs from global isNaN that it doesn't do type coercion.
+
+#### isNumber(x) _(es5-ext/number/is-number)_
+
+Whether given value is number
+
+#### isSafeInteger(x) _(es5-ext/number/is-safe-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.issafeinteger).  
+
+#### MAX_SAFE_INTEGER _(es5-ext/number/max-safe-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.maxsafeinteger).  
+The value of Number.MAX_SAFE_INTEGER is 9007199254740991.
+
+#### MIN_SAFE_INTEGER _(es5-ext/number/min-safe-integer)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.minsafeinteger).  
+The value of Number.MIN_SAFE_INTEGER is -9007199254740991 (253-1).
+
+#### toInteger(x) _(es5-ext/number/to-integer)_
+
+Converts value to integer
+
+#### toPosInteger(x) _(es5-ext/number/to-pos-integer)_
+
+Converts value to positive integer. If provided value is less than 0, then 0 is returned
+
+#### toUint32(x) _(es5-ext/number/to-uint32)_
+
+Converts value to unsigned 32 bit integer. This type is used for array lengths.
+See: http://www.2ality.com/2012/02/js-integers.html
+
+### Number Prototype extensions
+
+#### num.pad(length[, precision]) _(es5-ext/number/#/pad)_
+
+Pad given number with zeros. Returns string
+
+### Object Constructor extensions
+
+#### assign(target, source[, …sourcen]) _(es5-ext/object/assign)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).  
+Extend _target_ by enumerable own properties of other objects. If properties are already set on target object, they will be overwritten.
+
+#### clear(obj) _(es5-ext/object/clear)_
+
+Remove all enumerable own properties of the object
+
+#### compact(obj) _(es5-ext/object/compact)_
+
+Returns copy of the object with all enumerable properties that have no falsy values
+
+#### compare(obj1, obj2) _(es5-ext/object/compare)_
+
+Universal cross-type compare function. To be used for e.g. array sort.
+
+#### copy(obj) _(es5-ext/object/copy)_
+
+Returns copy of the object with all enumerable properties.
+
+#### copyDeep(obj) _(es5-ext/object/copy-deep)_
+
+Returns deep copy of the object with all enumerable properties.
+
+#### count(obj) _(es5-ext/object/count)_
+
+Counts number of enumerable own properties on object
+
+#### create(obj[, properties]) _(es5-ext/object/create)_
+
+`Object.create` alternative that provides workaround for [V8 issue](http://code.google.com/p/v8/issues/detail?id=2804).
+
+When `null` is provided as a prototype, it's substituted with specially prepared object that derives from Object.prototype but has all Object.prototype properties shadowed with undefined.
+
+It's quirky solution that allows us to have plain objects with no truthy properties but with turnable prototype.
+
+Use only for objects that you plan to switch prototypes of and be aware of limitations of this workaround.
+
+#### eq(x, y) _(es5-ext/object/eq)_
+
+Whether two values are equal, using [_SameValueZero_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.
+
+#### every(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/every)_
+
+Analogous to Array.prototype.every. Returns true if every key-value pair in this object satisfies the provided testing function.  
+Optionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### filter(obj, cb[, thisArg]) _(es5-ext/object/filter)_
+
+Analogous to Array.prototype.filter. Returns new object with properites for which _cb_ function returned truthy value.
+
+#### firstKey(obj) _(es5-ext/object/first-key)_
+
+Returns first enumerable key of the object, as keys are unordered by specification, it can be any key of an object.
+
+#### flatten(obj) _(es5-ext/object/flatten)_
+
+Returns new object, with flatten properties of input object
+
+_flatten({ a: { b: 1 }, c: { d: 1 } })  =def  { b: 1, d: 1 }_
+
+#### forEach(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/for-each)_
+
+Analogous to Array.prototype.forEach. Calls a function for each key-value pair found in object
+Optionally _compareFn_ can be provided which assures that properties are iterated in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### getPropertyNames() _(es5-ext/object/get-property-names)_
+
+Get all (not just own) property names of the object
+
+#### is(x, y) _(es5-ext/object/is)_
+
+Whether two values are equal, using [_SameValue_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) algorithm.
+
+#### isArrayLike(x) _(es5-ext/object/is-array-like)_
+
+Whether object is array-like object
+
+#### isCopy(x, y) _(es5-ext/object/is-copy)_
+
+Two values are considered a copy of same value when all of their own enumerable properties have same values.
+
+#### isCopyDeep(x, y) _(es5-ext/object/is-copy-deep)_
+
+Deep comparision of objects
+
+#### isEmpty(obj) _(es5-ext/object/is-empty)_
+
+True if object doesn't have any own enumerable property
+
+#### isObject(arg) _(es5-ext/object/is-object)_
+
+Whether value is not primitive
+
+#### isPlainObject(arg) _(es5-ext/object/is-plain-object)_
+
+Whether object is plain object, its protototype should be Object.prototype and it cannot be host object.
+
+#### keyOf(obj, searchValue) _(es5-ext/object/key-of)_
+
+Search object for value
+
+#### keys(obj) _(es5-ext/object/keys)_
+
+[_Updated with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys).  
+ES6's version of `keys`, doesn't throw on primitive input
+
+#### map(obj, cb[, thisArg]) _(es5-ext/object/map)_
+
+Analogous to Array.prototype.map. Creates a new object with properties which values are results of calling a provided function on every key-value pair in this object.
+
+#### mapKeys(obj, cb[, thisArg]) _(es5-ext/object/map-keys)_
+
+Create new object with same values, but remapped keys
+
+#### mixin(target, source) _(es5-ext/object/mixin)_
+
+Extend _target_ by all own properties of other objects. Properties found in both objects will be overwritten (unless they're not configurable and cannot be overwritten).
+_It was for a moment part of ECMAScript 6 draft._
+
+#### mixinPrototypes(target, …source]) _(es5-ext/object/mixin-prototypes)_
+
+Extends _target_, with all source and source's prototype properties.
+Useful as an alternative for `setPrototypeOf` in environments in which it cannot be shimmed (no `__proto__` support).
+
+#### normalizeOptions(options) _(es5-ext/object/normalize-options)_
+
+Normalizes options object into flat plain object.  
+
+Useful for functions in which we either need to keep options object for future reference or need to modify it for internal use.
+
+- It never returns input `options` object back (always a copy is created)
+- `options` can be undefined in such case empty plain object is returned.
+- Copies all enumerable properties found down prototype chain.
+
+#### primitiveSet([…names]) _(es5-ext/object/primitive-set)_
+
+Creates `null` prototype based plain object, and sets on it all property names provided in arguments to true.
+
+#### safeTraverse(obj[, …names]) _(es5-ext/object/safe-traverse)_
+
+Safe navigation of object properties. See http://wiki.ecmascript.org/doku.php?id=strawman:existential_operator
+
+#### serialize(value) _(es5-ext/object/serialize)_
+
+Serialize value into string. Differs from [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) that it serializes also dates, functions and regular expresssions.
+
+#### setPrototypeOf(object, proto) _(es5-ext/object/set-prototype-of)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.setprototypeof).  
+If native version is not provided, it depends on existence of `__proto__` functionality, if it's missing, `null` instead of function is exposed.
+
+#### some(obj, cb[, thisArg[, compareFn]]) _(es5-ext/object/some)_
+
+Analogous to Array.prototype.some Returns true if any key-value pair satisfies the provided
+testing function.  
+Optionally _compareFn_ can be provided which assures that keys are tested in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### toArray(obj[, cb[, thisArg[, compareFn]]]) _(es5-ext/object/to-array)_
+
+Creates an array of results of calling a provided function on every key-value pair in this object.  
+Optionally _compareFn_ can be provided which assures that results are added in given order. If provided _compareFn_ is equal to `true`, then order is alphabetical (by key).
+
+#### unserialize(str) _(es5-ext/object/unserialize)_
+
+Userializes value previously serialized with [serialize](#serializevalue-es5-extobjectserialize)
+
+#### validCallable(x) _(es5-ext/object/valid-callable)_
+
+If given object is not callable throw TypeError in other case return it.
+
+#### validObject(x) _(es5-ext/object/valid-object)_
+
+Throws error if given value is not an object, otherwise it is returned.
+
+#### validValue(x) _(es5-ext/object/valid-value)_
+
+Throws error if given value is `null` or `undefined`, otherwise returns value.
+
+### RegExp Constructor extensions
+
+#### escape(str) _(es5-ext/reg-exp/escape)_
+
+Escapes string to be used in regular expression
+
+#### isRegExp(x) _(es5-ext/reg-exp/is-reg-exp)_
+
+Whether object is regular expression
+
+#### validRegExp(x) _(es5-ext/reg-exp/valid-reg-exp)_
+
+If object is regular expression it is returned, otherwise TypeError is thrown.
+
+### RegExp Prototype extensions
+
+#### re.isSticky(x) _(es5-ext/reg-exp/#/is-sticky)_
+
+Whether regular expression has `sticky` flag.
+
+It's to be used as counterpart to [regExp.sticky](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.sticky) if it's not implemented.
+
+#### re.isUnicode(x) _(es5-ext/reg-exp/#/is-unicode)_
+
+Whether regular expression has `unicode` flag.
+
+It's to be used as counterpart to [regExp.unicode](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.unicode) if it's not implemented.
+
+#### re.match(string) _(es5-ext/reg-exp/#/match)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.match).  
+
+#### re.replace(string, replaceValue) _(es5-ext/reg-exp/#/replace)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.replace).  
+
+#### re.search(string) _(es5-ext/reg-exp/#/search)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.search).  
+
+#### re.split(string) _(es5-ext/reg-exp/#/search)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.split).  
+
+#### re.sticky _(es5-ext/reg-exp/#/sticky/implement)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.sticky).  
+It's a getter, so only `implement` and `is-implemented` modules are provided.
+
+#### re.unicode _(es5-ext/reg-exp/#/unicode/implement)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-regexp.prototype.unicode).  
+It's a getter, so only `implement` and `is-implemented` modules are provided.
+
+### String Constructor extensions
+
+#### formatMethod(fMap) _(es5-ext/string/format-method)_
+
+Creates format method. It's used e.g. to create `Date.prototype.format` method
+
+#### fromCodePoint([…codePoints]) _(es5-ext/string/from-code-point)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.fromcodepoint)
+
+#### isString(x) _(es5-ext/string/is-string)_
+
+Whether object is string
+
+#### randomUniq() _(es5-ext/string/random-uniq)_
+
+Returns randomly generated id, with guarantee of local uniqueness (no same id will be returned twice)
+
+#### raw(callSite[, …substitutions]) _(es5-ext/string/raw)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.raw)
+
+### String Prototype extensions
+
+#### str.at(pos) _(es5-ext/string/#/at)_
+
+_Proposed for ECMAScript 6/7 standard, but not (yet) in a draft_
+
+Returns a string at given position in Unicode-safe manner.
+Based on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.at).
+
+#### str.camelToHyphen() _(es5-ext/string/#/camel-to-hyphen)_
+
+Convert camelCase string to hyphen separated, e.g. one-two-three -> oneTwoThree.
+Useful when converting names from js property convention into filename convention.
+
+#### str.capitalize() _(es5-ext/string/#/capitalize)_
+
+Capitalize first character of a string
+
+#### str.caseInsensitiveCompare(str) _(es5-ext/string/#/case-insensitive-compare)_
+
+Case insensitive compare
+
+#### str.codePointAt(pos) _(es5-ext/string/#/code-point-at)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.codepointat)
+
+Based on [implementation by Mathias Bynens](https://github.com/mathiasbynens/String.prototype.codePointAt).
+
+#### str.contains(searchString[, position]) _(es5-ext/string/#/contains)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.contains)
+
+Whether string contains given string.
+
+#### str.endsWith(searchString[, endPosition]) _(es5-ext/string/#/ends-with)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.endswith).  
+Whether strings ends with given string
+
+#### str.hyphenToCamel() _(es5-ext/string/#/hyphen-to-camel)_
+
+Convert hyphen separated string to camelCase, e.g. one-two-three -> oneTwoThree.
+Useful when converting names from filename convention to js property name convention.
+
+#### str.indent(str[, count]) _(es5-ext/string/#/indent)_
+
+Indents each line with provided _str_ (if _count_ given then _str_ is repeated _count_ times).
+
+#### str.last() _(es5-ext/string/#/last)_
+
+Return last character
+
+#### str.normalize([form]) _(es5-ext/string/#/normalize)_
+
+[_Introduced with ECMAScript 6_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize).  
+Returns the Unicode Normalization Form of a given string.  
+Based on Matsuza's version. Code used for integrated shim can be found at [github.com/walling/unorm](https://github.com/walling/unorm/blob/master/lib/unorm.js)
+
+#### str.pad(fill[, length]) _(es5-ext/string/#/pad)_
+
+Pad string with _fill_.
+If _length_ si given than _fill_ is reapated _length_ times.
+If _length_ is negative then pad is applied from right.
+
+#### str.repeat(n) _(es5-ext/string/#/repeat)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.repeat).  
+Repeat given string _n_ times
+
+#### str.plainReplace(search, replace) _(es5-ext/string/#/plain-replace)_
+
+Simple `replace` version. Doesn't support regular expressions. Replaces just first occurrence of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).
+
+#### str.plainReplaceAll(search, replace) _(es5-ext/string/#/plain-replace-all)_
+
+Simple `replace` version. Doesn't support regular expressions. Replaces all occurrences of search string. Doesn't support insert patterns, therefore it is safe to replace text with text obtained programmatically (there's no need for additional _$_ characters escape in such case).
+
+#### str.startsWith(searchString[, position]) _(es5-ext/string/#/starts-with)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.startswith).  
+Whether strings starts with given string
+
+#### str[@@iterator] _(es5-ext/string/#/@@iterator)_
+
+[_Introduced with ECMAScript 6_](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype-@@iterator).  
+Returns iterator object which traverses all string characters (with respect to unicode symbols)
+
+### Tests [![Build Status](https://travis-ci.org/medikoo/es5-ext.png)](https://travis-ci.org/medikoo/es5-ext)
+
+       $ npm test
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..0f714a1
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, require('es6-symbol').iterator, { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..a694626
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.prototype[require('es6-symbol').iterator] : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..72eb1f8
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function () {
+       var arr = ['foo', 1], iterator, result;
+       if (typeof arr[iteratorSymbol] !== 'function') return false;
+       iterator = arr[iteratorSymbol]();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== 'foo') return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..ff295df
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('../values/shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js
new file mode 100644 (file)
index 0000000..d8343ce
--- /dev/null
@@ -0,0 +1,9 @@
+// Used internally to sort array of lists by length
+
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer');
+
+module.exports = function (a, b) {
+       return toPosInt(a.length) - toPosInt(b.length);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js
new file mode 100644 (file)
index 0000000..8eb4567
--- /dev/null
@@ -0,0 +1,28 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , floor    = Math.floor;
+
+module.exports = function (compareFn) {
+       var length, low, high, middle;
+
+       value(this);
+       callable(compareFn);
+
+       length = toPosInt(this.length);
+       low = 0;
+       high = length - 1;
+
+       while (low <= high) {
+               middle = floor((low + high) / 2);
+               if (compareFn(this[middle]) < 0) high = middle - 1;
+               else low = middle + 1;
+       }
+
+       if (high < 0) return 0;
+       if (high >= length) return length - 1;
+       return high;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js
new file mode 100644 (file)
index 0000000..3587bdf
--- /dev/null
@@ -0,0 +1,12 @@
+// Inspired by Google Closure:
+// http://closure-library.googlecode.com/svn/docs/
+// closure_goog_array_array.js.html#goog.array.clear
+
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function () {
+       value(this).length = 0;
+       return this;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js
new file mode 100644 (file)
index 0000000..d529d5a
--- /dev/null
@@ -0,0 +1,9 @@
+// Inspired by: http://documentcloud.github.com/underscore/#compact
+
+'use strict';
+
+var filter = Array.prototype.filter;
+
+module.exports = function () {
+       return filter.call(this, function (val) { return val != null; });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js
new file mode 100644 (file)
index 0000000..80c67cb
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'concat', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js
new file mode 100644 (file)
index 0000000..db205ea
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.concat : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js
new file mode 100644 (file)
index 0000000..cab8bc9
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).concat('foo') instanceof SubArray;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js
new file mode 100644 (file)
index 0000000..8b28e4a
--- /dev/null
@@ -0,0 +1,39 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+  , toPosInt     = require('../../../number/to-pos-integer')
+  , isObject     = require('../../../object/is-object')
+
+  , isArray = Array.isArray, concat = Array.prototype.concat
+  , forEach = Array.prototype.forEach
+
+  , isSpreadable;
+
+isSpreadable = function (value) {
+       if (!value) return false;
+       if (!isObject(value)) return false;
+       if (value['@@isConcatSpreadable'] !== undefined) {
+               return Boolean(value['@@isConcatSpreadable']);
+       }
+       return isArray(value);
+};
+
+module.exports = function (item/*, …items*/) {
+       var result;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return concat.apply(this, arguments);
+       }
+       result = new this.constructor(this.length);
+       forEach.call(this, function (val, i) { result[i] = val; });
+       forEach.call(arguments, function (arg) {
+               var base;
+               if (isSpreadable(arg)) {
+                       base = result.length;
+                       result.length += toPosInt(arg.length);
+                       forEach.call(arg, function (val, i) { result[base + i] = val; });
+                       return;
+               }
+               result.push(arg);
+       });
+       return result;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js
new file mode 100644 (file)
index 0000000..4a2f9f6
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var indexOf = require('./e-index-of');
+
+module.exports = function (searchElement/*, position*/) {
+       return indexOf.call(this, searchElement, arguments[1]) > -1;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js
new file mode 100644 (file)
index 0000000..eedbad7
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'copyWithin',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js
new file mode 100644 (file)
index 0000000..bb89d0b
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.copyWithin : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js
new file mode 100644 (file)
index 0000000..8f17e06
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5];
+       if (typeof arr.copyWithin !== 'function') return false;
+       return String(arr.copyWithin(1, 3)) === '1,4,5,4,5';
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js
new file mode 100644 (file)
index 0000000..c0bfb8b
--- /dev/null
@@ -0,0 +1,39 @@
+// Taken from: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var toInteger  = require('../../../number/to-integer')
+  , toPosInt   = require('../../../number/to-pos-integer')
+  , validValue = require('../../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , max = Math.max, min = Math.min;
+
+module.exports = function (target, start/*, end*/) {
+       var o = validValue(this), end = arguments[2], l = toPosInt(o.length)
+         , to, from, fin, count, direction;
+
+       target = toInteger(target);
+       start = toInteger(start);
+       end = (end === undefined) ? l : toInteger(end);
+
+       to = target < 0 ? max(l + target, 0) : min(target, l);
+       from = start < 0 ? max(l + start, 0) : min(start, l);
+       fin = end < 0 ? max(l + end, 0) : min(end, l);
+       count = min(fin - from, l - to);
+       direction = 1;
+
+       if ((from < to) && (to < (from + count))) {
+               direction = -1;
+               from += count - 1;
+               to += count - 1;
+       }
+       while (count > 0) {
+               if (hasOwnProperty.call(o, from)) o[to] = o[from];
+               else delete o[from];
+               from += direction;
+               to += direction;
+               count -= 1;
+       }
+       return o;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js
new file mode 100644 (file)
index 0000000..a1f9541
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var value    = require('../../object/valid-value')
+  , contains = require('./contains')
+
+  , filter = Array.prototype.filter;
+
+module.exports = function (other) {
+       (value(this) && value(other));
+       return filter.call(this, function (item) {
+               return !contains.call(other, item);
+       });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js
new file mode 100644 (file)
index 0000000..80864d0
--- /dev/null
@@ -0,0 +1,29 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , indexOf = Array.prototype.indexOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , abs = Math.abs, floor = Math.floor;
+
+module.exports = function (searchElement/*, fromIndex*/) {
+       var i, l, fromIndex, val;
+       if (searchElement === searchElement) { //jslint: ignore
+               return indexOf.apply(this, arguments);
+       }
+
+       l = toPosInt(value(this).length);
+       fromIndex = arguments[1];
+       if (isNaN(fromIndex)) fromIndex = 0;
+       else if (fromIndex >= 0) fromIndex = floor(fromIndex);
+       else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
+
+       for (i = fromIndex; i < l; ++i) {
+               if (hasOwnProperty.call(this, i)) {
+                       val = this[i];
+                       if (val !== val) return i; //jslint: ignore
+               }
+       }
+       return -1;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js
new file mode 100644 (file)
index 0000000..4fc536b
--- /dev/null
@@ -0,0 +1,29 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , lastIndexOf = Array.prototype.lastIndexOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , abs = Math.abs, floor = Math.floor;
+
+module.exports = function (searchElement/*, fromIndex*/) {
+       var i, fromIndex, val;
+       if (searchElement === searchElement) { //jslint: ignore
+               return lastIndexOf.apply(this, arguments);
+       }
+
+       value(this);
+       fromIndex = arguments[1];
+       if (isNaN(fromIndex)) fromIndex = (toPosInt(this.length) - 1);
+       else if (fromIndex >= 0) fromIndex = floor(fromIndex);
+       else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
+
+       for (i = fromIndex; i >= 0; --i) {
+               if (hasOwnProperty.call(this, i)) {
+                       val = this[i];
+                       if (val !== val) return i; //jslint: ignore
+               }
+       }
+       return -1;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js
new file mode 100644 (file)
index 0000000..490de60
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'entries', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js
new file mode 100644 (file)
index 0000000..292792c
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.entries : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js
new file mode 100644 (file)
index 0000000..e186c17
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 'foo'], iterator, result;
+       if (typeof arr.entries !== 'function') return false;
+       iterator = arr.entries();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result || !result.value) return false;
+       if (result.value[0] !== 0) return false;
+       if (result.value[1] !== 1) return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js
new file mode 100644 (file)
index 0000000..c052b53
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array');
+module.exports = function () { return new ArrayIterator(this, 'key+value'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js
new file mode 100644 (file)
index 0000000..f08adc8
--- /dev/null
@@ -0,0 +1,27 @@
+'use strict';
+
+var value    = require('../../object/valid-value')
+  , aFrom    = require('../from')
+  , toArray  = require('../to-array')
+  , contains = require('./contains')
+  , byLength = require('./_compare-by-length')
+
+  , filter = Array.prototype.filter, push = Array.prototype.push;
+
+module.exports = function (/*…lists*/) {
+       var lists, seen, result;
+       if (!arguments.length) return aFrom(this);
+       push.apply(lists = [this], arguments);
+       lists.forEach(value);
+       seen = [];
+       result = [];
+       lists.sort(byLength).forEach(function (list) {
+               result = result.filter(function (item) {
+                       return !contains.call(list, item);
+               }).concat(filter.call(list, function (x) {
+                       return !contains.call(seen, x);
+               }));
+               push.apply(seen, toArray(list));
+       });
+       return result;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js
new file mode 100644 (file)
index 0000000..2251191
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'fill', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js
new file mode 100644 (file)
index 0000000..36c1f66
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.fill : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js
new file mode 100644 (file)
index 0000000..b8e5468
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5, 6];
+       if (typeof arr.fill !== 'function') return false;
+       return String(arr.fill(-1, -3)) === '1,2,3,-1,-1,-1';
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js
new file mode 100644 (file)
index 0000000..45823be
--- /dev/null
@@ -0,0 +1,21 @@
+// Taken from: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var toInteger  = require('../../../number/to-integer')
+  , toPosInt   = require('../../../number/to-pos-integer')
+  , validValue = require('../../../object/valid-value')
+
+  , max = Math.max, min = Math.min;
+
+module.exports = function (value/*, start, end*/) {
+       var o = validValue(this), start = arguments[1], end = arguments[2]
+         , l = toPosInt(o.length), relativeStart, i;
+
+       start = (start === undefined) ? 0 : toInteger(start);
+       end = (end === undefined) ? l : toInteger(end);
+
+       relativeStart = start < 0 ? max(l + start, 0) : min(start, l);
+       for (i = relativeStart; i < l && i < end; ++i) o[i] = value;
+       return o;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js
new file mode 100644 (file)
index 0000000..090c5f1
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'filter', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js
new file mode 100644 (file)
index 0000000..bcf0268
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.filter : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js
new file mode 100644 (file)
index 0000000..5577273
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe')
+
+  , pass = function () { return true; };
+
+module.exports = function () {
+       return (new SubArray()).filter(pass) instanceof SubArray;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js
new file mode 100644 (file)
index 0000000..b0116de
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+  , callable     = require('../../../object/valid-callable')
+
+  , isArray = Array.isArray, filter = Array.prototype.filter
+  , forEach = Array.prototype.forEach, call = Function.prototype.call;
+
+module.exports = function (callbackFn/*, thisArg*/) {
+       var result, thisArg, i;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return filter.apply(this, arguments);
+       }
+       callable(callbackFn);
+       thisArg = arguments[1];
+       result = new this.constructor();
+       i = 0;
+       forEach.call(this, function (val, j, self) {
+               if (call.call(callbackFn, thisArg, val, j, self)) result[i++] = val;
+       });
+       return result;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js
new file mode 100644 (file)
index 0000000..556cb84
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'findIndex',
+               { value: require('./shim'),
+                       configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js
new file mode 100644 (file)
index 0000000..03a987e
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.findIndex : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js
new file mode 100644 (file)
index 0000000..dbd3c81
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var fn = function (x) { return x > 3; };
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5, 6];
+       if (typeof arr.findIndex !== 'function') return false;
+       return arr.findIndex(fn) === 3;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js
new file mode 100644 (file)
index 0000000..957939f
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var callable = require('../../../object/valid-callable')
+  , value    = require('../../../object/valid-value')
+
+  , some = Array.prototype.some, apply = Function.prototype.apply;
+
+module.exports = function (predicate/*, thisArg*/) {
+       var k, self;
+       self = Object(value(this));
+       callable(predicate);
+
+       return some.call(self, function (value, index) {
+               if (apply.call(predicate, this, arguments)) {
+                       k = index;
+                       return true;
+               }
+               return false;
+       }, arguments[1]) ? k : -1;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js
new file mode 100644 (file)
index 0000000..0f37104
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'find', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js
new file mode 100644 (file)
index 0000000..96819d0
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.find : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js
new file mode 100644 (file)
index 0000000..cc7ec77
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var fn = function (x) { return x > 3; };
+
+module.exports = function () {
+       var arr = [1, 2, 3, 4, 5, 6];
+       if (typeof arr.find !== 'function') return false;
+       return arr.find(fn) === 4;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js
new file mode 100644 (file)
index 0000000..c7ee906
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var findIndex = require('../find-index/shim');
+
+module.exports = function (predicate/*, thisArg*/) {
+       var index = findIndex.apply(this, arguments);
+       return (index === -1) ? undefined : this[index];
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js
new file mode 100644 (file)
index 0000000..7a9e4c3
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+       var i, l;
+       if (!(l = toPosInt(value(this).length))) return null;
+       i = 0;
+       while (!hasOwnProperty.call(this, i)) {
+               if (++i === l) return null;
+       }
+       return i;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js
new file mode 100644 (file)
index 0000000..11df571
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var firstIndex = require('./first-index');
+
+module.exports = function () {
+       var i;
+       if ((i = firstIndex.call(this)) !== null) return this[i];
+       return undefined;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js
new file mode 100644 (file)
index 0000000..c95407d
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var isArray = Array.isArray, forEach = Array.prototype.forEach
+  , push = Array.prototype.push;
+
+module.exports = function flatten() {
+       var r = [];
+       forEach.call(this, function (x) {
+               push.apply(r, isArray(x) ? flatten.call(x) : [x]);
+       });
+       return r;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js
new file mode 100644 (file)
index 0000000..2f0ffae
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , call = Function.prototype.call;
+
+module.exports = function (cb/*, thisArg*/) {
+       var i, self, thisArg;
+
+       self = Object(value(this));
+       callable(cb);
+       thisArg = arguments[1];
+
+       for (i = toPosInt(self.length); i >= 0; --i) {
+               if (hasOwnProperty.call(self, i)) call.call(cb, thisArg, self[i], i, self);
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js
new file mode 100644 (file)
index 0000000..fbb178c
--- /dev/null
@@ -0,0 +1,23 @@
+// Inspired by Underscore's groupBy:
+// http://documentcloud.github.com/underscore/#groupBy
+
+'use strict';
+
+var callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , forEach = Array.prototype.forEach, apply = Function.prototype.apply;
+
+module.exports = function (cb/*, thisArg*/) {
+       var r;
+
+       (value(this) && callable(cb));
+
+       r = {};
+       forEach.call(this, function (v) {
+               var key = apply.call(cb, this, arguments);
+               if (!r.hasOwnProperty(key)) r[key] = [];
+               r[key].push(v);
+       }, arguments[1]);
+       return r;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js
new file mode 100644 (file)
index 0000000..97ef65c
--- /dev/null
@@ -0,0 +1,40 @@
+'use strict';
+
+module.exports = {
+       '@@iterator':   require('./@@iterator'),
+       binarySearch:   require('./binary-search'),
+       clear:          require('./clear'),
+       compact:        require('./compact'),
+       concat:         require('./concat'),
+       contains:       require('./contains'),
+       copyWithin:     require('./copy-within'),
+       diff:           require('./diff'),
+       eIndexOf:       require('./e-index-of'),
+       eLastIndexOf:   require('./e-last-index-of'),
+       entries:        require('./entries'),
+       exclusion:      require('./exclusion'),
+       fill:           require('./fill'),
+       filter:         require('./filter'),
+       find:           require('./find'),
+       findIndex:      require('./find-index'),
+       first:          require('./first'),
+       firstIndex:     require('./first-index'),
+       flatten:        require('./flatten'),
+       forEachRight:   require('./for-each-right'),
+       keys:           require('./keys'),
+       group:          require('./group'),
+       indexesOf:      require('./indexes-of'),
+       intersection:   require('./intersection'),
+       isCopy:         require('./is-copy'),
+       isUniq:         require('./is-uniq'),
+       last:           require('./last'),
+       lastIndex:      require('./last-index'),
+       map:            require('./map'),
+       remove:         require('./remove'),
+       separate:       require('./separate'),
+       slice:          require('./slice'),
+       someRight:      require('./some-right'),
+       splice:         require('./splice'),
+       uniq:           require('./uniq'),
+       values:         require('./values')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js
new file mode 100644 (file)
index 0000000..6b89157
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexOf = require('./e-index-of');
+
+module.exports = function (value/*, fromIndex*/) {
+       var r = [], i, fromIndex = arguments[1];
+       while ((i = indexOf.call(this, value, fromIndex)) !== -1) {
+               r.push(i);
+               fromIndex = i + 1;
+       }
+       return r;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js
new file mode 100644 (file)
index 0000000..fadcb52
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var value    = require('../../object/valid-value')
+  , contains = require('./contains')
+  , byLength = require('./_compare-by-length')
+
+  , filter = Array.prototype.filter, push = Array.prototype.push
+  , slice = Array.prototype.slice;
+
+module.exports = function (/*…list*/) {
+       var lists;
+       if (!arguments.length) slice.call(this);
+       push.apply(lists = [this], arguments);
+       lists.forEach(value);
+       lists.sort(byLength);
+       return lists.reduce(function (a, b) {
+               return filter.call(a, function (x) { return contains.call(b, x); });
+       });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js
new file mode 100644 (file)
index 0000000..ac7c79b
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , eq    = require('../../object/eq')
+  , value = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (other) {
+       var i, l;
+       (value(this) && value(other));
+       l = toPosInt(this.length);
+       if (l !== toPosInt(other.length)) return false;
+       for (i = 0; i < l; ++i) {
+               if (hasOwnProperty.call(this, i) !== hasOwnProperty.call(other, i)) {
+                       return false;
+               }
+               if (!eq(this[i], other[i])) return false;
+       }
+       return true;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js
new file mode 100644 (file)
index 0000000..b14f461
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexOf = require('./e-index-of')
+
+  , every = Array.prototype.every
+  , isFirst;
+
+isFirst = function (value, index) {
+       return indexOf.call(this, value) === index;
+};
+
+module.exports = function () { return every.call(this, isFirst, this); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js
new file mode 100644 (file)
index 0000000..e18e617
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'keys', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js
new file mode 100644 (file)
index 0000000..2f89cff
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.keys : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..06bd87b
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function () {
+       var arr = [1, 'foo'], iterator, result;
+       if (typeof arr.keys !== 'function') return false;
+       iterator = arr.keys();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== 0) return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js
new file mode 100644 (file)
index 0000000..83773f6
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array');
+module.exports = function () { return new ArrayIterator(this, 'key'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js
new file mode 100644 (file)
index 0000000..a191d6e
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var toPosInt = require('../../number/to-pos-integer')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function () {
+       var i, l;
+       if (!(l = toPosInt(value(this).length))) return null;
+       i = l - 1;
+       while (!hasOwnProperty.call(this, i)) {
+               if (--i === -1) return null;
+       }
+       return i;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js
new file mode 100644 (file)
index 0000000..bf9d2f2
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var lastIndex = require('./last-index');
+
+module.exports = function () {
+       var i;
+       if ((i = lastIndex.call(this)) !== null) return this[i];
+       return undefined;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js
new file mode 100644 (file)
index 0000000..3aabb87
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'map', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js
new file mode 100644 (file)
index 0000000..66f6660
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ?
+               Array.prototype.map : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js
new file mode 100644 (file)
index 0000000..c328b47
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var identity = require('../../../function/identity')
+  , SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).map(identity) instanceof SubArray;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js
new file mode 100644 (file)
index 0000000..2ee7313
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+  , callable     = require('../../../object/valid-callable')
+
+  , isArray = Array.isArray, map = Array.prototype.map
+  , forEach = Array.prototype.forEach, call = Function.prototype.call;
+
+module.exports = function (callbackFn/*, thisArg*/) {
+       var result, thisArg;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return map.apply(this, arguments);
+       }
+       callable(callbackFn);
+       thisArg = arguments[1];
+       result = new this.constructor(this.length);
+       forEach.call(this, function (val, i, self) {
+               result[i] = call.call(callbackFn, thisArg, val, i, self);
+       });
+       return result;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js
new file mode 100644 (file)
index 0000000..dcf8433
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexOf = require('./e-index-of')
+
+  , forEach = Array.prototype.forEach, splice = Array.prototype.splice;
+
+module.exports = function (item/*, …item*/) {
+       forEach.call(arguments, function (item) {
+               var index = indexOf.call(this, item);
+               if (index !== -1) splice.call(this, index, 1);
+       }, this);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js
new file mode 100644 (file)
index 0000000..dc974b8
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var forEach = Array.prototype.forEach;
+
+module.exports = function (sep) {
+       var result = [];
+       forEach.call(this, function (val, i) { result.push(val, sep); });
+       result.pop();
+       return result;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js
new file mode 100644 (file)
index 0000000..cd488a0
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'slice', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js
new file mode 100644 (file)
index 0000000..72200ca
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.prototype.slice : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js
new file mode 100644 (file)
index 0000000..ec1985e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).slice() instanceof SubArray;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js
new file mode 100644 (file)
index 0000000..2761a1a
--- /dev/null
@@ -0,0 +1,35 @@
+'use strict';
+
+var toInteger    = require('../../../number/to-integer')
+  , toPosInt     = require('../../../number/to-pos-integer')
+  , isPlainArray = require('../../is-plain-array')
+
+  , isArray = Array.isArray, slice = Array.prototype.slice
+  , hasOwnProperty = Object.prototype.hasOwnProperty, max = Math.max;
+
+module.exports = function (start, end) {
+       var length, result, i;
+       if (!this || !isArray(this) || isPlainArray(this)) {
+               return slice.apply(this, arguments);
+       }
+       length = toPosInt(this.length);
+       start = toInteger(start);
+       if (start < 0) start = max(length + start, 0);
+       else if (start > length) start = length;
+       if (end === undefined) {
+               end = length;
+       } else {
+               end = toInteger(end);
+               if (end < 0) end = max(length + end, 0);
+               else if (end > length) end = length;
+       }
+       if (start > end) start = end;
+       result = new this.constructor(end - start);
+       i = 0;
+       while (start !== end) {
+               if (hasOwnProperty.call(this, start)) result[i] = this[start];
+               ++i;
+               ++start;
+       }
+       return result;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js
new file mode 100644 (file)
index 0000000..de7460d
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+  , value    = require('../../object/valid-value')
+
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , call = Function.prototype.call;
+
+module.exports = function (cb/*, thisArg*/) {
+       var i, self, thisArg;
+       self = Object(value(this));
+       callable(cb);
+       thisArg = arguments[1];
+
+       for (i = self.length; i >= 0; --i) {
+               if (hasOwnProperty.call(self, i) &&
+                               call.call(cb, thisArg, self[i], i, self)) {
+                       return true;
+               }
+       }
+       return false;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js
new file mode 100644 (file)
index 0000000..aab1f8e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'splice', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js
new file mode 100644 (file)
index 0000000..e8ecf3c
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.prototype.splice : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js
new file mode 100644 (file)
index 0000000..ffddaa8
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var SubArray = require('../../_sub-array-dummy-safe');
+
+module.exports = function () {
+       return (new SubArray()).splice(0) instanceof SubArray;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js
new file mode 100644 (file)
index 0000000..a8505a2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+
+  , isArray = Array.isArray, splice = Array.prototype.splice
+  , forEach = Array.prototype.forEach;
+
+module.exports = function (start, deleteCount/*, …items*/) {
+       var arr = splice.apply(this, arguments), result;
+       if (!this || !isArray(this) || isPlainArray(this)) return arr;
+       result = new this.constructor(arr.length);
+       forEach.call(arr, function (val, i) { result[i] = val; });
+       return result;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js
new file mode 100644 (file)
index 0000000..db01465
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var indexOf = require('./e-index-of')
+
+  , filter = Array.prototype.filter
+
+  , isFirst;
+
+isFirst = function (value, index) {
+       return indexOf.call(this, value) === index;
+};
+
+module.exports = function () { return filter.call(this, isFirst, this); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js
new file mode 100644 (file)
index 0000000..237281f
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array.prototype, 'values', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js
new file mode 100644 (file)
index 0000000..c0832c3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ? Array.prototype.values : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js
new file mode 100644 (file)
index 0000000..cc0c629
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function () {
+       var arr = ['foo', 1], iterator, result;
+       if (typeof arr.values !== 'function') return false;
+       iterator = arr.values();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== 'foo') return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js
new file mode 100644 (file)
index 0000000..f6555fd
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array');
+module.exports = function () { return new ArrayIterator(this, 'value'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js
new file mode 100644 (file)
index 0000000..6123206
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = (function () {
+       var SubArray = require('./_sub-array-dummy'), arr;
+
+       if (!SubArray) return false;
+       arr = new SubArray();
+       if (!Array.isArray(arr)) return false;
+       if (!(arr instanceof SubArray)) return false;
+
+       arr[34] = 'foo';
+       return (arr.length === 35);
+}());
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js
new file mode 100644 (file)
index 0000000..5baf8a8
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var setPrototypeOf = require('../object/set-prototype-of')
+  , isExtensible   = require('./_is-extensible');
+
+module.exports = (function () {
+       var SubArray;
+
+       if (isExtensible) return require('./_sub-array-dummy');
+
+       if (!setPrototypeOf) return null;
+       SubArray = function () {
+               var arr = Array.apply(this, arguments);
+               setPrototypeOf(arr, SubArray.prototype);
+               return arr;
+       };
+       setPrototypeOf(SubArray, Array);
+       SubArray.prototype = Object.create(Array.prototype, {
+               constructor: { value: SubArray, enumerable: false, writable: true,
+                       configurable: true }
+       });
+       return SubArray;
+}());
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js
new file mode 100644 (file)
index 0000000..a926d1a
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var setPrototypeOf = require('../object/set-prototype-of');
+
+module.exports = (function () {
+       var SubArray;
+
+       if (!setPrototypeOf) return null;
+       SubArray = function () { Array.apply(this, arguments); };
+       setPrototypeOf(SubArray, Array);
+       SubArray.prototype = Object.create(Array.prototype, {
+               constructor: { value: SubArray, enumerable: false, writable: true,
+                       configurable: true }
+       });
+       return SubArray;
+}());
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js
new file mode 100644 (file)
index 0000000..f3411b1
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array, 'from', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js
new file mode 100644 (file)
index 0000000..3b99cda
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.from
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js
new file mode 100644 (file)
index 0000000..63ff2a5
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function () {
+       var from = Array.from, arr, result;
+       if (typeof from !== 'function') return false;
+       arr = ['raz', 'dwa'];
+       result = from(arr);
+       return Boolean(result && (result !== arr) && (result[1] === 'dwa'));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js
new file mode 100644 (file)
index 0000000..a90ba2f
--- /dev/null
@@ -0,0 +1,106 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , isArguments    = require('../../function/is-arguments')
+  , isFunction     = require('../../function/is-function')
+  , toPosInt       = require('../../number/to-pos-integer')
+  , callable       = require('../../object/valid-callable')
+  , validValue     = require('../../object/valid-value')
+  , isString       = require('../../string/is-string')
+
+  , isArray = Array.isArray, call = Function.prototype.call
+  , desc = { configurable: true, enumerable: true, writable: true, value: null }
+  , defineProperty = Object.defineProperty;
+
+module.exports = function (arrayLike/*, mapFn, thisArg*/) {
+       var mapFn = arguments[1], thisArg = arguments[2], Constructor, i, j, arr, l, code, iterator
+         , result, getIterator, value;
+
+       arrayLike = Object(validValue(arrayLike));
+
+       if (mapFn != null) callable(mapFn);
+       if (!this || (this === Array) || !isFunction(this)) {
+               // Result: Plain array
+               if (!mapFn) {
+                       if (isArguments(arrayLike)) {
+                               // Source: Arguments
+                               l = arrayLike.length;
+                               if (l !== 1) return Array.apply(null, arrayLike);
+                               arr = new Array(1);
+                               arr[0] = arrayLike[0];
+                               return arr;
+                       }
+                       if (isArray(arrayLike)) {
+                               // Source: Array
+                               arr = new Array(l = arrayLike.length);
+                               for (i = 0; i < l; ++i) arr[i] = arrayLike[i];
+                               return arr;
+                       }
+               }
+               arr = [];
+       } else {
+               // Result: Non plain array
+               Constructor = this;
+       }
+
+       if (!isArray(arrayLike)) {
+               if ((getIterator = arrayLike[iteratorSymbol]) !== undefined) {
+                       // Source: Iterator
+                       iterator = callable(getIterator).call(arrayLike);
+                       if (Constructor) arr = new Constructor();
+                       result = iterator.next();
+                       i = 0;
+                       while (!result.done) {
+                               value = mapFn ? call.call(mapFn, thisArg, result.value, i) : result.value;
+                               if (!Constructor) {
+                                       arr[i] = value;
+                               } else {
+                                       desc.value = value;
+                                       defineProperty(arr, i, desc);
+                               }
+                               result = iterator.next();
+                               ++i;
+                       }
+                       l = i;
+               } else if (isString(arrayLike)) {
+                       // Source: String
+                       l = arrayLike.length;
+                       if (Constructor) arr = new Constructor();
+                       for (i = 0, j = 0; i < l; ++i) {
+                               value = arrayLike[i];
+                               if ((i + 1) < l) {
+                                       code = value.charCodeAt(0);
+                                       if ((code >= 0xD800) && (code <= 0xDBFF)) value += arrayLike[++i];
+                               }
+                               value = mapFn ? call.call(mapFn, thisArg, value, j) : value;
+                               if (!Constructor) {
+                                       arr[j] = value;
+                               } else {
+                                       desc.value = value;
+                                       defineProperty(arr, j, desc);
+                               }
+                               ++j;
+                       }
+                       l = j;
+               }
+       }
+       if (l === undefined) {
+               // Source: array or array-like
+               l = toPosInt(arrayLike.length);
+               if (Constructor) arr = new Constructor(l);
+               for (i = 0; i < l; ++i) {
+                       value = mapFn ? call.call(mapFn, thisArg, arrayLike[i], i) : arrayLike[i];
+                       if (!Constructor) {
+                               arr[i] = value;
+                       } else {
+                               desc.value = value;
+                               defineProperty(arr, i, desc);
+                       }
+               }
+       }
+       if (Constructor) {
+               desc.value = null;
+               arr.length = l;
+       }
+       return arr;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js
new file mode 100644 (file)
index 0000000..5e06675
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var toPosInt = require('../number/to-pos-integer')
+  , value    = require('../object/valid-value')
+
+  , slice = Array.prototype.slice;
+
+module.exports = function (length/*, …fill*/) {
+       var arr, l;
+       length = toPosInt(value(length));
+       if (length === 0) return [];
+
+       arr = (arguments.length < 2) ? [undefined] :
+                       slice.call(arguments, 1, 1 + length);
+
+       while ((l = arr.length) < length) {
+               arr = arr.concat(arr.slice(0, length - l));
+       }
+       return arr;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js
new file mode 100644 (file)
index 0000000..7a68678
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = {
+       '#':          require('./#'),
+       from:         require('./from'),
+       generate:     require('./generate'),
+       isPlainArray: require('./is-plain-array'),
+       of:           require('./of'),
+       toArray:      require('./to-array'),
+       validArray:   require('./valid-array')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js
new file mode 100644 (file)
index 0000000..6b37e40
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var isArray = Array.isArray, getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (obj) {
+       var proto;
+       if (!obj || !isArray(obj)) return false;
+       proto = getPrototypeOf(obj);
+       if (!isArray(proto)) return false;
+       return !isArray(getPrototypeOf(proto));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js
new file mode 100644 (file)
index 0000000..bf2a5a5
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Array, 'of', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js
new file mode 100644 (file)
index 0000000..07ee54d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Array.of
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js
new file mode 100644 (file)
index 0000000..4390a10
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function () {
+       var of = Array.of, result;
+       if (typeof of !== 'function') return false;
+       result = of('foo', 'bar');
+       return Boolean(result && (result[1] === 'bar'));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js
new file mode 100644 (file)
index 0000000..de72bc9
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var isFunction = require('../../function/is-function')
+
+  , slice = Array.prototype.slice, defineProperty = Object.defineProperty
+  , desc = { configurable: true, enumerable: true, writable: true, value: null };
+
+module.exports = function (/*…items*/) {
+       var result, i, l;
+       if (!this || (this === Array) || !isFunction(this)) return slice.call(arguments);
+       result = new this(l = arguments.length);
+       for (i = 0; i < l; ++i) {
+               desc.value = arguments[i];
+               defineProperty(result, i, desc);
+       }
+       desc.value = null;
+       result.length = l;
+       return result;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js
new file mode 100644 (file)
index 0000000..ce908dd
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var from = require('./from')
+
+  , isArray = Array.isArray;
+
+module.exports = function (arrayLike) {
+       return isArray(arrayLike) ? arrayLike : from(arrayLike);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js
new file mode 100644 (file)
index 0000000..d86a8f5
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isArray = Array.isArray;
+
+module.exports = function (value) {
+       if (isArray(value)) return value;
+       throw new TypeError(value + " is not an array");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js
new file mode 100644 (file)
index 0000000..c193b94
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+       isBoolean: require('./is-boolean')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js
new file mode 100644 (file)
index 0000000..5d1a802
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(true);
+
+module.exports = function (x) {
+       return (typeof x === 'boolean') || ((typeof x === 'object') &&
+               ((x instanceof Boolean) || (toString.call(x) === id)));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js
new file mode 100644 (file)
index 0000000..69e2eb0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var getTime = Date.prototype.getTime;
+
+module.exports = function () { return new Date(getTime.call(this)); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js
new file mode 100644 (file)
index 0000000..e780efe
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var getMonth = Date.prototype.getMonth;
+
+module.exports = function () {
+       switch (getMonth.call(this)) {
+       case 1:
+               return this.getFullYear() % 4 ? 28 : 29;
+       case 3:
+       case 5:
+       case 8:
+       case 10:
+               return 30;
+       default:
+               return 31;
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js
new file mode 100644 (file)
index 0000000..0c9eb8b
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var setHours = Date.prototype.setHours;
+
+module.exports = function () {
+       setHours.call(this, 0, 0, 0, 0);
+       return this;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js
new file mode 100644 (file)
index 0000000..7328c25
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var floorDay = require('./floor-day');
+
+module.exports = function () {
+       floorDay.call(this).setDate(1);
+       return this;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js
new file mode 100644 (file)
index 0000000..9c50853
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var floorMonth = require('./floor-month');
+
+module.exports = function () {
+       floorMonth.call(this).setMonth(0);
+       return this;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js
new file mode 100644 (file)
index 0000000..15bd95f
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var pad       = require('../../number/#/pad')
+  , date      = require('../valid-date')
+
+  , format;
+
+format = require('../../string/format-method')({
+       Y: function () { return String(this.getFullYear()); },
+       y: function () { return String(this.getFullYear()).slice(-2); },
+       m: function () { return pad.call(this.getMonth() + 1, 2); },
+       d: function () { return pad.call(this.getDate(), 2); },
+       H: function () { return pad.call(this.getHours(), 2); },
+       M: function () { return pad.call(this.getMinutes(), 2); },
+       S: function () { return pad.call(this.getSeconds(), 2); },
+       L: function () { return pad.call(this.getMilliseconds(), 3); }
+});
+
+module.exports = function (pattern) {
+       return format.call(date(this), pattern);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js
new file mode 100644 (file)
index 0000000..f71b295
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = {
+       copy:        require('./copy'),
+       daysInMonth: require('./days-in-month'),
+       floorDay:    require('./floor-day'),
+       floorMonth:  require('./floor-month'),
+       floorYear:   require('./floor-year'),
+       format:      require('./format')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js
new file mode 100644 (file)
index 0000000..eac33fb
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = {
+       '#':       require('./#'),
+       isDate:    require('./is-date'),
+       validDate: require('./valid-date')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js
new file mode 100644 (file)
index 0000000..6ba236e
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(new Date());
+
+module.exports = function (x) {
+       return (x && ((x instanceof Date) || (toString.call(x) === id))) || false;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js
new file mode 100644 (file)
index 0000000..7d1a9b6
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isDate = require('./is-date');
+
+module.exports = function (x) {
+       if (!isDate(x)) throw new TypeError(x + " is not a Date object");
+       return x;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js
new file mode 100644 (file)
index 0000000..b984aa9
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+       throw: require('./throw')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js
new file mode 100644 (file)
index 0000000..7e15ebd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var error = require('../valid-error');
+
+module.exports = function () { throw error(this); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js
new file mode 100644 (file)
index 0000000..bbc2dc2
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var assign = require('../object/assign')
+
+  , captureStackTrace = Error.captureStackTrace;
+
+exports = module.exports = function (message/*, code, ext*/) {
+       var err = new Error(), code = arguments[1], ext = arguments[2];
+       if (ext == null) {
+               if (code && (typeof code === 'object')) {
+                       ext = code;
+                       code = null;
+               }
+       }
+       if (ext != null) assign(err, ext);
+       err.message = String(message);
+       if (code != null) err.code = String(code);
+       if (captureStackTrace) captureStackTrace(err, exports);
+       return err;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js
new file mode 100644 (file)
index 0000000..62984b5
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = {
+       '#':        require('./#'),
+       custom:     require('./custom'),
+       isError:    require('./is-error'),
+       validError: require('./valid-error')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js
new file mode 100644 (file)
index 0000000..422705f
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(new Error());
+
+module.exports = function (x) {
+       return (x && ((x instanceof Error) || (toString.call(x)) === id)) || false;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js
new file mode 100644 (file)
index 0000000..0bef768
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isError = require('./is-error');
+
+module.exports = function (x) {
+       if (!isError(x)) throw new TypeError(x + " is not an Error object");
+       return x;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js
new file mode 100644 (file)
index 0000000..1da5e01
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+  , aFrom    = require('../../array/from')
+
+  , apply = Function.prototype.apply, call = Function.prototype.call
+  , callFn = function (arg, fn) { return call.call(fn, this, arg); };
+
+module.exports = function (fn/*, …fnn*/) {
+       var fns, first;
+       if (!fn) callable(fn);
+       fns = [this].concat(aFrom(arguments));
+       fns.forEach(callable);
+       fns = fns.reverse();
+       first = fns[0];
+       fns = fns.slice(1);
+       return function (arg) {
+               return fns.reduce(callFn, apply.call(first, this, arguments));
+       };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js
new file mode 100644 (file)
index 0000000..e1467f7
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var mixin         = require('../../object/mixin')
+  , validFunction = require('../valid-function')
+
+  , re = /^\s*function\s*([\0-'\)-\uffff]+)*\s*\(([\0-\(\*-\uffff]*)\)\s*\{/;
+
+module.exports = function () {
+       var match = String(validFunction(this)).match(re), fn;
+
+       fn = new Function('fn', 'return function ' + match[1].trim() + '(' +
+               match[2] + ') { return fn.apply(this, arguments); };')(this);
+       try { mixin(fn, this); } catch (ignore) {}
+       return fn;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js
new file mode 100644 (file)
index 0000000..943d6fa
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var toPosInt     = require('../../number/to-pos-integer')
+  , callable     = require('../../object/valid-callable')
+  , defineLength = require('../_define-length')
+
+  , slice = Array.prototype.slice, apply = Function.prototype.apply
+  , curry;
+
+curry = function self(fn, length, preArgs) {
+       return defineLength(function () {
+               var args = preArgs ?
+                               preArgs.concat(slice.call(arguments, 0, length - preArgs.length)) :
+                               slice.call(arguments, 0, length);
+               return (args.length === length) ? apply.call(fn, this, args) :
+                               self(fn, length, args);
+       }, preArgs ? (length - preArgs.length) : length);
+};
+
+module.exports = function (/*length*/) {
+       var length = arguments[0];
+       return curry(callable(this),
+               isNaN(length) ? toPosInt(this.length) : toPosInt(length));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js
new file mode 100644 (file)
index 0000000..8d0da00
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = {
+       compose:        require('./compose'),
+       copy:           require('./copy'),
+       curry:          require('./curry'),
+       lock:           require('./lock'),
+       not:            require('./not'),
+       partial:        require('./partial'),
+       spread:         require('./spread'),
+       toStringTokens: require('./to-string-tokens')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js
new file mode 100644 (file)
index 0000000..91e1a65
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+
+  , apply    = Function.prototype.apply;
+
+module.exports = function (/*…args*/) {
+       var fn = callable(this)
+         , args = arguments;
+
+       return function () { return apply.call(fn, this, args); };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js
new file mode 100644 (file)
index 0000000..c6dbe97
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var callable     = require('../../object/valid-callable')
+  , defineLength = require('../_define-length')
+
+  , apply = Function.prototype.apply;
+
+module.exports = function () {
+       var fn = callable(this);
+
+       return defineLength(function () {
+               return !apply.call(fn, this, arguments);
+       }, fn.length);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js
new file mode 100644 (file)
index 0000000..bf31a35
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var callable     = require('../../object/valid-callable')
+  , aFrom        = require('../../array/from')
+  , defineLength = require('../_define-length')
+
+  , apply = Function.prototype.apply;
+
+module.exports = function (/*…args*/) {
+       var fn = callable(this)
+         , args = aFrom(arguments);
+
+       return defineLength(function () {
+               return apply.call(fn, this, args.concat(aFrom(arguments)));
+       }, fn.length - args.length);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js
new file mode 100644 (file)
index 0000000..d7c93b7
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var callable = require('../../object/valid-callable')
+
+  , apply = Function.prototype.apply;
+
+module.exports = function () {
+       var fn = callable(this);
+       return function (args) { return apply.call(fn, this, args); };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js
new file mode 100644 (file)
index 0000000..67afeae
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var validFunction = require('../valid-function')
+
+  , re = new RegExp('^\\s*function[\\0-\'\\)-\\uffff]*' +
+       '\\(([\\0-\\(\\*-\\uffff]*)\\)\\s*\\{([\\0-\\uffff]*)\\}\\s*$');
+
+module.exports = function () {
+       var data = String(validFunction(this)).match(re);
+       return { args: data[1], body: data[2] };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js
new file mode 100644 (file)
index 0000000..496ea62
--- /dev/null
@@ -0,0 +1,44 @@
+'use strict';
+
+var toPosInt = require('../number/to-pos-integer')
+
+  , test = function (a, b) {}, desc, defineProperty
+  , generate, mixin;
+
+try {
+       Object.defineProperty(test, 'length', { configurable: true, writable: false,
+               enumerable: false, value: 1 });
+} catch (ignore) {}
+
+if (test.length === 1) {
+       // ES6
+       desc = { configurable: true, writable: false, enumerable: false };
+       defineProperty = Object.defineProperty;
+       module.exports = function (fn, length) {
+               length = toPosInt(length);
+               if (fn.length === length) return fn;
+               desc.value = length;
+               return defineProperty(fn, 'length', desc);
+       };
+} else {
+       mixin = require('../object/mixin');
+       generate = (function () {
+               var cache = [];
+               return function (l) {
+                       var args, i = 0;
+                       if (cache[l]) return cache[l];
+                       args = [];
+                       while (l--) args.push('a' + (++i).toString(36));
+                       return new Function('fn', 'return function (' + args.join(', ') +
+                               ') { return fn.apply(this, arguments); };');
+               };
+       }());
+       module.exports = function (src, length) {
+               var target;
+               length = toPosInt(length);
+               if (src.length === length) return src;
+               target = generate(length)(src);
+               try { mixin(target, src); } catch (ignore) {}
+               return target;
+       };
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js
new file mode 100644 (file)
index 0000000..10f1e20
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (x) {
+       return function () { return x; };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js
new file mode 100644 (file)
index 0000000..a9289f0
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (x) { return x; };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js
new file mode 100644 (file)
index 0000000..cfad3f3
--- /dev/null
@@ -0,0 +1,15 @@
+// Export all modules.
+
+'use strict';
+
+module.exports = {
+       '#':           require('./#'),
+       constant:      require('./constant'),
+       identity:      require('./identity'),
+       invoke:        require('./invoke'),
+       isArguments:   require('./is-arguments'),
+       isFunction:    require('./is-function'),
+       noop:          require('./noop'),
+       pluck:         require('./pluck'),
+       validFunction: require('./valid-function')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js
new file mode 100644 (file)
index 0000000..9195afd
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var isCallable = require('../object/is-callable')
+  , value      = require('../object/valid-value')
+
+  , slice = Array.prototype.slice, apply = Function.prototype.apply;
+
+module.exports = function (name/*, …args*/) {
+       var args = slice.call(arguments, 1), isFn = isCallable(name);
+       return function (obj) {
+               value(obj);
+               return apply.call(isFn ? name : obj[name], obj,
+                       args.concat(slice.call(arguments, 1)));
+       };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js
new file mode 100644 (file)
index 0000000..9a29855
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call((function () { return arguments; }()));
+
+module.exports = function (x) { return (toString.call(x) === id); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js
new file mode 100644 (file)
index 0000000..ab4399c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(require('./noop'));
+
+module.exports = function (f) {
+       return (typeof f === "function") && (toString.call(f) === id);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js
new file mode 100644 (file)
index 0000000..aa43bae
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function () {};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js
new file mode 100644 (file)
index 0000000..7f70a30
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var value   = require('../object/valid-value');
+
+module.exports = function (name) {
+       return function (o) { return value(o)[name]; };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js
new file mode 100644 (file)
index 0000000..05fdee2
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isFunction = require('./is-function');
+
+module.exports = function (x) {
+       if (!isFunction(x)) throw new TypeError(x + " is not a function");
+       return x;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js
new file mode 100644 (file)
index 0000000..872a40e
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = new Function("return this")();
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js
new file mode 100644 (file)
index 0000000..db9a760
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = {
+       global:   require('./global'),
+
+       array:    require('./array'),
+       boolean:  require('./boolean'),
+       date:     require('./date'),
+       error:    require('./error'),
+       function: require('./function'),
+       iterable: require('./iterable'),
+       math:     require('./math'),
+       number:   require('./number'),
+       object:   require('./object'),
+       regExp:   require('./reg-exp'),
+       string:   require('./string')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js
new file mode 100644 (file)
index 0000000..f1e2042
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var forOf      = require('es6-iterator/for-of')
+  , isIterable = require('es6-iterator/is-iterable')
+  , iterable   = require('./validate')
+
+  , forEach = Array.prototype.forEach;
+
+module.exports = function (target, cb/*, thisArg*/) {
+       if (isIterable(iterable(target))) forOf(target, cb, arguments[2]);
+       else forEach.call(target, cb, arguments[2]);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js
new file mode 100644 (file)
index 0000000..a3e16a5
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = {
+       forEach:        require('./for-each'),
+       is:             require('./is'),
+       validate:       require('./validate'),
+       validateObject: require('./validate-object')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js
new file mode 100644 (file)
index 0000000..bb8bf28
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , isArrayLike    = require('../object/is-array-like');
+
+module.exports = function (x) {
+       if (x == null) return false;
+       if (typeof x[iteratorSymbol] === 'function') return true;
+       return isArrayLike(x);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js
new file mode 100644 (file)
index 0000000..988a6ad
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var isObject = require('../object/is-object')
+  , is       = require('./is');
+
+module.exports = function (x) {
+       if (is(x) && isObject(x)) return x;
+       throw new TypeError(x + " is not an iterable or array-like object");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js
new file mode 100644 (file)
index 0000000..1be6d7f
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var is = require('./is');
+
+module.exports = function (x) {
+       if (is(x)) return x;
+       throw new TypeError(x + " is not an iterable or array-like");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js
new file mode 100644 (file)
index 0000000..eecda56
--- /dev/null
@@ -0,0 +1,82 @@
+// Credit: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var abs = Math.abs, floor = Math.floor, log = Math.log, min = Math.min
+  , pow = Math.pow, LN2 = Math.LN2
+  , roundToEven;
+
+roundToEven = function (n) {
+       var w = floor(n), f = n - w;
+       if (f < 0.5) return w;
+       if (f > 0.5) return w + 1;
+       return w % 2 ? w + 1 : w;
+};
+
+module.exports = function (v, ebits, fbits) {
+       var bias = (1 << (ebits - 1)) - 1, s, e, f, i, bits, str, bytes;
+
+       // Compute sign, exponent, fraction
+       if (isNaN(v)) {
+               // NaN
+               // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
+               e = (1 << ebits) - 1;
+               f = pow(2, fbits - 1);
+               s = 0;
+       } else if (v === Infinity || v === -Infinity) {
+               e = (1 << ebits) - 1;
+               f = 0;
+               s = (v < 0) ? 1 : 0;
+       } else if (v === 0) {
+               e = 0;
+               f = 0;
+               s = (1 / v === -Infinity) ? 1 : 0;
+       } else {
+               s = v < 0;
+               v = abs(v);
+
+               if (v >= pow(2, 1 - bias)) {
+                       e = min(floor(log(v) / LN2), 1023);
+                       f = roundToEven(v / pow(2, e) * pow(2, fbits));
+                       if (f / pow(2, fbits) >= 2) {
+                               e = e + 1;
+                               f = 1;
+                       }
+                       if (e > bias) {
+                               // Overflow
+                               e = (1 << ebits) - 1;
+                               f = 0;
+                       } else {
+                               // Normal
+                               e = e + bias;
+                               f = f - pow(2, fbits);
+                       }
+               } else {
+                       // Subnormal
+                       e = 0;
+                       f = roundToEven(v / pow(2, 1 - bias - fbits));
+               }
+       }
+
+       // Pack sign, exponent, fraction
+       bits = [];
+       for (i = fbits; i; i -= 1) {
+               bits.push(f % 2 ? 1 : 0);
+               f = floor(f / 2);
+       }
+       for (i = ebits; i; i -= 1) {
+               bits.push(e % 2 ? 1 : 0);
+               e = floor(e / 2);
+       }
+       bits.push(s ? 1 : 0);
+       bits.reverse();
+       str = bits.join('');
+
+       // Bits to bytes
+       bytes = [];
+       while (str.length) {
+               bytes.push(parseInt(str.substring(0, 8), 2));
+               str = str.substring(8);
+       }
+       return bytes;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js
new file mode 100644 (file)
index 0000000..c9f26f2
--- /dev/null
@@ -0,0 +1,33 @@
+// Credit: https://github.com/paulmillr/es6-shim/
+
+'use strict';
+
+var pow = Math.pow;
+
+module.exports = function (bytes, ebits, fbits) {
+       // Bytes to bits
+       var bits = [], i, j, b, str,
+       bias, s, e, f;
+
+       for (i = bytes.length; i; i -= 1) {
+               b = bytes[i - 1];
+               for (j = 8; j; j -= 1) {
+                       bits.push(b % 2 ? 1 : 0);
+                       b = b >> 1;
+               }
+       }
+       bits.reverse();
+       str = bits.join('');
+
+       // Unpack sign, exponent, fraction
+       bias = (1 << (ebits - 1)) - 1;
+       s = parseInt(str.substring(0, 1), 2) ? -1 : 1;
+       e = parseInt(str.substring(1, 1 + ebits), 2);
+       f = parseInt(str.substring(1 + ebits), 2);
+
+       // Produce number
+       if (e === (1 << ebits) - 1) return f !== 0 ? NaN : s * Infinity;
+       if (e > 0) return s * pow(2, e - bias) * (1 + f / pow(2, fbits));
+       if (f !== 0) return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));
+       return s < 0 ? -0 : 0;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js
new file mode 100644 (file)
index 0000000..f48ad11
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'acosh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js
new file mode 100644 (file)
index 0000000..00ddea6
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.acosh
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js
new file mode 100644 (file)
index 0000000..363f0d8
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var acosh = Math.acosh;
+       if (typeof acosh !== 'function') return false;
+       return acosh(2) === 1.3169578969248166;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js
new file mode 100644 (file)
index 0000000..89a24b5
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var log = Math.log, sqrt = Math.sqrt;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < 1) return NaN;
+       if (x === 1) return 0;
+       if (x === Infinity) return x;
+       return log(x + sqrt(x * x - 1));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js
new file mode 100644 (file)
index 0000000..21f64d5
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'asinh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js
new file mode 100644 (file)
index 0000000..d415144
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.asinh
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js
new file mode 100644 (file)
index 0000000..6c205f4
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var asinh = Math.asinh;
+       if (typeof asinh !== 'function') return false;
+       return asinh(2) === 1.4436354751788103;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js
new file mode 100644 (file)
index 0000000..42fbf14
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var log = Math.log, sqrt = Math.sqrt;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+       if (x < 0) {
+               x = -x;
+               return -log(x + sqrt(x * x + 1));
+       }
+       return log(x + sqrt(x * x + 1));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js
new file mode 100644 (file)
index 0000000..1a48513
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'atanh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js
new file mode 100644 (file)
index 0000000..785b3de
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.atanh
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js
new file mode 100644 (file)
index 0000000..dbaf18e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var atanh = Math.atanh;
+       if (typeof atanh !== 'function') return false;
+       return atanh(0.5) === 0.5493061443340549;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js
new file mode 100644 (file)
index 0000000..531e289
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var log = Math.log;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < -1) return NaN;
+       if (x > 1) return NaN;
+       if (x === -1) return -Infinity;
+       if (x === 1) return Infinity;
+       if (x === 0) return x;
+       return 0.5 * log((1 + x) / (1 - x));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js
new file mode 100644 (file)
index 0000000..3a12dde
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'cbrt', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js
new file mode 100644 (file)
index 0000000..89f966d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.cbrt
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js
new file mode 100644 (file)
index 0000000..69809f3
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var cbrt = Math.cbrt;
+       if (typeof cbrt !== 'function') return false;
+       return cbrt(2) === 1.2599210498948732;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js
new file mode 100644 (file)
index 0000000..bca1960
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var pow = Math.pow;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+       if (x < 0) return -pow(-x, 1 / 3);
+       return pow(x, 1 / 3);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js
new file mode 100644 (file)
index 0000000..339df33
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'clz32', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js
new file mode 100644 (file)
index 0000000..1687b33
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.clz32
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js
new file mode 100644 (file)
index 0000000..ccc8f71
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var clz32 = Math.clz32;
+       if (typeof clz32 !== 'function') return false;
+       return clz32(1000) === 22;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js
new file mode 100644 (file)
index 0000000..2a582da
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (value) {
+       value = value >>> 0;
+       return value ? 32 - value.toString(2).length : 32;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js
new file mode 100644 (file)
index 0000000..f90d830
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'cosh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js
new file mode 100644 (file)
index 0000000..000636a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.cosh
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js
new file mode 100644 (file)
index 0000000..c796bcb
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var cosh = Math.cosh;
+       if (typeof cosh !== 'function') return false;
+       return cosh(1) === 1.5430806348152437;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js
new file mode 100644 (file)
index 0000000..f9062bd
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var exp = Math.exp;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return 1;
+       if (!isFinite(x)) return Infinity;
+       return (exp(x) + exp(-x)) / 2;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js
new file mode 100644 (file)
index 0000000..fc20c8c
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'expm1', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js
new file mode 100644 (file)
index 0000000..4c1bc77
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.expm1
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js
new file mode 100644 (file)
index 0000000..3b106d5
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var expm1 = Math.expm1;
+       if (typeof expm1 !== 'function') return false;
+       return expm1(1).toFixed(15) === '1.718281828459045';
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js
new file mode 100644 (file)
index 0000000..9c8c236
--- /dev/null
@@ -0,0 +1,16 @@
+// Thanks: https://github.com/monolithed/ECMAScript-6
+
+'use strict';
+
+var exp = Math.exp;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (x === Infinity) return Infinity;
+       if (x === -Infinity) return -1;
+
+       if ((x > -1.0e-6) && (x < 1.0e-6)) return x + x * x / 2;
+       return exp(x) - 1;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js
new file mode 100644 (file)
index 0000000..c55b26c
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'fround', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js
new file mode 100644 (file)
index 0000000..a077ed0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.fround
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js
new file mode 100644 (file)
index 0000000..ffbf094
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var fround = Math.fround;
+       if (typeof fround !== 'function') return false;
+       return fround(1.337) === 1.3370000123977661;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js
new file mode 100644 (file)
index 0000000..f2c86e4
--- /dev/null
@@ -0,0 +1,33 @@
+// Credit: https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js
+
+'use strict';
+
+var toFloat32;
+
+if (typeof Float32Array !== 'undefined') {
+       toFloat32 = (function () {
+               var float32Array = new Float32Array(1);
+               return function (x) {
+                       float32Array[0] = x;
+                       return float32Array[0];
+               };
+       }());
+} else {
+       toFloat32 = (function () {
+               var pack   = require('../_pack-ieee754')
+                 , unpack = require('../_unpack-ieee754');
+
+               return function (x) {
+                       return unpack(pack(x, 8, 23), 8, 23);
+               };
+       }());
+}
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+
+       return toFloat32(x);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js
new file mode 100644 (file)
index 0000000..b27fda7
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'hypot', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js
new file mode 100644 (file)
index 0000000..334bc58
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.hypot
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js
new file mode 100644 (file)
index 0000000..e75c5d3
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var hypot = Math.hypot;
+       if (typeof hypot !== 'function') return false;
+       return hypot(3, 4) === 5;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js
new file mode 100644 (file)
index 0000000..3d0988b
--- /dev/null
@@ -0,0 +1,34 @@
+// Thanks for hints: https://github.com/paulmillr/es6-shim
+
+'use strict';
+
+var some = Array.prototype.some, abs = Math.abs, sqrt = Math.sqrt
+
+  , compare = function (a, b) { return b - a; }
+  , divide = function (x) { return x / this; }
+  , add = function (sum, number) { return sum + number * number; };
+
+module.exports = function (val1, val2/*, …valn*/) {
+       var result, numbers;
+       if (!arguments.length) return 0;
+       some.call(arguments, function (val) {
+               if (isNaN(val)) {
+                       result = NaN;
+                       return;
+               }
+               if (!isFinite(val)) {
+                       result = Infinity;
+                       return true;
+               }
+               if (result !== undefined) return;
+               val = Number(val);
+               if (val === 0) return;
+               if (!numbers) numbers = [abs(val)];
+               else numbers.push(abs(val));
+       });
+       if (result !== undefined) return result;
+       if (!numbers) return 0;
+
+       numbers.sort(compare);
+       return numbers[0] * sqrt(numbers.map(divide, numbers[0]).reduce(add, 0));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js
new file mode 100644 (file)
index 0000000..ed207bd
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'imul', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js
new file mode 100644 (file)
index 0000000..41e5d5f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.imul
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js
new file mode 100644 (file)
index 0000000..d8495de
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var imul = Math.imul;
+       if (typeof imul !== 'function') return false;
+       return imul(-1, 8) === -8;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js
new file mode 100644 (file)
index 0000000..8fd8a8d
--- /dev/null
@@ -0,0 +1,13 @@
+// Thanks: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
+//         /Global_Objects/Math/imul
+
+'use strict';
+
+module.exports = function (x, y) {
+       var xh  = (x >>> 16) & 0xffff, xl = x & 0xffff
+         , yh  = (y >>> 16) & 0xffff, yl = y & 0xffff;
+
+       // the shift by 0 fixes the sign on the high part
+       // the final |0 converts the unsigned value into a signed value
+       return ((xl * yl) + (((xh * yl + xl * yh) << 16) >>> 0) | 0);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js
new file mode 100644 (file)
index 0000000..d112d0b
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+module.exports = {
+       acosh:  require('./acosh'),
+       asinh:  require('./asinh'),
+       atanh:  require('./atanh'),
+       cbrt:   require('./cbrt'),
+       clz32:  require('./clz32'),
+       cosh:   require('./cosh'),
+       expm1:  require('./expm1'),
+       fround: require('./fround'),
+       hypot:  require('./hypot'),
+       imul:   require('./imul'),
+       log10:  require('./log10'),
+       log2:   require('./log2'),
+       log1p:  require('./log1p'),
+       sign:   require('./sign'),
+       sinh:   require('./sinh'),
+       tanh:   require('./tanh'),
+       trunc:  require('./trunc')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js
new file mode 100644 (file)
index 0000000..dd96edd
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'log10', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js
new file mode 100644 (file)
index 0000000..a9eee51
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.log10
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js
new file mode 100644 (file)
index 0000000..c7f40ee
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var log10 = Math.log10;
+       if (typeof log10 !== 'function') return false;
+       return log10(2) === 0.3010299956639812;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js
new file mode 100644 (file)
index 0000000..fc77287
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var log = Math.log, LOG10E = Math.LOG10E;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < 0) return NaN;
+       if (x === 0) return -Infinity;
+       if (x === 1) return 0;
+       if (x === Infinity) return Infinity;
+
+       return log(x) * LOG10E;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js
new file mode 100644 (file)
index 0000000..f62f91f
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'log1p', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js
new file mode 100644 (file)
index 0000000..107b114
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.log1p
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js
new file mode 100644 (file)
index 0000000..61e9097
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var log1p = Math.log1p;
+       if (typeof log1p !== 'function') return false;
+       return log1p(1) === 0.6931471805599453;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js
new file mode 100644 (file)
index 0000000..10acebc
--- /dev/null
@@ -0,0 +1,17 @@
+// Thanks: https://github.com/monolithed/ECMAScript-6/blob/master/ES6.js
+
+'use strict';
+
+var log = Math.log;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < -1) return NaN;
+       if (x === -1) return -Infinity;
+       if (x === 0) return x;
+       if (x === Infinity) return Infinity;
+
+       if (x > -1.0e-8 && x < 1.0e-8) return (x - x * x / 2);
+       return log(1 + x);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js
new file mode 100644 (file)
index 0000000..8483f09
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'log2', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js
new file mode 100644 (file)
index 0000000..87e9050
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.log2
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js
new file mode 100644 (file)
index 0000000..802322f
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var log2 = Math.log2;
+       if (typeof log2 !== 'function') return false;
+       return log2(3).toFixed(15) === '1.584962500721156';
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js
new file mode 100644 (file)
index 0000000..cd80994
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var log = Math.log, LOG2E = Math.LOG2E;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x < 0) return NaN;
+       if (x === 0) return -Infinity;
+       if (x === 1) return 0;
+       if (x === Infinity) return Infinity;
+
+       return log(x) * LOG2E;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js
new file mode 100644 (file)
index 0000000..b0db2f4
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'sign', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js
new file mode 100644 (file)
index 0000000..b232633
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.sign
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js
new file mode 100644 (file)
index 0000000..6d0de47
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var sign = Math.sign;
+       if (typeof sign !== 'function') return false;
+       return ((sign(10) === 1) && (sign(-20) === -1));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js
new file mode 100644 (file)
index 0000000..4df9c95
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (value) {
+       value = Number(value);
+       if (isNaN(value) || (value === 0)) return value;
+       return (value > 0) ? 1 : -1;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js
new file mode 100644 (file)
index 0000000..f259a63
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'sinh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js
new file mode 100644 (file)
index 0000000..e5bea57
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.sinh
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js
new file mode 100644 (file)
index 0000000..888ec67
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var sinh = Math.sinh;
+       if (typeof sinh !== 'function') return false;
+       return ((sinh(1) === 1.1752011936438014) && (sinh(Number.MIN_VALUE) === 5e-324));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js
new file mode 100644 (file)
index 0000000..5b725be
--- /dev/null
@@ -0,0 +1,17 @@
+// Parts of implementation taken from es6-shim project
+// See: https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js
+
+'use strict';
+
+var expm1 = require('../expm1')
+
+  , abs = Math.abs, exp = Math.exp, e = Math.E;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (!isFinite(x)) return x;
+       if (abs(x) < 1) return (expm1(x) - expm1(-x)) / 2;
+       return (exp(x - 1) - exp(-x - 1)) * e / 2;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js
new file mode 100644 (file)
index 0000000..5199a02
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'tanh', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js
new file mode 100644 (file)
index 0000000..6099c40
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.tanh
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js
new file mode 100644 (file)
index 0000000..a7d2223
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var tanh = Math.tanh;
+       if (typeof tanh !== 'function') return false;
+       return ((tanh(1) === 0.7615941559557649) && (tanh(Number.MAX_VALUE) === 1));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js
new file mode 100644 (file)
index 0000000..f6e948f
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var exp = Math.exp;
+
+module.exports = function (x) {
+       var a, b;
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (x === Infinity) return 1;
+       if (x === -Infinity) return -1;
+       a = exp(x);
+       if (a === Infinity) return 1;
+       b = exp(-x);
+       if (b === Infinity) return -1;
+       return (a - b) / (a + b);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js
new file mode 100644 (file)
index 0000000..3ee80ab
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Math, 'trunc', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js
new file mode 100644 (file)
index 0000000..0b0f9b2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Math.trunc
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js
new file mode 100644 (file)
index 0000000..3e8cde1
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var trunc = Math.trunc;
+       if (typeof trunc !== 'function') return false;
+       return (trunc(13.67) === 13) && (trunc(-13.67) === -13);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js
new file mode 100644 (file)
index 0000000..02e2c2a
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var floor = Math.floor;
+
+module.exports = function (x) {
+       if (isNaN(x)) return NaN;
+       x = Number(x);
+       if (x === 0) return x;
+       if (x === Infinity) return Infinity;
+       if (x === -Infinity) return -Infinity;
+       if (x > 0) return floor(x);
+       return -floor(-x);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js
new file mode 100644 (file)
index 0000000..3248117
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+       pad: require('./pad')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js
new file mode 100644 (file)
index 0000000..4478f6a
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var pad      = require('../../string/#/pad')
+  , toPosInt = require('../to-pos-integer')
+
+  , toFixed = Number.prototype.toFixed;
+
+module.exports = function (length/*, precision*/) {
+       var precision;
+       length = toPosInt(length);
+       precision = toPosInt(arguments[1]);
+
+       return pad.call(precision ? toFixed.call(this, precision) : this,
+               '0', length + (precision ? (1 + precision) : 0));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js
new file mode 100644 (file)
index 0000000..f0a670a
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'EPSILON', { value: require('./'),
+               configurable: false, enumerable: false, writable: false });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js
new file mode 100644 (file)
index 0000000..4e4b621
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = 2.220446049250313e-16;
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js
new file mode 100644 (file)
index 0000000..141f5d2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return (typeof Number.EPSILON === 'number');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js
new file mode 100644 (file)
index 0000000..35daf78
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = {
+       '#':              require('./#'),
+       EPSILON:          require('./epsilon'),
+       isFinite:         require('./is-finite'),
+       isInteger:        require('./is-integer'),
+       isNaN:            require('./is-nan'),
+       isNumber:         require('./is-number'),
+       isSafeInteger:    require('./is-safe-integer'),
+       MAX_SAFE_INTEGER: require('./max-safe-integer'),
+       MIN_SAFE_INTEGER: require('./min-safe-integer'),
+       toInteger:        require('./to-integer'),
+       toPosInteger:     require('./to-pos-integer'),
+       toUint32:         require('./to-uint32')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js
new file mode 100644 (file)
index 0000000..51d7cac
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isFinite', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js
new file mode 100644 (file)
index 0000000..15d5f40
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isFinite
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js
new file mode 100644 (file)
index 0000000..556e396
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var isFinite = Number.isFinite;
+       if (typeof isFinite !== 'function') return false;
+       return !isFinite('23') && isFinite(34) && !isFinite(Infinity);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js
new file mode 100644 (file)
index 0000000..e3aee55
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (value) {
+       return (typeof value === 'number') && isFinite(value);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js
new file mode 100644 (file)
index 0000000..fe53f28
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isInteger', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js
new file mode 100644 (file)
index 0000000..55e039a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isInteger
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..a0e573b
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var isInteger = Number.isInteger;
+       if (typeof isInteger !== 'function') return false;
+       return !isInteger('23') && isInteger(34) && !isInteger(32.34);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js
new file mode 100644 (file)
index 0000000..5402939
--- /dev/null
@@ -0,0 +1,8 @@
+// Credit: http://www.2ality.com/2014/05/is-integer.html
+
+'use strict';
+
+module.exports = function (value) {
+       if (typeof value !== 'number') return false;
+       return (value % 1 === 0);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js
new file mode 100644 (file)
index 0000000..e1c5dee
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isNaN', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js
new file mode 100644 (file)
index 0000000..3b2c4ca
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isNaN
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js
new file mode 100644 (file)
index 0000000..4cf2766
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var isNaN = Number.isNaN;
+       if (typeof isNaN !== 'function') return false;
+       return !isNaN({}) && isNaN(NaN) && !isNaN(34);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js
new file mode 100644 (file)
index 0000000..070d96c
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (value) { return (value !== value); } //jslint: ignore
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js
new file mode 100644 (file)
index 0000000..19a99e4
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(1);
+
+module.exports = function (x) {
+       return ((typeof x === 'number') ||
+               ((x instanceof Number) ||
+                       ((typeof x === 'object') && (toString.call(x) === id))));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..51cef96
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'isSafeInteger', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js
new file mode 100644 (file)
index 0000000..49adeaa
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Number.isSafeInteger
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..510b60e
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function () {
+       var isSafeInteger = Number.isSafeInteger;
+       if (typeof isSafeInteger !== 'function') return false;
+       return !isSafeInteger('23') && isSafeInteger(34232322323) &&
+                       !isSafeInteger(9007199254740992);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js
new file mode 100644 (file)
index 0000000..692acdd
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var isInteger = require('../is-integer/shim')
+  , maxValue  = require('../max-safe-integer')
+
+  , abs = Math.abs;
+
+module.exports = function (value) {
+       if (!isInteger(value)) return false;
+       return abs(value) <= maxValue;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..4e0bb57
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'MAX_SAFE_INTEGER', { value: require('./'),
+               configurable: false, enumerable: false, writable: false });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js
new file mode 100644 (file)
index 0000000..ed5d6a5
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = Math.pow(2, 53) - 1;
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..7bd08a9
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return (typeof Number.MAX_SAFE_INTEGER === 'number');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..e3f110e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Number, 'MIN_SAFE_INTEGER', { value: require('./'),
+               configurable: false, enumerable: false, writable: false });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js
new file mode 100644 (file)
index 0000000..1c6cc27
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = -(Math.pow(2, 53) - 1);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..efc9875
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return (typeof Number.MIN_SAFE_INTEGER === 'number');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js
new file mode 100644 (file)
index 0000000..60e798c
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var sign = require('../math/sign')
+
+  , abs = Math.abs, floor = Math.floor;
+
+module.exports = function (value) {
+       if (isNaN(value)) return 0;
+       value = Number(value);
+       if ((value === 0) || !isFinite(value)) return value;
+       return sign(value) * floor(abs(value));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js
new file mode 100644 (file)
index 0000000..605a302
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var toInteger = require('./to-integer')
+
+  , max = Math.max;
+
+module.exports = function (value) { return max(0, toInteger(value)); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js
new file mode 100644 (file)
index 0000000..6263e85
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (value) { return value >>> 0; };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js
new file mode 100644 (file)
index 0000000..bf2c55d
--- /dev/null
@@ -0,0 +1,29 @@
+// Internal method, used by iteration functions.
+// Calls a function for each key-value pair found in object
+// Optionally takes compareFn to iterate object in specific order
+
+'use strict';
+
+var isCallable = require('./is-callable')
+  , callable   = require('./valid-callable')
+  , value      = require('./valid-value')
+
+  , call = Function.prototype.call, keys = Object.keys
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (method, defVal) {
+       return function (obj, cb/*, thisArg, compareFn*/) {
+               var list, thisArg = arguments[2], compareFn = arguments[3];
+               obj = Object(value(obj));
+               callable(cb);
+
+               list = keys(obj);
+               if (compareFn) {
+                       list.sort(isCallable(compareFn) ? compareFn.bind(obj) : undefined);
+               }
+               return list[method](function (key, index) {
+                       if (!propertyIsEnumerable.call(obj, key)) return defVal;
+                       return call.call(cb, thisArg, obj[key], key, obj, index);
+               });
+       };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js
new file mode 100644 (file)
index 0000000..3bcc68e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Object, 'assign', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js
new file mode 100644 (file)
index 0000000..ab0f9f2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Object.assign
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js
new file mode 100644 (file)
index 0000000..579ad2d
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function () {
+       var assign = Object.assign, obj;
+       if (typeof assign !== 'function') return false;
+       obj = { foo: 'raz' };
+       assign(obj, { bar: 'dwa' }, { trzy: 'trzy' });
+       return (obj.foo + obj.bar + obj.trzy) === 'razdwatrzy';
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js
new file mode 100644 (file)
index 0000000..74da11a
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var keys  = require('../keys')
+  , value = require('../valid-value')
+
+  , max = Math.max;
+
+module.exports = function (dest, src/*, …srcn*/) {
+       var error, i, l = max(arguments.length, 2), assign;
+       dest = Object(value(dest));
+       assign = function (key) {
+               try { dest[key] = src[key]; } catch (e) {
+                       if (!error) error = e;
+               }
+       };
+       for (i = 1; i < l; ++i) {
+               src = arguments[i];
+               keys(src).forEach(assign);
+       }
+       if (error !== undefined) throw error;
+       return dest;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js
new file mode 100644 (file)
index 0000000..85e4637
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var keys = require('./keys');
+
+module.exports = function (obj) {
+       var error;
+       keys(obj).forEach(function (key) {
+               try {
+                       delete this[key];
+               } catch (e) {
+                       if (!error) error = e;
+               }
+       }, obj);
+       if (error !== undefined) throw error;
+       return obj;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js
new file mode 100644 (file)
index 0000000..d021da4
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var filter = require('./filter');
+
+module.exports = function (obj) {
+       return filter(obj, function (val) { return val != null; });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js
new file mode 100644 (file)
index 0000000..2ab11f1
--- /dev/null
@@ -0,0 +1,42 @@
+'use strict';
+
+var strCompare = require('../string/#/case-insensitive-compare')
+  , isObject   = require('./is-object')
+
+  , resolve, typeMap;
+
+typeMap = {
+       undefined: 0,
+       object: 1,
+       boolean: 2,
+       string: 3,
+       number: 4
+};
+
+resolve = function (a) {
+       if (isObject(a)) {
+               if (typeof a.valueOf !== 'function') return NaN;
+               a = a.valueOf();
+               if (isObject(a)) {
+                       if (typeof a.toString !== 'function') return NaN;
+                       a = a.toString();
+                       if (typeof a !== 'string') return NaN;
+               }
+       }
+       return a;
+};
+
+module.exports = function (a, b) {
+       if (a === b) return 0; // Same
+
+       a = resolve(a);
+       b = resolve(b);
+       if (a == b) return typeMap[typeof a] - typeMap[typeof b]; //jslint: ignore
+       if (a == null) return -1;
+       if (b == null) return 1;
+       if ((typeof a === 'string') || (typeof b === 'string')) {
+               return strCompare.call(a, b);
+       }
+       if ((a !== a) && (b !== b)) return 0; //jslint: ignore
+       return Number(a) - Number(b);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js
new file mode 100644 (file)
index 0000000..548e3ee
--- /dev/null
@@ -0,0 +1,30 @@
+'use strict';
+
+var isPlainObject = require('./is-plain-object')
+  , value         = require('./valid-value')
+
+  , keys = Object.keys
+  , copy;
+
+copy = function (source) {
+       var target = {};
+       this[0].push(source);
+       this[1].push(target);
+       keys(source).forEach(function (key) {
+               var index;
+               if (!isPlainObject(source[key])) {
+                       target[key] = source[key];
+                       return;
+               }
+               index = this[0].indexOf(source[key]);
+               if (index === -1) target[key] = copy.call(this, source[key]);
+               else target[key] = this[1][index];
+       }, this);
+       return target;
+};
+
+module.exports = function (source) {
+       var obj = Object(value(source));
+       if (obj !== source) return obj;
+       return copy.call([[], []], obj);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js
new file mode 100644 (file)
index 0000000..4d71772
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var assign = require('./assign')
+  , value  = require('./valid-value');
+
+module.exports = function (obj) {
+       var copy = Object(value(obj));
+       if (copy !== obj) return copy;
+       return assign({}, obj);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js
new file mode 100644 (file)
index 0000000..29cfbb5
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var keys  = require('./keys');
+
+module.exports = function (obj) { return keys(obj).length; };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js
new file mode 100644 (file)
index 0000000..f813b46
--- /dev/null
@@ -0,0 +1,36 @@
+// Workaround for http://code.google.com/p/v8/issues/detail?id=2804
+
+'use strict';
+
+var create = Object.create, shim;
+
+if (!require('./set-prototype-of/is-implemented')()) {
+       shim = require('./set-prototype-of/shim');
+}
+
+module.exports = (function () {
+       var nullObject, props, desc;
+       if (!shim) return create;
+       if (shim.level !== 1) return create;
+
+       nullObject = {};
+       props = {};
+       desc = { configurable: false, enumerable: false, writable: true,
+               value: undefined };
+       Object.getOwnPropertyNames(Object.prototype).forEach(function (name) {
+               if (name === '__proto__') {
+                       props[name] = { configurable: true, enumerable: false, writable: true,
+                               value: undefined };
+                       return;
+               }
+               props[name] = desc;
+       });
+       Object.defineProperties(nullObject, props);
+
+       Object.defineProperty(shim, 'nullPolyfill', { configurable: false,
+               enumerable: false, writable: false, value: nullObject });
+
+       return function (prototype, props) {
+               return create((prototype === null) ? nullObject : prototype, props);
+       };
+}());
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js
new file mode 100644 (file)
index 0000000..037937e
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (x, y) {
+       return ((x === y) || ((x !== x) && (y !== y))); //jslint: ignore
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js
new file mode 100644 (file)
index 0000000..1303db2
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./_iterate')('every', true);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js
new file mode 100644 (file)
index 0000000..e5edb49
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call;
+
+module.exports = function (obj, cb/*, thisArg*/) {
+       var o = {}, thisArg = arguments[2];
+       callable(cb);
+       forEach(obj, function (value, key, obj, index) {
+               if (call.call(cb, thisArg, value, key, obj, index)) o[key] = obj[key];
+       });
+       return o;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js
new file mode 100644 (file)
index 0000000..7df10b2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var value = require('./valid-value')
+
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (obj) {
+       var i;
+       value(obj);
+       for (i in obj) {
+               if (propertyIsEnumerable.call(obj, i)) return i;
+       }
+       return null;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js
new file mode 100644 (file)
index 0000000..e8b4044
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var isPlainObject = require('./is-plain-object')
+  , forEach       = require('./for-each')
+
+  , process;
+
+process = function self(value, key) {
+       if (isPlainObject(value)) forEach(value, self, this);
+       else this[key] = value;
+};
+
+module.exports = function (obj) {
+       var flattened = {};
+       forEach(obj, process, flattened);
+       return flattened;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js
new file mode 100644 (file)
index 0000000..6674f8a
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./_iterate')('forEach');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js
new file mode 100644 (file)
index 0000000..54a01e5
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var uniq  = require('../array/#/uniq')
+  , value = require('./valid-value')
+
+  , push = Array.prototype.push
+  , getOwnPropertyNames = Object.getOwnPropertyNames
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (obj) {
+       var keys;
+       obj = Object(value(obj));
+       keys = getOwnPropertyNames(obj);
+       while ((obj = getPrototypeOf(obj))) {
+               push.apply(keys, getOwnPropertyNames(obj));
+       }
+       return uniq.call(keys);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js
new file mode 100644 (file)
index 0000000..4bdf403
--- /dev/null
@@ -0,0 +1,48 @@
+'use strict';
+
+module.exports = {
+       assign:                     require('./assign'),
+       clear:                      require('./clear'),
+       compact:                    require('./compact'),
+       compare:                    require('./compare'),
+       copy:                       require('./copy'),
+       copyDeep:                   require('./copy-deep'),
+       count:                      require('./count'),
+       create:                     require('./create'),
+       eq:                         require('./eq'),
+       every:                      require('./every'),
+       filter:                     require('./filter'),
+       firstKey:                   require('./first-key'),
+       flatten:                    require('./flatten'),
+       forEach:                    require('./for-each'),
+       getPropertyNames:           require('./get-property-names'),
+       is:                         require('./is'),
+       isArrayLike:                require('./is-array-like'),
+       isCallable:                 require('./is-callable'),
+       isCopy:                     require('./is-copy'),
+       isCopyDeep:                 require('./is-copy-deep'),
+       isEmpty:                    require('./is-empty'),
+       isObject:                   require('./is-object'),
+       isPlainObject:              require('./is-plain-object'),
+       keyOf:                      require('./key-of'),
+       keys:                       require('./keys'),
+       map:                        require('./map'),
+       mapKeys:                    require('./map-keys'),
+       normalizeOptions:           require('./normalize-options'),
+       mixin:                      require('./mixin'),
+       mixinPrototypes:            require('./mixin-prototypes'),
+       primitiveSet:               require('./primitive-set'),
+       safeTraverse:               require('./safe-traverse'),
+       serialize:                  require('./serialize'),
+       setPrototypeOf:             require('./set-prototype-of'),
+       some:                       require('./some'),
+       toArray:                    require('./to-array'),
+       unserialize:                require('./unserialize'),
+       validateArrayLike:          require('./validate-array-like'),
+       validateArrayLikeObject:    require('./validate-array-like-object'),
+       validCallable:              require('./valid-callable'),
+       validObject:                require('./valid-object'),
+       validateStringifiable:      require('./validate-stringifiable'),
+       validateStringifiableValue: require('./validate-stringifiable-value'),
+       validValue:                 require('./valid-value')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js
new file mode 100644 (file)
index 0000000..b8beed2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var isFunction = require('../function/is-function')
+  , isObject   = require('./is-object');
+
+module.exports = function (x) {
+       return ((x != null) && (typeof x.length === 'number') &&
+
+               // Just checking ((typeof x === 'object') && (typeof x !== 'function'))
+               // won't work right for some cases, e.g.:
+               // type of instance of NodeList in Safari is a 'function'
+
+               ((isObject(x) && !isFunction(x)) || (typeof x === "string"))) || false;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js
new file mode 100644 (file)
index 0000000..5d5d4b3
--- /dev/null
@@ -0,0 +1,5 @@
+// Deprecated
+
+'use strict';
+
+module.exports = function (obj) { return typeof obj === 'function'; };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js
new file mode 100644 (file)
index 0000000..c4b2b42
--- /dev/null
@@ -0,0 +1,58 @@
+'use strict';
+
+var eq            = require('./eq')
+  , isPlainObject = require('./is-plain-object')
+  , value         = require('./valid-value')
+
+  , isArray = Array.isArray, keys = Object.keys
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable
+
+  , eqArr, eqVal, eqObj;
+
+eqArr = function (a, b, recMap) {
+       var i, l = a.length;
+       if (l !== b.length) return false;
+       for (i = 0; i < l; ++i) {
+               if (a.hasOwnProperty(i) !== b.hasOwnProperty(i)) return false;
+               if (!eqVal(a[i], b[i], recMap)) return false;
+       }
+       return true;
+};
+
+eqObj = function (a, b, recMap) {
+       var k1 = keys(a), k2 = keys(b);
+       if (k1.length !== k2.length) return false;
+       return k1.every(function (key) {
+               if (!propertyIsEnumerable.call(b, key)) return false;
+               return eqVal(a[key], b[key], recMap);
+       });
+};
+
+eqVal = function (a, b, recMap) {
+       var i, eqX, c1, c2;
+       if (eq(a, b)) return true;
+       if (isPlainObject(a)) {
+               if (!isPlainObject(b)) return false;
+               eqX = eqObj;
+       } else if (isArray(a) && isArray(b)) {
+               eqX = eqArr;
+       } else {
+               return false;
+       }
+       c1 = recMap[0];
+       c2 = recMap[1];
+       i = c1.indexOf(a);
+       if (i !== -1) {
+               if (c2[i].indexOf(b) !== -1) return true;
+       } else {
+               i = c1.push(a) - 1;
+               c2[i] = [];
+       }
+       c2[i].push(b);
+       return eqX(a, b, recMap);
+};
+
+module.exports = function (a, b) {
+       if (eq(value(a), value(b))) return true;
+       return eqVal(Object(a), Object(b), [[], []]);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js
new file mode 100644 (file)
index 0000000..4fe639d
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var eq     = require('./eq')
+  , value  = require('./valid-value')
+
+  , keys = Object.keys
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (a, b) {
+       var k1, k2;
+
+       if (eq(value(a), value(b))) return true;
+
+       a = Object(a);
+       b = Object(b);
+
+       k1 = keys(a);
+       k2 = keys(b);
+       if (k1.length !== k2.length) return false;
+       return k1.every(function (key) {
+               if (!propertyIsEnumerable.call(b, key)) return false;
+               return eq(a[key], b[key]);
+       });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js
new file mode 100644 (file)
index 0000000..7b51a87
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var value = require('./valid-value')
+
+  , propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+module.exports = function (obj) {
+       var i;
+       value(obj);
+       for (i in obj) { //jslint: ignore
+               if (propertyIsEnumerable.call(obj, i)) return false;
+       }
+       return true;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js
new file mode 100644 (file)
index 0000000..a86facf
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var map = { function: true, object: true };
+
+module.exports = function (x) {
+       return ((x != null) && map[typeof x]) || false;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js
new file mode 100644 (file)
index 0000000..9a28231
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var getPrototypeOf = Object.getPrototypeOf, prototype = Object.prototype
+  , toString = prototype.toString
+
+  , id = Object().toString();
+
+module.exports = function (value) {
+       var proto, constructor;
+       if (!value || (typeof value !== 'object') || (toString.call(value) !== id)) {
+               return false;
+       }
+       proto = getPrototypeOf(value);
+       if (proto === null) {
+               constructor = value.constructor;
+               if (typeof constructor !== 'function') return true;
+               return (constructor.prototype !== value);
+       }
+       return (proto === prototype) || (getPrototypeOf(proto) === null);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js
new file mode 100644 (file)
index 0000000..5778b50
--- /dev/null
@@ -0,0 +1,10 @@
+// Implementation credits go to:
+// http://wiki.ecmascript.org/doku.php?id=harmony:egal
+
+'use strict';
+
+module.exports = function (x, y) {
+       return (x === y) ?
+                       ((x !== 0) || ((1 / x) === (1 / y))) :
+                       ((x !== x) && (y !== y)); //jslint: ignore
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js
new file mode 100644 (file)
index 0000000..8c44c8d
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var eq   = require('./eq')
+  , some = require('./some');
+
+module.exports = function (obj, searchValue) {
+       var r;
+       return some(obj, function (value, name) {
+               if (eq(value, searchValue)) {
+                       r = name;
+                       return true;
+               }
+               return false;
+       }) ? r : null;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js
new file mode 100644 (file)
index 0000000..c6872bd
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(Object, 'keys', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js
new file mode 100644 (file)
index 0000000..5ef0522
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Object.keys
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..40c32c3
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function () {
+       try {
+               Object.keys('primitive');
+               return true;
+       } catch (e) { return false; }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js
new file mode 100644 (file)
index 0000000..034b6b2
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var keys = Object.keys;
+
+module.exports = function (object) {
+       return keys(object == null ? object : Object(object));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js
new file mode 100644 (file)
index 0000000..26f0eca
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call;
+
+module.exports = function (obj, cb/*, thisArg*/) {
+       var o = {}, thisArg = arguments[2];
+       callable(cb);
+       forEach(obj, function (value, key, obj, index) {
+               o[call.call(cb, thisArg, key, value, this, index)] = value;
+       }, obj);
+       return o;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js
new file mode 100644 (file)
index 0000000..6b39d3c
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call;
+
+module.exports = function (obj, cb/*, thisArg*/) {
+       var o = {}, thisArg = arguments[2];
+       callable(cb);
+       forEach(obj, function (value, key, obj, index) {
+               o[key] = call.call(cb, thisArg, value, key, obj, index);
+       });
+       return o;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js
new file mode 100644 (file)
index 0000000..1ef5756
--- /dev/null
@@ -0,0 +1,34 @@
+'use strict';
+
+var value = require('./valid-value')
+  , mixin = require('./mixin')
+
+  , defineProperty = Object.defineProperty
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+  , getOwnPropertyNames = Object.getOwnPropertyNames
+  , getPrototypeOf = Object.getPrototypeOf
+  , hasOwnProperty = Object.prototype.hasOwnProperty;
+
+module.exports = function (target, source) {
+       var error, end, define;
+       target = Object(value(target));
+       source = Object(value(source));
+       end = getPrototypeOf(target);
+       if (source === end) return target;
+       try {
+               mixin(target, source);
+       } catch (e) { error = e; }
+       source = getPrototypeOf(source);
+       define = function (name) {
+               if (hasOwnProperty.call(target, name)) return;
+               try {
+                       defineProperty(target, name, getOwnPropertyDescriptor(source, name));
+               } catch (e) { error = e; }
+       };
+       while (source && (source !== end)) {
+               getOwnPropertyNames(source).forEach(define);
+               source = getPrototypeOf(source);
+       }
+       if (error) throw error;
+       return target;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js
new file mode 100644 (file)
index 0000000..80b5df5
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var value = require('./valid-value')
+
+  , defineProperty = Object.defineProperty
+  , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+  , getOwnPropertyNames = Object.getOwnPropertyNames;
+
+module.exports = function (target, source) {
+       var error;
+       target = Object(value(target));
+       getOwnPropertyNames(Object(value(source))).forEach(function (name) {
+               try {
+                       defineProperty(target, name, getOwnPropertyDescriptor(source, name));
+               } catch (e) { error = e; }
+       });
+       if (error !== undefined) throw error;
+       return target;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js
new file mode 100644 (file)
index 0000000..cf8ed8d
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var forEach = Array.prototype.forEach, create = Object.create;
+
+var process = function (src, obj) {
+       var key;
+       for (key in src) obj[key] = src[key];
+};
+
+module.exports = function (options/*, …options*/) {
+       var result = create(null);
+       forEach.call(arguments, function (options) {
+               if (options == null) return;
+               process(Object(options), result);
+       });
+       return result;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js
new file mode 100644 (file)
index 0000000..ada1095
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var forEach = Array.prototype.forEach, create = Object.create;
+
+module.exports = function (arg/*, …args*/) {
+       var set = create(null);
+       forEach.call(arguments, function (name) { set[name] = true; });
+       return set;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js
new file mode 100644 (file)
index 0000000..7e1b5f4
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var value = require('./valid-value');
+
+module.exports = function (obj/*, …names*/) {
+       var length, current = 1;
+       value(obj);
+       length = arguments.length - 1;
+       if (!length) return obj;
+       while (current < length) {
+               obj = obj[arguments[current++]];
+               if (obj == null) return undefined;
+       }
+       return obj[arguments[current]];
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js
new file mode 100644 (file)
index 0000000..8113b68
--- /dev/null
@@ -0,0 +1,36 @@
+'use strict';
+
+var toArray  = require('./to-array')
+  , isDate   = require('../date/is-date')
+  , isRegExp = require('../reg-exp/is-reg-exp')
+
+  , isArray = Array.isArray, stringify = JSON.stringify
+  , keyValueToString = function (value, key) { return stringify(key) + ':' + exports(value); };
+
+var sparseMap = function (arr) {
+       var i, l = arr.length, result = new Array(l);
+       for (i = 0; i < l; ++i) {
+               if (!arr.hasOwnProperty(i)) continue;
+               result[i] = exports(arr[i]);
+       }
+       return result;
+};
+
+module.exports = exports = function (obj) {
+       if (obj == null) return String(obj);
+       switch (typeof obj) {
+       case 'string':
+               return stringify(obj);
+       case 'number':
+       case 'boolean':
+       case 'function':
+               return String(obj);
+       case 'object':
+               if (isArray(obj)) return '[' + sparseMap(obj) + ']';
+               if (isRegExp(obj)) return String(obj);
+               if (isDate(obj)) return 'new Date(' + obj.valueOf() + ')';
+               return '{' + toArray(obj, keyValueToString) + '}';
+       default:
+               throw new TypeError("Serialization of " + String(obj) + "is unsupported");
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js
new file mode 100644 (file)
index 0000000..000e6bd
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var shim;
+
+if (!require('./is-implemented')() && (shim = require('./shim'))) {
+       Object.defineProperty(Object, 'setPrototypeOf',
+               { value: shim, configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js
new file mode 100644 (file)
index 0000000..ccc4099
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? Object.setPrototypeOf
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js
new file mode 100644 (file)
index 0000000..98d0c84
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var create = Object.create, getPrototypeOf = Object.getPrototypeOf
+  , x = {};
+
+module.exports = function (/*customCreate*/) {
+       var setPrototypeOf = Object.setPrototypeOf
+         , customCreate = arguments[0] || create;
+       if (typeof setPrototypeOf !== 'function') return false;
+       return getPrototypeOf(setPrototypeOf(customCreate(null), x)) === x;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js
new file mode 100644 (file)
index 0000000..4ec9446
--- /dev/null
@@ -0,0 +1,73 @@
+// Big thanks to @WebReflection for sorting this out
+// https://gist.github.com/WebReflection/5593554
+
+'use strict';
+
+var isObject      = require('../is-object')
+  , value         = require('../valid-value')
+
+  , isPrototypeOf = Object.prototype.isPrototypeOf
+  , defineProperty = Object.defineProperty
+  , nullDesc = { configurable: true, enumerable: false, writable: true,
+               value: undefined }
+  , validate;
+
+validate = function (obj, prototype) {
+       value(obj);
+       if ((prototype === null) || isObject(prototype)) return obj;
+       throw new TypeError('Prototype must be null or an object');
+};
+
+module.exports = (function (status) {
+       var fn, set;
+       if (!status) return null;
+       if (status.level === 2) {
+               if (status.set) {
+                       set = status.set;
+                       fn = function (obj, prototype) {
+                               set.call(validate(obj, prototype), prototype);
+                               return obj;
+                       };
+               } else {
+                       fn = function (obj, prototype) {
+                               validate(obj, prototype).__proto__ = prototype;
+                               return obj;
+                       };
+               }
+       } else {
+               fn = function self(obj, prototype) {
+                       var isNullBase;
+                       validate(obj, prototype);
+                       isNullBase = isPrototypeOf.call(self.nullPolyfill, obj);
+                       if (isNullBase) delete self.nullPolyfill.__proto__;
+                       if (prototype === null) prototype = self.nullPolyfill;
+                       obj.__proto__ = prototype;
+                       if (isNullBase) defineProperty(self.nullPolyfill, '__proto__', nullDesc);
+                       return obj;
+               };
+       }
+       return Object.defineProperty(fn, 'level', { configurable: false,
+               enumerable: false, writable: false, value: status.level });
+}((function () {
+       var x = Object.create(null), y = {}, set
+         , desc = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__');
+
+       if (desc) {
+               try {
+                       set = desc.set; // Opera crashes at this point
+                       set.call(x, y);
+               } catch (ignore) { }
+               if (Object.getPrototypeOf(x) === y) return { set: set, level: 2 };
+       }
+
+       x.__proto__ = y;
+       if (Object.getPrototypeOf(x) === y) return { level: 2 };
+
+       x = {};
+       x.__proto__ = y;
+       if (Object.getPrototypeOf(x) === y) return { level: 1 };
+
+       return false;
+}())));
+
+require('../create');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js
new file mode 100644 (file)
index 0000000..cde5dde
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./_iterate')('some', false);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js
new file mode 100644 (file)
index 0000000..a954abb
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var callable = require('./valid-callable')
+  , forEach  = require('./for-each')
+
+  , call = Function.prototype.call
+
+  , defaultCb = function (value, key) { return [key, value]; };
+
+module.exports = function (obj/*, cb, thisArg, compareFn*/) {
+       var a = [], cb = arguments[1], thisArg = arguments[2];
+       cb = (cb == null) ? defaultCb : callable(cb);
+
+       forEach(obj, function (value, key, obj, index) {
+               a.push(call.call(cb, thisArg, value, key, this, index));
+       }, obj, arguments[3]);
+       return a;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js
new file mode 100644 (file)
index 0000000..ce68e40
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var value  = require('./valid-value');
+
+module.exports = exports = function (code) {
+       return (new Function('return ' + value(code)))();
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js
new file mode 100644 (file)
index 0000000..c977527
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (fn) {
+       if (typeof fn !== 'function') throw new TypeError(fn + " is not a function");
+       return fn;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js
new file mode 100644 (file)
index 0000000..f82bd51
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isObject = require('./is-object');
+
+module.exports = function (value) {
+       if (!isObject(value)) throw new TypeError(value + " is not an Object");
+       return value;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js
new file mode 100644 (file)
index 0000000..36c8ec3
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (value) {
+       if (value == null) throw new TypeError("Cannot use null or undefined");
+       return value;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js
new file mode 100644 (file)
index 0000000..89e12c5
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var isArrayLike = require('./is-array-like')
+  , isObject    = require('./is-object');
+
+module.exports = function (obj) {
+       if (isObject(obj) && isArrayLike(obj)) return obj;
+       throw new TypeError(obj + " is not array-like object");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js
new file mode 100644 (file)
index 0000000..6a35b54
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isArrayLike = require('./is-array-like');
+
+module.exports = function (obj) {
+       if (isArrayLike(obj)) return obj;
+       throw new TypeError(obj + " is not array-like value");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js
new file mode 100644 (file)
index 0000000..9df3b66
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var value         = require('./valid-value')
+  , stringifiable = require('./validate-stringifiable');
+
+module.exports = function (x) { return stringifiable(value(x)); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js
new file mode 100644 (file)
index 0000000..eba7ce7
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (stringifiable) {
+       try {
+               return String(stringifiable);
+       } catch (e) {
+               throw new TypeError("Passed argument cannot be stringifed");
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json
new file mode 100644 (file)
index 0000000..2b40fe8
--- /dev/null
@@ -0,0 +1,73 @@
+{
+  "name": "es5-ext",
+  "version": "0.10.7",
+  "description": "ECMAScript 5 extensions and ES6 shims",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "ecmascript",
+    "ecmascript5",
+    "ecmascript6",
+    "es5",
+    "es6",
+    "extensions",
+    "ext",
+    "addons",
+    "extras",
+    "harmony",
+    "javascript",
+    "polyfill",
+    "shim",
+    "util",
+    "utils",
+    "utilities"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es5-ext.git"
+  },
+  "dependencies": {
+    "es6-iterator": "~0.1.3",
+    "es6-symbol": "~2.0.1"
+  },
+  "devDependencies": {
+    "tad": "~0.2.2",
+    "xlint": "~0.2.2",
+    "xlint-jslint-medikoo": "~0.1.2"
+  },
+  "scripts": {
+    "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+    "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "5b63ee02f50dfbc70dc1f62bc66b8718af443f83",
+  "bugs": {
+    "url": "https://github.com/medikoo/es5-ext/issues"
+  },
+  "homepage": "https://github.com/medikoo/es5-ext",
+  "_id": "es5-ext@0.10.7",
+  "_shasum": "dfaea50721301042e2d89c1719d43493fa821656",
+  "_from": "es5-ext@>=0.10.6 <0.11.0",
+  "_npmVersion": "2.7.4",
+  "_nodeVersion": "0.12.2",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "dfaea50721301042e2d89c1719d43493fa821656",
+    "tarball": "http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz"
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js
new file mode 100644 (file)
index 0000000..f7e7a58
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = {
+       isSticky:  require('./is-sticky'),
+       isUnicode: require('./is-unicode'),
+       match:     require('./match'),
+       replace:   require('./replace'),
+       search:    require('./search'),
+       split:     require('./split')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js
new file mode 100644 (file)
index 0000000..830a481
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var validRegExp = require('../valid-reg-exp')
+
+  , re = /\/[a-xz]*y[a-xz]*$/;
+
+module.exports = function () {
+       return Boolean(String(validRegExp(this)).match(re));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js
new file mode 100644 (file)
index 0000000..b005f6d
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var validRegExp = require('../valid-reg-exp')
+
+  , re = /\/[a-xz]*u[a-xz]*$/;
+
+module.exports = function () {
+       return Boolean(String(validRegExp(this)).match(re));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js
new file mode 100644 (file)
index 0000000..921c936
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'match', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js
new file mode 100644 (file)
index 0000000..0534ac3
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.match
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js
new file mode 100644 (file)
index 0000000..b7e9964
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /foo/;
+
+module.exports = function () {
+       if (typeof re.match !== 'function') return false;
+       return re.match('barfoobar') && !re.match('elo');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js
new file mode 100644 (file)
index 0000000..4f99cf4
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string) {
+       validRegExp(this);
+       return String(string).match(this);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js
new file mode 100644 (file)
index 0000000..ad580de
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'replace', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js
new file mode 100644 (file)
index 0000000..5658177
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.replace
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js
new file mode 100644 (file)
index 0000000..1b42d25
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /foo/;
+
+module.exports = function () {
+       if (typeof re.replace !== 'function') return false;
+       return re.replace('foobar', 'mar') === 'marbar';
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js
new file mode 100644 (file)
index 0000000..c3e6aeb
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string, replaceValue) {
+       validRegExp(this);
+       return String(string).replace(this, replaceValue);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js
new file mode 100644 (file)
index 0000000..3804f4e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'search', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js
new file mode 100644 (file)
index 0000000..67995d4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.search
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js
new file mode 100644 (file)
index 0000000..efba889
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /foo/;
+
+module.exports = function () {
+       if (typeof re.search !== 'function') return false;
+       return re.search('barfoo') === 3;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js
new file mode 100644 (file)
index 0000000..6d9dcae
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string) {
+       validRegExp(this);
+       return String(string).search(this);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js
new file mode 100644 (file)
index 0000000..50facb6
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'split', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js
new file mode 100644 (file)
index 0000000..f101f5a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? RegExp.prototype.split
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js
new file mode 100644 (file)
index 0000000..7244c99
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var re = /\|/;
+
+module.exports = function () {
+       if (typeof re.split !== 'function') return false;
+       return re.split('bar|foo')[1] === 'foo';
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js
new file mode 100644 (file)
index 0000000..76154e7
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var validRegExp = require('../../valid-reg-exp');
+
+module.exports = function (string) {
+       validRegExp(this);
+       return String(string).split(this);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js
new file mode 100644 (file)
index 0000000..7e8af1d
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isSticky = require('../is-sticky');
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'sticky', { configurable: true,
+               enumerable: false, get: isSticky });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js
new file mode 100644 (file)
index 0000000..379c4a5
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return RegExp.prototype.sticky === false;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js
new file mode 100644 (file)
index 0000000..5a82a4d
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isUnicode = require('../is-unicode');
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(RegExp.prototype, 'unicode', { configurable: true,
+               enumerable: false, get: isUnicode });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js
new file mode 100644 (file)
index 0000000..a8b15b3
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function () {
+       return RegExp.prototype.unicode === false;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js
new file mode 100644 (file)
index 0000000..a2363fc
--- /dev/null
@@ -0,0 +1,9 @@
+// Thanks to Andrew Clover:
+// http://stackoverflow.com/questions/3561493
+// /is-there-a-regexp-escape-function-in-javascript
+
+'use strict';
+
+var re = /[\-\/\\\^$*+?.()|\[\]{}]/g;
+
+module.exports = function (str) { return String(str).replace(re, '\\$&'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js
new file mode 100644 (file)
index 0000000..75ea313
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = {
+       '#':         require('./#'),
+       escape:      require('./escape'),
+       isRegExp:    require('./is-reg-exp'),
+       validRegExp: require('./valid-reg-exp')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js
new file mode 100644 (file)
index 0000000..6eb1297
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call(/a/);
+
+module.exports = function (x) {
+       return (x && (x instanceof RegExp || (toString.call(x) === id))) || false;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js
new file mode 100644 (file)
index 0000000..d3a7764
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isRegExp = require('./is-reg-exp');
+
+module.exports = function (x) {
+       if (!isRegExp(x)) throw new TypeError(x + " is not a RegExp object");
+       return x;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..4494d7b
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, require('es6-symbol').iterator,
+               { value: require('./shim'), configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..22f15e6
--- /dev/null
@@ -0,0 +1,4 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype[require('es6-symbol').iterator] : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..f5c462d
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function () {
+       var str = '🙈f', iterator, result;
+       if (typeof str[iteratorSymbol] !== 'function') return false;
+       iterator = str[iteratorSymbol]();
+       if (!iterator) return false;
+       if (typeof iterator.next !== 'function') return false;
+       result = iterator.next();
+       if (!result) return false;
+       if (result.value !== '🙈') return false;
+       if (result.done !== false) return false;
+       return true;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..0be3029
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var StringIterator = require('es6-iterator/string')
+  , value          = require('../../../object/valid-value');
+
+module.exports = function () { return new StringIterator(value(this)); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js
new file mode 100644 (file)
index 0000000..77bd251
--- /dev/null
@@ -0,0 +1,33 @@
+// Based on: https://github.com/mathiasbynens/String.prototype.at
+// Thanks @mathiasbynens !
+
+'use strict';
+
+var toInteger  = require('../../number/to-integer')
+  , validValue = require('../../object/valid-value');
+
+module.exports = function (pos) {
+       var str = String(validValue(this)), size = str.length
+         , cuFirst, cuSecond, nextPos, len;
+       pos = toInteger(pos);
+
+       // Account for out-of-bounds indices
+       // The odd lower bound is because the ToInteger operation is
+       // going to round `n` to `0` for `-1 < n <= 0`.
+       if (pos <= -1 || pos >= size) return '';
+
+       // Second half of `ToInteger`
+       pos = pos | 0;
+       // Get the first code unit and code unit value
+       cuFirst = str.charCodeAt(pos);
+       nextPos = pos + 1;
+       len = 1;
+       if ( // check if it’s the start of a surrogate pair
+               (cuFirst >= 0xD800) && (cuFirst <= 0xDBFF) && // high surrogate
+                       (size > nextPos) // there is a next code unit
+       ) {
+               cuSecond = str.charCodeAt(nextPos);
+               if (cuSecond >= 0xDC00 && cuSecond <= 0xDFFF) len = 2; // low surrogate
+       }
+       return str.slice(pos, pos + len);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js
new file mode 100644 (file)
index 0000000..1cb8d12
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var replace = String.prototype.replace
+  , re = /([A-Z])/g;
+
+module.exports = function () {
+       var str = replace.call(this, re, "-$1").toLowerCase();
+       if (str[0] === '-') str = str.slice(1);
+       return str;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js
new file mode 100644 (file)
index 0000000..ed76827
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function () {
+       var str = String(value(this));
+       return str.charAt(0).toUpperCase() + str.slice(1);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js
new file mode 100644 (file)
index 0000000..599cb83
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var toLowerCase = String.prototype.toLowerCase;
+
+module.exports = function (other) {
+       return toLowerCase.call(this).localeCompare(toLowerCase.call(String(other)));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js
new file mode 100644 (file)
index 0000000..1e7a37b
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'codePointAt',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js
new file mode 100644 (file)
index 0000000..7e91d83
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.codePointAt
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js
new file mode 100644 (file)
index 0000000..b271589
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'abc\uD834\uDF06def';
+
+module.exports = function () {
+       if (typeof str.codePointAt !== 'function') return false;
+       return str.codePointAt(3) === 0x1D306;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js
new file mode 100644 (file)
index 0000000..1c9038b
--- /dev/null
@@ -0,0 +1,26 @@
+// Based on: https://github.com/mathiasbynens/String.prototype.codePointAt
+// Thanks @mathiasbynens !
+
+'use strict';
+
+var toInteger  = require('../../../number/to-integer')
+  , validValue = require('../../../object/valid-value');
+
+module.exports = function (pos) {
+       var str = String(validValue(this)), l = str.length, first, second;
+       pos = toInteger(pos);
+
+       // Account for out-of-bounds indices:
+       if (pos < 0 || pos >= l) return undefined;
+
+       // Get the first code unit
+       first = str.charCodeAt(pos);
+       if ((first >= 0xD800) && (first <= 0xDBFF) && (l > pos + 1)) {
+               second = str.charCodeAt(pos + 1);
+               if (second >= 0xDC00 && second <= 0xDFFF) {
+                       // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+                       return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
+               }
+       }
+       return first;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js
new file mode 100644 (file)
index 0000000..6b7a3c0
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'contains',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js
new file mode 100644 (file)
index 0000000..abb3e37
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.contains
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js
new file mode 100644 (file)
index 0000000..6f7d4b7
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'razdwatrzy';
+
+module.exports = function () {
+       if (typeof str.contains !== 'function') return false;
+       return ((str.contains('dwa') === true) && (str.contains('foo') === false));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js
new file mode 100644 (file)
index 0000000..89e39e7
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var indexOf = String.prototype.indexOf;
+
+module.exports = function (searchString/*, position*/) {
+       return indexOf.call(this, searchString, arguments[1]) > -1;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js
new file mode 100644 (file)
index 0000000..0b09025
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'endsWith',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js
new file mode 100644 (file)
index 0000000..d2d9484
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.endsWith
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js
new file mode 100644 (file)
index 0000000..f3bb008
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'razdwatrzy';
+
+module.exports = function () {
+       if (typeof str.endsWith !== 'function') return false;
+       return ((str.endsWith('trzy') === true) && (str.endsWith('raz') === false));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js
new file mode 100644 (file)
index 0000000..26cbdb1
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var toInteger = require('../../../number/to-integer')
+  , value     = require('../../../object/valid-value')
+
+  , min = Math.min, max = Math.max;
+
+module.exports = function (searchString/*, endPosition*/) {
+       var self, start, endPos;
+       self = String(value(this));
+       searchString = String(searchString);
+       endPos = arguments[1];
+       start = ((endPos == null) ? self.length :
+                       min(max(toInteger(endPos), 0), self.length)) - searchString.length;
+       return (start < 0) ? false : (self.indexOf(searchString, start) === start);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js
new file mode 100644 (file)
index 0000000..8928b02
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var replace = String.prototype.replace
+
+  , re = /-([a-z0-9])/g
+  , toUpperCase = function (m, a) { return a.toUpperCase(); };
+
+module.exports = function () { return replace.call(this, re, toUpperCase); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js
new file mode 100644 (file)
index 0000000..223bd82
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var repeat = require('./repeat')
+
+  , replace = String.prototype.replace
+  , re = /(\r\n|[\n\r\u2028\u2029])([\u0000-\u0009\u000b-\uffff]+)/g;
+
+module.exports = function (indent/*, count*/) {
+       var count = arguments[1];
+       indent = repeat.call(String(indent), (count == null) ? 1 : count);
+       return indent + replace.call(this, re, '$1' + indent + '$2');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js
new file mode 100644 (file)
index 0000000..d45d747
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+module.exports = {
+       '@@iterator':           require('./@@iterator'),
+       at:                     require('./at'),
+       camelToHyphen:          require('./camel-to-hyphen'),
+       capitalize:             require('./capitalize'),
+       caseInsensitiveCompare: require('./case-insensitive-compare'),
+       codePointAt:            require('./code-point-at'),
+       contains:               require('./contains'),
+       hyphenToCamel:          require('./hyphen-to-camel'),
+       endsWith:               require('./ends-with'),
+       indent:                 require('./indent'),
+       last:                   require('./last'),
+       normalize:              require('./normalize'),
+       pad:                    require('./pad'),
+       plainReplace:           require('./plain-replace'),
+       plainReplaceAll:        require('./plain-replace-all'),
+       repeat:                 require('./repeat'),
+       startsWith:             require('./starts-with')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js
new file mode 100644 (file)
index 0000000..d5cf46e
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function () {
+       var self = String(value(this)), l = self.length;
+       return l ? self[l - 1] : null;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js
new file mode 100644 (file)
index 0000000..e4e00a3
--- /dev/null
@@ -0,0 +1,69 @@
+'use strict';
+
+module.exports = { 0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},
+       256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},
+       512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256]},
+       768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256]},
+       1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},
+       1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},
+       1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},
+       1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},
+       2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230]},
+       2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},
+       2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9]},
+       2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},
+       3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},
+       3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},
+       3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},
+       3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},
+       4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},
+       4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70080:[,9]},
+       4864:{4957:[,230],4958:[,230],4959:[,230]},
+       5632:{71350:[,9],71351:[,7]},
+       5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
+       6144:{6313:[,228]},
+       6400:{6457:[,222],6458:[,230],6459:[,220]},
+       6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220]},
+       6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},
+       7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230]},
+       7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},
+       7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},
+       7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},
+       8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},
+       8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},
+       8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},
+       8960:{9001:[[12296]],9002:[[12297]]},
+       9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},
+       10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},
+       11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
+       11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},
+       11776:{11935:[[27597],256],12019:[[40863],256]},
+       12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},
+       12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},
+       12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},
+       12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},
+       13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},
+       42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42655:[,230],42736:[,230],42737:[,230]},
+       42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
+       43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},
+       43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
+       43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
+       43776:{44013:[,9]},
+       53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},
+       53760:{119362:[,230],119363:[,230],119364:[,230]},
+       54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},
+       54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},
+       54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},
+       55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},
+       60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},
+       61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},
+       61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},
+       63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},
+       63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},
+       64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},
+       64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},
+       64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},
+       64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},
+       65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},
+       65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js
new file mode 100644 (file)
index 0000000..cfc710e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'normalize',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js
new file mode 100644 (file)
index 0000000..619b096
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.normalize
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js
new file mode 100644 (file)
index 0000000..67c8d8d
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'æøåäüö';
+
+module.exports = function () {
+       if (typeof str.normalize !== 'function') return false;
+       return str.normalize('NFKD') === 'æøåäüö';
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js
new file mode 100644 (file)
index 0000000..a379989
--- /dev/null
@@ -0,0 +1,289 @@
+// Taken from: https://github.com/walling/unorm/blob/master/lib/unorm.js
+
+/*
+       * UnicodeNormalizer 1.0.0
+       * Copyright (c) 2008 Matsuza
+       * Dual licensed under the MIT (MIT-LICENSE.txt) and
+       * GPL (GPL-LICENSE.txt) licenses.
+       * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
+       * $Rev: 13309 $
+*/
+
+'use strict';
+
+var primitiveSet = require('../../../object/primitive-set')
+  , validValue   = require('../../../object/valid-value')
+  , data         = require('./_data')
+
+  , floor = Math.floor
+  , forms = primitiveSet('NFC', 'NFD', 'NFKC', 'NFKD')
+
+  , DEFAULT_FEATURE = [null, 0, {}], CACHE_THRESHOLD = 10, SBase = 0xAC00
+  , LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21
+  , TCount = 28, NCount = VCount * TCount, SCount = LCount * NCount
+  , UChar, cache = {}, cacheCounter = [], i, fromCache, fromData, fromCpOnly
+  , fromRuleBasedJamo, fromCpFilter, strategies, UCharIterator
+  , RecursDecompIterator, DecompIterator, CompIterator, createIterator
+  , normalize;
+
+UChar = function (cp, feature) {
+       this.codepoint = cp;
+       this.feature = feature;
+};
+
+// Strategies
+for (i = 0; i <= 0xFF; ++i) cacheCounter[i] = 0;
+
+fromCache = function (next, cp, needFeature) {
+       var ret = cache[cp];
+       if (!ret) {
+               ret = next(cp, needFeature);
+               if (!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD) {
+                       cache[cp] = ret;
+               }
+       }
+       return ret;
+};
+
+fromData = function (next, cp, needFeature) {
+       var hash = cp & 0xFF00, dunit = UChar.udata[hash] || {}, f = dunit[cp];
+       return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
+};
+fromCpOnly = function (next, cp, needFeature) {
+       return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
+};
+
+fromRuleBasedJamo = function (next, cp, needFeature) {
+       var c, base, i, arr, SIndex, TIndex, feature, j;
+       if (cp < LBase || (LBase + LCount <= cp && cp < SBase) ||
+                       (SBase + SCount < cp)) {
+               return next(cp, needFeature);
+       }
+       if (LBase <= cp && cp < LBase + LCount) {
+               c = {};
+               base = (cp - LBase) * VCount;
+               for (i = 0; i < VCount; ++i) {
+                       c[VBase + i] = SBase + TCount * (i + base);
+               }
+               arr = new Array(3);
+               arr[2] = c;
+               return new UChar(cp, arr);
+       }
+
+       SIndex = cp - SBase;
+       TIndex = SIndex % TCount;
+       feature = [];
+       if (TIndex !== 0) {
+               feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
+       } else {
+               feature[0] = [LBase + floor(SIndex / NCount), VBase +
+                       floor((SIndex % NCount) / TCount)];
+               feature[2] = {};
+               for (j = 1; j < TCount; ++j) {
+                       feature[2][TBase + j] = cp + j;
+               }
+       }
+       return new UChar(cp, feature);
+};
+
+fromCpFilter = function (next, cp, needFeature) {
+       return (cp < 60) || ((13311 < cp) && (cp < 42607))
+               ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
+};
+
+strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
+
+UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
+       return function (cp, needFeature) { return strategy(next, cp, needFeature); };
+}, null);
+
+UChar.isHighSurrogate = function (cp) { return cp >= 0xD800 && cp <= 0xDBFF; };
+UChar.isLowSurrogate = function (cp) { return cp >= 0xDC00 && cp <= 0xDFFF; };
+
+UChar.prototype.prepFeature = function () {
+       if (!this.feature) {
+               this.feature = UChar.fromCharCode(this.codepoint, true).feature;
+       }
+};
+
+UChar.prototype.toString = function () {
+       var x;
+       if (this.codepoint < 0x10000) return String.fromCharCode(this.codepoint);
+       x = this.codepoint - 0x10000;
+       return String.fromCharCode(floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
+};
+
+UChar.prototype.getDecomp = function () {
+       this.prepFeature();
+       return this.feature[0] || null;
+};
+
+UChar.prototype.isCompatibility = function () {
+       this.prepFeature();
+       return !!this.feature[1] && (this.feature[1] & (1 << 8));
+};
+UChar.prototype.isExclude = function () {
+       this.prepFeature();
+       return !!this.feature[1] && (this.feature[1] & (1 << 9));
+};
+UChar.prototype.getCanonicalClass = function () {
+       this.prepFeature();
+       return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
+};
+UChar.prototype.getComposite = function (following) {
+       var cp;
+       this.prepFeature();
+       if (!this.feature[2]) return null;
+       cp = this.feature[2][following.codepoint];
+       return cp ? UChar.fromCharCode(cp) : null;
+};
+
+UCharIterator = function (str) {
+       this.str = str;
+       this.cursor = 0;
+};
+UCharIterator.prototype.next = function () {
+       if (!!this.str && this.cursor < this.str.length) {
+               var cp = this.str.charCodeAt(this.cursor++), d;
+               if (UChar.isHighSurrogate(cp) && this.cursor < this.str.length &&
+                               UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))) {
+                       cp = (cp - 0xD800) * 0x400 + (d - 0xDC00) + 0x10000;
+                       ++this.cursor;
+               }
+               return UChar.fromCharCode(cp);
+       }
+       this.str = null;
+       return null;
+};
+
+RecursDecompIterator = function (it, cano) {
+       this.it = it;
+       this.canonical = cano;
+       this.resBuf = [];
+};
+
+RecursDecompIterator.prototype.next = function () {
+       var recursiveDecomp, uchar;
+       recursiveDecomp = function (cano, uchar) {
+               var decomp = uchar.getDecomp(), ret, i, a, j;
+               if (!!decomp && !(cano && uchar.isCompatibility())) {
+                       ret = [];
+                       for (i = 0; i < decomp.length; ++i) {
+                               a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
+                               //ret.concat(a); //<-why does not this work?
+                               //following block is a workaround.
+                               for (j = 0; j < a.length; ++j) ret.push(a[j]);
+                       }
+                       return ret;
+               }
+               return [uchar];
+       };
+       if (this.resBuf.length === 0) {
+               uchar = this.it.next();
+               if (!uchar) return null;
+               this.resBuf = recursiveDecomp(this.canonical, uchar);
+       }
+       return this.resBuf.shift();
+};
+
+DecompIterator = function (it) {
+       this.it = it;
+       this.resBuf = [];
+};
+
+DecompIterator.prototype.next = function () {
+       var cc, uchar, inspt, uchar2, cc2;
+       if (this.resBuf.length === 0) {
+               do {
+                       uchar = this.it.next();
+                       if (!uchar) break;
+                       cc = uchar.getCanonicalClass();
+                       inspt = this.resBuf.length;
+                       if (cc !== 0) {
+                               for (inspt; inspt > 0; --inspt) {
+                                       uchar2 = this.resBuf[inspt - 1];
+                                       cc2 = uchar2.getCanonicalClass();
+                                       if (cc2 <= cc) break;
+                               }
+                       }
+                       this.resBuf.splice(inspt, 0, uchar);
+               } while (cc !== 0);
+       }
+       return this.resBuf.shift();
+};
+
+CompIterator = function (it) {
+       this.it = it;
+       this.procBuf = [];
+       this.resBuf = [];
+       this.lastClass = null;
+};
+
+CompIterator.prototype.next = function () {
+       var uchar, starter, composite, cc;
+       while (this.resBuf.length === 0) {
+               uchar = this.it.next();
+               if (!uchar) {
+                       this.resBuf = this.procBuf;
+                       this.procBuf = [];
+                       break;
+               }
+               if (this.procBuf.length === 0) {
+                       this.lastClass = uchar.getCanonicalClass();
+                       this.procBuf.push(uchar);
+               } else {
+                       starter = this.procBuf[0];
+                       composite = starter.getComposite(uchar);
+                       cc = uchar.getCanonicalClass();
+                       if (!!composite && (this.lastClass < cc || this.lastClass === 0)) {
+                               this.procBuf[0] = composite;
+                       } else {
+                               if (cc === 0) {
+                                       this.resBuf = this.procBuf;
+                                       this.procBuf = [];
+                               }
+                               this.lastClass = cc;
+                               this.procBuf.push(uchar);
+                       }
+               }
+       }
+       return this.resBuf.shift();
+};
+
+createIterator = function (mode, str) {
+       switch (mode) {
+       case "NFD":
+               return new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), true)
+               );
+       case "NFKD":
+               return new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), false)
+               );
+       case "NFC":
+               return new CompIterator(new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), true)
+               ));
+       case "NFKC":
+               return new CompIterator(new DecompIterator(
+                       new RecursDecompIterator(new UCharIterator(str), false)
+               ));
+       }
+       throw mode + " is invalid";
+};
+normalize = function (mode, str) {
+       var it = createIterator(mode, str), ret = "", uchar;
+       while (!!(uchar = it.next())) ret += uchar.toString();
+       return ret;
+};
+
+/* Unicode data */
+UChar.udata =  data;
+
+module.exports = function (/*form*/) {
+       var str = String(validValue(this)), form = arguments[0];
+       if (form === undefined) form = 'NFC';
+       else form = String(form);
+       if (!forms[form]) throw new RangeError('Invalid normalization form: ' + form);
+       return normalize(form, str);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js
new file mode 100644 (file)
index 0000000..f227f23
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var toInteger = require('../../number/to-integer')
+  , value     = require('../../object/valid-value')
+  , repeat    = require('./repeat')
+
+  , abs = Math.abs, max = Math.max;
+
+module.exports = function (fill/*, length*/) {
+       var self = String(value(this))
+         , sLength = self.length
+         , length = arguments[1];
+
+       length = isNaN(length) ? 1 : toInteger(length);
+       fill = repeat.call(String(fill), abs(length));
+       if (length >= 0) return fill.slice(0, max(0, length - sLength)) + self;
+       return self + (((sLength + length) >= 0) ? '' : fill.slice(length + sLength));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js
new file mode 100644 (file)
index 0000000..678b1cb
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var value = require('../../object/valid-value');
+
+module.exports = function (search, replace) {
+       var index, pos = 0, str = String(value(this)), sl, rl;
+       search = String(search);
+       replace = String(replace);
+       sl = search.length;
+       rl = replace.length;
+       while ((index = str.indexOf(search, pos)) !== -1) {
+               str = str.slice(0, index) + replace + str.slice(index + sl);
+               pos = index + rl;
+       }
+       return str;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js
new file mode 100644 (file)
index 0000000..24ce16d
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var indexOf = String.prototype.indexOf, slice = String.prototype.slice;
+
+module.exports = function (search, replace) {
+       var index = indexOf.call(this, search);
+       if (index === -1) return String(this);
+       return slice.call(this, 0, index) + replace +
+               slice.call(this, index + String(search).length);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js
new file mode 100644 (file)
index 0000000..4c39b9f
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'repeat',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js
new file mode 100644 (file)
index 0000000..15a800e
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.repeat
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js
new file mode 100644 (file)
index 0000000..f7b8750
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var str = 'foo';
+
+module.exports = function () {
+       if (typeof str.repeat !== 'function') return false;
+       return (str.repeat(2) === 'foofoo');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js
new file mode 100644 (file)
index 0000000..0a3928b
--- /dev/null
@@ -0,0 +1,22 @@
+// Thanks: http://www.2ality.com/2014/01/efficient-string-repeat.html
+
+'use strict';
+
+var value     = require('../../../object/valid-value')
+  , toInteger = require('../../../number/to-integer');
+
+module.exports = function (count) {
+       var str = String(value(this)), result;
+       count = toInteger(count);
+       if (count < 0) throw new RangeError("Count must be >= 0");
+       if (!isFinite(count)) throw new RangeError("Count must be < ∞");
+       result = '';
+       if (!count) return result;
+       while (true) {
+               if (count & 1) result += str;
+               count >>>= 1;
+               if (count <= 0) break;
+               str += str;
+       }
+       return result;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js
new file mode 100644 (file)
index 0000000..d4f1eaf
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String.prototype, 'startsWith',
+               { value: require('./shim'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js
new file mode 100644 (file)
index 0000000..ec66a7c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.prototype.startsWith
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js
new file mode 100644 (file)
index 0000000..a0556f1
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var str = 'razdwatrzy';
+
+module.exports = function () {
+       if (typeof str.startsWith !== 'function') return false;
+       return ((str.startsWith('trzy') === false) &&
+               (str.startsWith('raz') === true));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js
new file mode 100644 (file)
index 0000000..aa5aaf4
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var value     = require('../../../object/valid-value')
+  , toInteger = require('../../../number/to-integer')
+
+  , max = Math.max, min = Math.min;
+
+module.exports = function (searchString/*, position*/) {
+       var start, self = String(value(this));
+       start = min(max(toInteger(arguments[1]), 0), self.length);
+       return (self.indexOf(searchString, start) === start);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js
new file mode 100644 (file)
index 0000000..f1de1e3
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var isCallable = require('../object/is-callable')
+  , value      = require('../object/valid-value')
+
+  , call = Function.prototype.call;
+
+module.exports = function (fmap) {
+       fmap = Object(value(fmap));
+       return function (pattern) {
+               var context = value(this);
+               pattern = String(pattern);
+               return pattern.replace(/%([a-zA-Z]+)|\\([\u0000-\uffff])/g,
+                       function (match, token, escape) {
+                               var t, r;
+                               if (escape) return escape;
+                               t = token;
+                               while (t && !(r = fmap[t])) t = t.slice(0, -1);
+                               if (!r) return match;
+                               if (isCallable(r)) r = call.call(r, context);
+                               return r + token.slice(t.length);
+                       });
+       };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js
new file mode 100644 (file)
index 0000000..b062331
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String, 'fromCodePoint', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js
new file mode 100644 (file)
index 0000000..3f3110b
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.fromCodePoint
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js
new file mode 100644 (file)
index 0000000..840a20e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function () {
+       var fromCodePoint = String.fromCodePoint;
+       if (typeof fromCodePoint !== 'function') return false;
+       return fromCodePoint(0x1D306, 0x61, 0x1D307) === '\ud834\udf06a\ud834\udf07';
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js
new file mode 100644 (file)
index 0000000..41fd737
--- /dev/null
@@ -0,0 +1,30 @@
+// Based on:
+// http://norbertlindenberg.com/2012/05/ecmascript-supplementary-characters/
+// and:
+// https://github.com/mathiasbynens/String.fromCodePoint/blob/master
+// /fromcodepoint.js
+
+'use strict';
+
+var floor = Math.floor, fromCharCode = String.fromCharCode;
+
+module.exports = function (codePoint/*, …codePoints*/) {
+       var chars = [], l = arguments.length, i, c, result = '';
+       for (i = 0; i < l; ++i) {
+               c = Number(arguments[i]);
+               if (!isFinite(c) || c < 0 || c > 0x10FFFF || floor(c) !== c) {
+                       throw new RangeError("Invalid code point " + c);
+               }
+
+               if (c < 0x10000) {
+                       chars.push(c);
+               } else {
+                       c -= 0x10000;
+                       chars.push((c >> 10) + 0xD800, (c % 0x400) + 0xDC00);
+               }
+               if (i + 1 !== l && chars.length <= 0x4000) continue;
+               result += fromCharCode.apply(null, chars);
+               chars.length = 0;
+       }
+       return result;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js
new file mode 100644 (file)
index 0000000..dbbcdf6
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = {
+       '#':           require('./#'),
+       formatMethod:  require('./format-method'),
+       fromCodePoint: require('./from-code-point'),
+       isString:      require('./is-string'),
+       randomUniq:    require('./random-uniq'),
+       raw:           require('./raw')
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js
new file mode 100644 (file)
index 0000000..719aeec
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+var toString = Object.prototype.toString
+
+  , id = toString.call('');
+
+module.exports = function (x) {
+       return (typeof x === 'string') || (x && (typeof x === 'object') &&
+               ((x instanceof String) || (toString.call(x) === id))) || false;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js
new file mode 100644 (file)
index 0000000..54ae6f8
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var generated = Object.create(null)
+
+  , random = Math.random;
+
+module.exports = function () {
+       var str;
+       do { str = random().toString(36).slice(2); } while (generated[str]);
+       return str;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js
new file mode 100644 (file)
index 0000000..c417e65
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(String, 'raw', { value: require('./shim'),
+               configurable: true, enumerable: false, writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js
new file mode 100644 (file)
index 0000000..504a5de
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = require('./is-implemented')()
+       ? String.raw
+       : require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js
new file mode 100644 (file)
index 0000000..d7204c0
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function () {
+       var raw = String.raw, test;
+       if (typeof raw !== 'function') return false;
+       test = ['foo\nbar', 'marko\n'];
+       test.raw = ['foo\\nbar', 'marko\\n'];
+       return raw(test, 'INSE\nRT') === 'foo\\nbarINSE\nRTmarko\\n';
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js
new file mode 100644 (file)
index 0000000..7096efb
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var toPosInt   = require('../../number/to-pos-integer')
+  , validValue = require('../../object/valid-value')
+
+  , reduce = Array.prototype.reduce;
+
+module.exports = function (callSite/*,  …substitutions*/) {
+       var args, rawValue = Object(validValue(Object(validValue(callSite)).raw));
+       if (!toPosInt(rawValue.length)) return '';
+       args = arguments;
+       return reduce.call(rawValue, function (a, b, i) {
+               return a + String(args[i]) + b;
+       });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/__tad.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/__tad.js
new file mode 100644 (file)
index 0000000..8845778
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+exports.context = null;
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..f060539
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/@@iterator/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..e590d8f
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: '1', done: false });
+       a.deep(iterator.next(), { value: '2', done: false });
+       a.deep(iterator.next(), { value: '3', done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/_compare-by-length.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/_compare-by-length.js
new file mode 100644 (file)
index 0000000..e40c305
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = [4, 5, 6], y = { length: 8 }, w = {}, z = { length: 1 };
+
+       a.deep([x, y, w, z].sort(t), [w, z, x, y]);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/binary-search.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/binary-search.js
new file mode 100644 (file)
index 0000000..cf33173
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var compare  = function (value) { return this - value; };
+
+module.exports = function (t, a) {
+       var arr;
+       arr = [2, 5, 5, 8, 34, 67, 98, 345, 678];
+
+       // highest, equal match
+       a(t.call(arr, compare.bind(1)), 0, "All higher");
+       a(t.call(arr, compare.bind(679)), arr.length - 1, "All lower");
+       a(t.call(arr, compare.bind(4)), 0, "Mid");
+       a(t.call(arr, compare.bind(5)), 2, "Match");
+       a(t.call(arr, compare.bind(6)), 2, "Above");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/clear.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/clear.js
new file mode 100644 (file)
index 0000000..a5b1c97
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = [1, 2, {}, 4];
+       a(t.call(x), x, "Returns same array");
+       a.deep(x, [], "Empties array");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/compact.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/compact.js
new file mode 100644 (file)
index 0000000..6390eb2
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this).length, 3);
+       },
+       "": function (t, a) {
+               var o, x, y, z;
+               o = {};
+               x = [0, 1, "", null, o, false, undefined, true];
+               y = x.slice(0);
+
+               a.not(z = t.call(x), x, "Returns different object");
+               a.deep(x, y, "Origin not changed");
+               a.deep(z, [0, 1, "", o, false, true], "Result");
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/implement.js
new file mode 100644 (file)
index 0000000..3bdbe86
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/concat/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat/shim.js
new file mode 100644 (file)
index 0000000..c30eb7e
--- /dev/null
@@ -0,0 +1,26 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr = [1, 3, 45], x = {}, subArr, subArr2, result;
+
+       a.deep(t.call(arr, '2d', x, ['ere', 'fe', x], false, null),
+               [1, 3, 45, '2d', x, 'ere', 'fe', x, false, null], "Plain array");
+
+       subArr = new SubArray('lol', 'miszko');
+       subArr2 = new SubArray('elo', 'fol');
+
+       result = t.call(subArr, 'df', arr, 'fef', subArr2, null);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, ['lol', 'miszko', 'df', 1, 3, 45, 'fef', 'elo', 'fol', null],
+               "Spreable by default");
+
+       SubArray.prototype['@@isConcatSpreadable'] = false;
+
+       result = t.call(subArr, 'df', arr, 'fef', subArr2, null);
+       a.deep(result, ['lol', 'miszko', 'df', 1, 3, 45, 'fef', subArr2, null],
+               "Non spreadable");
+
+       delete SubArray.prototype['@@isConcatSpreadable'];
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/contains.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/contains.js
new file mode 100644 (file)
index 0000000..21404a1
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this, this[1]), true, "Contains");
+               a(t.call(this, {}), false, "Does Not contain");
+       },
+       "": function (t, a) {
+               var o, x = {}, y = {};
+
+               o = [1, 'raz', x];
+
+               a(t.call(o, 1), true, "First");
+               a(t.call(o, '1'), false, "Type coercion");
+               a(t.call(o, 'raz'), true, "Primitive");
+               a(t.call(o, 'foo'), false, "Primitive not found");
+               a(t.call(o, x), true, "Object found");
+               a(t.call(o, y), false, "Object not found");
+               a(t.call(o, 1, 1), false, "Position");
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/implement.js
new file mode 100644 (file)
index 0000000..3607047
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/copy-within/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within/shim.js
new file mode 100644 (file)
index 0000000..93c85ea
--- /dev/null
@@ -0,0 +1,29 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var args, x;
+
+       a.h1("2 args");
+       x = [1, 2, 3, 4, 5];
+       t.call(x, 0, 3);
+       a.deep(x, [4, 5, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 3), [1, 4, 5, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 2), [1, 3, 4, 5, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 2, 2), [1, 2, 3, 4, 5]);
+
+       a.h1("3 args");
+       a.deep(t.call([1, 2, 3, 4, 5], 0, 3, 4), [4, 2, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 3, 4), [1, 4, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 1, 2, 4), [1, 3, 4, 4, 5]);
+
+       a.h1("Negative args");
+       a.deep(t.call([1, 2, 3, 4, 5], 0, -2), [4, 5, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], 0, -2, -1), [4, 2, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], -4, -3, -2), [1, 3, 3, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], -4, -3, -1), [1, 3, 4, 4, 5]);
+       a.deep(t.call([1, 2, 3, 4, 5], -4, -3), [1, 3, 4, 5, 5]);
+
+       a.h1("Array-likes");
+       args = { 0: 1, 1: 2, 2: 3, length: 3 };
+       a.deep(t.call(args, -2, 0), { '0': 1, '1': 1, '2': 2, length: 3 });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/diff.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/diff.js
new file mode 100644 (file)
index 0000000..bcfa3a0
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a.deep(t.call(this, this), []);
+       },
+       "": function (t, a) {
+               var x = {}, y = {};
+
+               a.deep(t.call([1, 'raz', x, 2, 'trzy', y], [x, 2, 'trzy']), [1, 'raz', y],
+                       "Scope longer");
+               a.deep(t.call([1, 'raz', x], [x, 2, 'trzy', 1, y]), ['raz'],
+                       "Arg longer");
+               a.deep(t.call([1, 'raz', x], []), [1, 'raz', x], "Empty arg");
+               a.deep(t.call([], [1, y, 'sdfs']), [], "Empty scope");
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-index-of.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-index-of.js
new file mode 100644 (file)
index 0000000..4cf6c63
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([3, 'raz', {}, x, {}], x), 3, "Regular");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN), 2, "NaN");
+       a(t.call([3, 'raz', 0, {}, -0], -0), 2, "-0");
+       a(t.call([3, 'raz', -0, {}, 0], +0), 2, "+0");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, 3), 4, "fromIndex");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, -1), 4, "fromIndex negative #1");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, -2), 4, "fromIndex negative #2");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, -3), 2, "fromIndex negative #3");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-last-index-of.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/e-last-index-of.js
new file mode 100644 (file)
index 0000000..ed4f700
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([3, 'raz', {}, x, {}, x], x), 5, "Regular");
+       a(t.call([3, 'raz', NaN, {}, x], NaN), 2, "NaN");
+       a(t.call([3, 'raz', 0, {}, -0], -0), 4, "-0");
+       a(t.call([3, 'raz', -0, {}, 0], +0), 4, "+0");
+       a(t.call([3, 'raz', NaN, {}, NaN], NaN, 3), 2, "fromIndex");
+       a(t.call([3, 'raz', NaN, 2, NaN], NaN, -1), 4, "Negative fromIndex #1");
+       a(t.call([3, 'raz', NaN, 2, NaN], NaN, -2), 2, "Negative fromIndex #2");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/implement.js
new file mode 100644 (file)
index 0000000..733209a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/entries/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries/shim.js
new file mode 100644 (file)
index 0000000..bf40d31
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: [0, '1'], done: false });
+       a.deep(iterator.next(), { value: [1, '2'], done: false });
+       a.deep(iterator.next(), { value: [2, '3'], done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/exclusion.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/exclusion.js
new file mode 100644 (file)
index 0000000..07b32d8
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var x = {};
+               a.deep(t.call(this, this, [this[0], this[2], x]), [x]);
+       },
+       "": function (t, a) {
+               var x = {}, y = {};
+
+               a.deep(t.call([x, y]), [x, y], "No arguments");
+               a.deep(t.call([x, 1], [], []), [x, 1], "Empty arguments");
+               a.deep(t.call([1, 'raz', x], [2, 'raz', y], [2, 'raz', x]), [1, y]);
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/implement.js
new file mode 100644 (file)
index 0000000..2a01d28
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/fill/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill/shim.js
new file mode 100644 (file)
index 0000000..d67300f
--- /dev/null
@@ -0,0 +1,18 @@
+// Taken from https://github.com/paulmillr/es6-shim/blob/master/test/array.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+
+       x = [1, 2, 3, 4, 5, 6];
+       a(t.call(x, -1), x, "Returns self object");
+       a.deep(x, [-1, -1, -1, -1, -1, -1], "Value");
+
+       a.deep(t.call([1, 2, 3, 4, 5, 6], -1, 3), [1, 2, 3, -1, -1, -1],
+               "Positive start");
+       a.deep(t.call([1, 2, 3, 4, 5, 6], -1, -3), [1, 2, 3, -1, -1, -1],
+               "Negative start");
+       a.deep(t.call([1, 2, 3, 4, 5, 6], -1, 9), [1, 2, 3, 4, 5, 6],
+               "Large start");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/implement.js
new file mode 100644 (file)
index 0000000..6d6b87c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/filter/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter/shim.js
new file mode 100644 (file)
index 0000000..e8b5c39
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, Boolean), ['foo', '2d', x], "Plain array");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, Boolean);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, ['foo', '2d', x], "Result of subclass");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/implement.js
new file mode 100644 (file)
index 0000000..8d85e61
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/find-index/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index/shim.js
new file mode 100644 (file)
index 0000000..b5fee46
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var count = 0, o = {}, self = Object(this);
+       a(t.call(self, function (value, i, scope) {
+               a(value, this[i], "Value");
+               a(i, count++, "Index");
+               a(scope, this, "Scope");
+       }, self), -1, "Falsy result");
+       a(count, 3);
+
+       count = -1;
+       a(t.call(this, function () {
+               return ++count ? o : null;
+       }, this), 1, "Truthy result");
+       a(count, 1);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/implement.js
new file mode 100644 (file)
index 0000000..29fac41
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/find/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find/shim.js
new file mode 100644 (file)
index 0000000..ad2e645
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var count = 0, o = {}, self = Object(this);
+       a(t.call(self, function (value, i, scope) {
+               a(value, this[i], "Value");
+               a(i, count++, "Index");
+               a(scope, this, "Scope");
+       }, self), undefined, "Falsy result");
+       a(count, 3);
+
+       count = -1;
+       a(t.call(this, function () {
+               return ++count ? o : null;
+       }, this), this[1], "Truthy result");
+       a(count, 1);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first-index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first-index.js
new file mode 100644 (file)
index 0000000..4aebad6
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a(t.call([]), null, "Empty");
+       a(t.call([null]), 0, "One value");
+       a(t.call([1, 2, 3]), 0, "Many values");
+       a(t.call(new Array(1000)), null, "Sparse empty");
+       x = [];
+       x[883] = undefined;
+       x[890] = null;
+       a(t.call(x), 883, "Manual sparse, distant value");
+       x = new Array(1000);
+       x[657] = undefined;
+       x[700] = null;
+       a(t.call(x), 657, "Sparse, distant value");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/first.js
new file mode 100644 (file)
index 0000000..87fde03
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       a(t.call(this), this[0]);
+};
+exports[''] = function (t, a) {
+       var x;
+       a(t.call([]), undefined, "Empty");
+       a(t.call(new Array(234), undefined, "Sparse empty"));
+       x = new Array(2342);
+       x[434] = {};
+       a(t.call(x), x[434], "Sparse");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/flatten.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/flatten.js
new file mode 100644 (file)
index 0000000..65f1214
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var o = [1, 2, [3, 4, [5, 6], 7, 8], 9, 10];
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this).length, 3);
+       },
+       "Nested Arrays": function (t, a) {
+               a(t.call(o).length, 10);
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/for-each-right.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/for-each-right.js
new file mode 100644 (file)
index 0000000..2d24569
--- /dev/null
@@ -0,0 +1,36 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var count = 0, first, last, x, icount = this.length;
+               t.call(this, function (item, index, col) {
+                       ++count;
+                       if (!first) {
+                               first = item;
+                       }
+                       last = item;
+                       x = col;
+                       a(index, --icount, "Index");
+               });
+               a(count, this.length, "Iterated");
+               a(first, this[this.length - 1], "First is last");
+               a(last, this[0], "Last is first");
+               a.deep(x, Object(this), "Collection as third argument"); //jslint: skip
+       },
+       "": function (t, a) {
+               var x = {}, y, count;
+               t.call([1], function () { y = this; }, x);
+               a(y, x, "Scope");
+               y = 0;
+               t.call([3, 4, 4], function (a, i) { y += i; });
+               a(y, 3, "Indexes");
+
+               x = [1, 3];
+               x[5] = 'x';
+               y = 0;
+               count = 0;
+               t.call(x, function (a, i) { ++count; y += i; });
+               a(y, 6, "Misssing Indexes");
+               a(count, 3, "Misssing Indexes, count");
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/group.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/group.js
new file mode 100644 (file)
index 0000000..32dc8c2
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var count = 0, self;
+
+               self = Object(this);
+               a.deep(t.call(self, function (v, i, scope) {
+                       a(v, this[i], "Value");
+                       a(i, count++, "Index");
+                       a(scope, this, "Scope");
+                       return i;
+               }, self), { 0: [this[0]], 1: [this[1]], 2: [this[2]] });
+       },
+       "": function (t, a) {
+               var r;
+               r = t.call([2, 3, 3, 4, 5, 6, 7, 7, 23, 45, 34, 56],
+                       function (v) {
+                               return v % 2 ? 'odd' : 'even';
+                       });
+               a.deep(r.odd, [3, 3, 5, 7, 7, 23, 45]);
+               a.deep(r.even, [2, 4, 6, 34, 56]);
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/indexes-of.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/indexes-of.js
new file mode 100644 (file)
index 0000000..3364170
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a.deep(t.call(this, this[1]), [1]);
+       },
+       "": function (t, a) {
+               var x = {};
+               a.deep(t.call([1, 3, 5, 3, 5], 6), [], "No result");
+               a.deep(t.call([1, 3, 5, 1, 3, 5, 1], 1), [0, 3, 6], "Some results");
+               a.deep(t.call([], x), [], "Empty array");
+               a.deep(t.call([x, 3, {}, x, 3, 5, x], x), [0, 3, 6], "Search for object");
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/intersection.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/intersection.js
new file mode 100644 (file)
index 0000000..b72b2fb
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var toArray = require('../../../array/to-array');
+
+module.exports = {
+       __generic: function (t, a) {
+               a.deep(t.call(this, this, this), toArray(this));
+       },
+       "": function (t, a) {
+               var x = {}, y = {}, p, r;
+               a.deep(t.call([], [2, 3, 4]), [], "Empty #1");
+               a.deep(t.call([2, 3, 4], []), [], "Empty #2");
+               a.deep(t.call([2, 3, x], [y, 5, 7]), [], "Different");
+               p = t.call([3, 5, 'raz', {}, 'dwa', x], [1, 3, 'raz', 'dwa', 'trzy', x, {}],
+                       [3, 'raz', x, 65]);
+               r = [3, 'raz', x];
+               p.sort();
+               r.sort();
+               a.deep(p, r, "Same parts");
+               a.deep(t.call(r, r), r, "Same");
+               a.deep(t.call([1, 2, x, 4, 5, y, 7], [7, y, 5, 4, x, 2, 1]),
+                       [1, 2, x, 4, 5, y, 7], "Long reverse same");
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-copy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-copy.js
new file mode 100644 (file)
index 0000000..e7f80e7
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([], []), true, "Empty");
+       a(t.call([], {}), true, "Empty lists");
+       a(t.call([1, x, 'raz'], [1, x, 'raz']), true, "Same");
+       a(t.call([1, x, 'raz'], { 0: 1, 1: x, 2: 'raz', length: 3 }), true,
+                       "Same lists");
+       a(t.call([1, x, 'raz'], [x, 1, 'raz']), false, "Diff order");
+       a(t.call([1, x], [1, x, 'raz']), false, "Diff length #1");
+       a(t.call([1, x, 'raz'], [1, x]), false, "Diff length #2");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-uniq.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/is-uniq.js
new file mode 100644 (file)
index 0000000..7349ba3
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t.call([]), true, "Empty");
+       a(t.call({}), true, "Empty lists");
+       a(t.call([1, x, 'raz']), true, "Uniq");
+       a(t.call([1, x, 1, 'raz']), false, "Not Uniq: primitive");
+       a(t.call([1, x, '1', 'raz']), true, "Uniq: primitive");
+       a(t.call([1, x, 1, {}, 'raz']), false, "Not Uniq: Obj");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/implement.js
new file mode 100644 (file)
index 0000000..b0c1aa0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/keys/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys/shim.js
new file mode 100644 (file)
index 0000000..a43c04c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: 0, done: false });
+       a.deep(iterator.next(), { value: 1, done: false });
+       a.deep(iterator.next(), { value: 2, done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last-index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last-index.js
new file mode 100644 (file)
index 0000000..a1cac10
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a(t.call([]), null, "Empty");
+       a(t.call([null]), 0, "One value");
+       a(t.call([1, 2, 3]), 2, "Many values");
+       a(t.call(new Array(1000)), null, "Sparse empty");
+       x = [];
+       x[883] = null;
+       x[890] = undefined;
+       a(t.call(x), 890, "Manual sparse, distant value");
+       x = new Array(1000);
+       x[657] = null;
+       x[700] = undefined;
+       a(t.call(x), 700, "Sparse, distant value");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/last.js
new file mode 100644 (file)
index 0000000..8d051bc
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       a(t.call(this), this[this.length - 1]);
+};
+
+exports[''] = function (t, a) {
+       var x;
+       a(t.call([]), undefined, "Empty");
+       a(t.call(new Array(234), undefined, "Sparse empty"));
+       x = new Array(2342);
+       x[434] = {};
+       x[450] = {};
+       a(t.call(x), x[450], "Sparse");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/implement.js
new file mode 100644 (file)
index 0000000..cdcbc8d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/map/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map/shim.js
new file mode 100644 (file)
index 0000000..bbfefe8
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, Boolean), [true, false, false, true, false, true, false],
+               "Plain array");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, Boolean);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, [true, false, false, true, false, true, false],
+               "Result of subclass");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/remove.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/remove.js
new file mode 100644 (file)
index 0000000..3ebdca2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var y = {}, z = {}, x = [9, z, 5, y, 'foo'];
+       t.call(x, y);
+       a.deep(x, [9, z, 5, 'foo']);
+       t.call(x, {});
+       a.deep(x, [9, z, 5, 'foo'], "Not existing");
+       t.call(x, 5);
+       a.deep(x, [9, z, 'foo'], "Primitive");
+       x = [9, z, 5, y, 'foo'];
+       t.call(x, z, 5, 'foo');
+       a.deep(x, [9, y], "More than one argument");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/separate.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/separate.js
new file mode 100644 (file)
index 0000000..42918b5
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = [], y = {}, z = {};
+       a.deep(t.call(x, y), [], "Empty");
+       a.not(t.call(x), x, "Returns copy");
+       a.deep(t.call([1], y), [1], "One");
+       a.deep(t.call([1, 'raz'], y), [1, y, 'raz'], "One");
+       a.deep(t.call([1, 'raz', x], y), [1, y, 'raz', y, x], "More");
+       x = new Array(1000);
+       x[23] = 2;
+       x[3453] = 'raz';
+       x[500] = z;
+       a.deep(t.call(x, y), [2, y, z, y, 'raz'], "Sparse");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/implement.js
new file mode 100644 (file)
index 0000000..855ae2f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/slice/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice/shim.js
new file mode 100644 (file)
index 0000000..f674f34
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, 2, 4), [0, '2d'], "Plain array: result");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, 2, 4);
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, [0, '2d'], "Subclass: result");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/some-right.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/some-right.js
new file mode 100644 (file)
index 0000000..900771a
--- /dev/null
@@ -0,0 +1,43 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               var count = 0, first, last, x, icount = this.length;
+               t.call(this, function (item, index, col) {
+                       ++count;
+                       if (!first) {
+                               first = item;
+                       }
+                       last = item;
+                       x = col;
+                       a(index, --icount, "Index");
+               });
+               a(count, this.length, "Iterated");
+               a(first, this[this.length - 1], "First is last");
+               a(last, this[0], "Last is first");
+               a.deep(x, Object(this), "Collection as third argument"); //jslint: skip
+       },
+       "": function (t, a) {
+               var x = {}, y, count;
+               t.call([1], function () { y = this; }, x);
+               a(y, x, "Scope");
+               y = 0;
+               t.call([3, 4, 4], function (a, i) { y += i; });
+               a(y, 3, "Indexes");
+
+               x = [1, 3];
+               x[5] = 'x';
+               y = 0;
+               count = 0;
+               a(t.call(x, function (a, i) { ++count; y += i; }), false, "Return");
+               a(y, 6, "Misssing Indexes");
+               a(count, 3, "Misssing Indexes, count");
+
+               count = 0;
+               a(t.call([-2, -3, -4, 2, -5], function (item) {
+                       ++count;
+                       return item > 0;
+               }), true, "Return");
+               a(count, 2, "Break after true is returned");
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/implement.js
new file mode 100644 (file)
index 0000000..0d9f461
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/splice/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice/shim.js
new file mode 100644 (file)
index 0000000..2c751e6
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var SubArray = require('../../../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr, x = {}, subArr, result;
+
+       arr = ['foo', undefined, 0, '2d', false, x, null];
+
+       a.deep(t.call(arr, 2, 2, 'bar'), [0, '2d'], "Plain array: result");
+       a.deep(arr, ["foo", undefined, "bar", false, x, null], "Plain array: change");
+
+       subArr = new SubArray('foo', undefined, 0, '2d', false, x, null);
+
+       result = t.call(subArr, 2, 2, 'bar');
+       a(result instanceof SubArray, true, "Instance of subclass");
+       a.deep(result, [0, '2d'], "Subclass: result");
+       a.deep(subArr, ["foo", undefined, "bar", false, x, null], "Subclass: change");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/uniq.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/uniq.js
new file mode 100644 (file)
index 0000000..2f7e6c4
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = {
+       __generic: function (t, a) {
+               a(t.call(this).length, 3);
+       },
+       "": function (t, a) {
+               var o, x = {}, y = {}, z = {}, w;
+               o = [1, 2, x, 3, 1, 'raz', '1', y, x, 'trzy', z, 'raz'];
+
+               a.not(w = t.call(o), o, "Returns different object");
+               a.deep(w, [1, 2, x, 3, 'raz', '1', y, 'trzy', z], "Result");
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/implement.js
new file mode 100644 (file)
index 0000000..9f40138
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../array/#/values/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values/shim.js
new file mode 100644 (file)
index 0000000..e590d8f
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.__generic = function (t, a) {
+       var iterator = t.call(this);
+       a.deep(iterator.next(), { value: '1', done: false });
+       a.deep(iterator.next(), { value: '2', done: false });
+       a.deep(iterator.next(), { value: '3', done: false });
+       a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/__scopes.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/__scopes.js
new file mode 100644 (file)
index 0000000..fc240d3
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+exports.Array = ['1', '2', '3'];
+
+exports.Arguments = (function () {
+       return arguments;
+}('1', '2', '3'));
+
+exports.String = "123";
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_is-extensible.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_is-extensible.js
new file mode 100644 (file)
index 0000000..d387126
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'boolean');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js
new file mode 100644 (file)
index 0000000..29d8699
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var isArray = Array.isArray;
+
+module.exports = function (t, a) {
+       t((t === null) || isArray(t.prototype), true);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/_sub-array-dummy.js
new file mode 100644 (file)
index 0000000..29d8699
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var isArray = Array.isArray;
+
+module.exports = function (t, a) {
+       t((t === null) || isArray(t.prototype), true);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/implement.js
new file mode 100644 (file)
index 0000000..e0db846
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../array/from/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from/shim.js
new file mode 100644 (file)
index 0000000..310302a
--- /dev/null
@@ -0,0 +1,60 @@
+// Some tests taken from: https://github.com/mathiasbynens/Array.from/blob/master/tests/tests.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       var o = [1, 2, 3], MyType;
+       a.not(t(o), o, "Array");
+       a.deep(t(o), o, "Array: same content");
+       a.deep(t('12r3v'), ['1', '2', 'r', '3', 'v'], "String");
+       a.deep(t((function () { return arguments; }(3, o, 'raz'))),
+               [3, o, 'raz'], "Arguments");
+       a.deep(t((function () { return arguments; }(3))), [3],
+               "Arguments with one numeric value");
+
+       a.deep(t({ 0: 'raz', 1: 'dwa', length: 2 }), ['raz', 'dwa'], "Other");
+
+       a.deep(t(o, function (val) { return (val + 2) * 10; }, 10), [30, 40, 50],
+               "Mapping");
+
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.deep(t(3), [], "Primitive");
+
+       a(t.length, 1, "Length");
+       a.deep(t({ length: 0 }), [], "No values Array-like");
+       a.deep(t({ length: -1 }), [], "Invalid length Array-like");
+       a.deep(t({ length: -Infinity }), [], "Invalid length Array-like #2");
+       a.throws(function () { t(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.deep(t(false), [], "Boolean");
+       a.deep(t(-Infinity), [], "Inifity");
+       a.deep(t(-0), [], "-0");
+       a.deep(t(+0), [], "+0");
+       a.deep(t(1), [], "1");
+       a.deep(t(+Infinity), [], "+Infinity");
+       a.deep(t({}), [], "Plain object");
+       a.deep(t({ length: 1 }), [undefined], "Sparse array-like");
+       a.deep(t({ '0': 'a', '1': 'b', length: 2 }, function (x) { return x + x; }), ['aa', 'bb'],
+               "Map");
+       a.deep(t({ '0': 'a', '1': 'b', length: 2 }, function (x) { return String(this); }, undefined),
+               ['undefined', 'undefined'], "Map context");
+       a.deep(t({ '0': 'a', '1': 'b', length: 2 }, function (x) { return String(this); }, 'x'),
+               ['x', 'x'], "Map primitive context");
+       a.throws(function () { t({}, 'foo', 'x'); }, TypeError, "Non callable for map");
+
+       a.deep(t.call(null, { length: 1, '0': 'a' }), ['a'], "Null context");
+
+       a(t({ __proto__: { '0': 'abc', length: 1 } })[0], 'abc', "Values on prototype");
+
+       a.throws(function () { t.call(function () { return Object.freeze({}); }, {}); },
+               TypeError, "Contructor producing freezed objects");
+
+       // Ensure no setters are called for the indexes
+       // Ensure no setters are called for the indexes
+       MyType = function () {};
+       Object.defineProperty(MyType.prototype, '0', {
+               set: function (x) { throw new Error('Setter called: ' + x); }
+       });
+       a.deep(t.call(MyType, { '0': 'abc', length: 1 }), { '0': 'abc', length: 1 },
+               "Defined not set");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/generate.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/generate.js
new file mode 100644 (file)
index 0000000..d72e056
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = {};
+       a.deep(t(3), [undefined, undefined, undefined], "Just length");
+       a.deep(t(0, 'x'), [], "No repeat");
+       a.deep(t(1, x, y), [x], "Arguments length larger than repeat number");
+       a.deep(t(3, x), [x, x, x], "Single argument");
+       a.deep(t(5, x, y), [x, y, x, y, x], "Many arguments");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/is-plain-array.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/is-plain-array.js
new file mode 100644 (file)
index 0000000..871a08a
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var SubArray = require('../../array/_sub-array-dummy-safe');
+
+module.exports = function (t, a) {
+       var arr = [1, 2, 3];
+       a(t(arr), true, "Array");
+       a(t(null), false, "Null");
+       a(t(), false, "Undefined");
+       a(t('234'), false, "String");
+       a(t(23), false, "Number");
+       a(t({}), false, "Plain object");
+       a(t({ length: 1, 0: 'raz' }), false, "Array-like");
+       a(t(Object.create(arr)), false, "Array extension");
+       if (!SubArray) return;
+       a(t(new SubArray(23)), false, "Subclass instance");
+       a(t(Array.prototype), false, "Array.prototype");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/implement.js
new file mode 100644 (file)
index 0000000..30d53be
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../array/of/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of/shim.js
new file mode 100644 (file)
index 0000000..e697442
--- /dev/null
@@ -0,0 +1,68 @@
+// Most tests taken from https://github.com/mathiasbynens/Array.of/blob/master/tests/tests.js
+// Thanks @mathiasbynens
+
+'use strict';
+
+var defineProperty = Object.defineProperty;
+
+module.exports = function (t, a) {
+       var x = {}, testObject, MyType;
+
+       a.deep(t(), [], "No arguments");
+       a.deep(t(3), [3], "One numeric argument");
+       a.deep(t(3, 'raz', null, x, undefined), [3, 'raz', null, x, undefined],
+               "Many arguments");
+
+       a(t.length, 0, "Length");
+
+       a.deep(t('abc'), ['abc'], "String");
+       a.deep(t(undefined), [undefined], "Undefined");
+       a.deep(t(null), [null], "Null");
+       a.deep(t(false), [false], "Boolean");
+       a.deep(t(-Infinity), [-Infinity], "Infinity");
+       a.deep(t(-0), [-0], "-0");
+       a.deep(t(+0), [+0], "+0");
+       a.deep(t(1), [1], "1");
+       a.deep(t(1, 2, 3), [1, 2, 3], "Numeric args");
+       a.deep(t(+Infinity), [+Infinity], "+Infinity");
+       a.deep(t({ '0': 'a', '1': 'b', '2': 'c', length: 3 }),
+               [{ '0': 'a', '1': 'b', '2': 'c', length: 3 }], "Array like");
+       a.deep(t(undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity),
+               [undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity], "Falsy arguments");
+
+       a.h1("Null context");
+       a.deep(t.call(null, 'abc'), ['abc'], "String");
+       a.deep(t.call(null, undefined), [undefined], "Undefined");
+       a.deep(t.call(null, null), [null], "Null");
+       a.deep(t.call(null, false), [false], "Boolean");
+       a.deep(t.call(null, -Infinity), [-Infinity], "-Infinity");
+       a.deep(t.call(null, -0), [-0], "-0");
+       a.deep(t.call(null, +0), [+0], "+0");
+       a.deep(t.call(null, 1), [1], "1");
+       a.deep(t.call(null, 1, 2, 3), [1, 2, 3], "Numeric");
+       a.deep(t.call(null, +Infinity), [+Infinity], "+Infinity");
+       a.deep(t.call(null, { '0': 'a', '1': 'b', '2': 'c', length: 3 }),
+               [{ '0': 'a', '1': 'b', '2': 'c', length: 3 }], "Array-like");
+       a.deep(t.call(null, undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity),
+               [undefined, null, false, -Infinity, -0, +0, 1, 2, +Infinity], "Falsy");
+
+       a.h1("Other constructor context");
+       a.deep(t.call(Object, 1, 2, 3), { '0': 1, '1': 2, '2': 3, length: 3 }, "Many arguments");
+
+       testObject = Object(3);
+       testObject[0] = 1;
+       testObject[1] = 2;
+       testObject[2] = 3;
+       testObject.length = 3;
+       a.deep(t.call(Object, 1, 2, 3), testObject, "Test object");
+       a(t.call(Object).length, 0, "No arguments");
+       a.throws(function () { t.call(function () { return Object.freeze({}); }); }, TypeError,
+               "Frozen instance");
+
+       // Ensure no setters are called for the indexes
+       MyType = function () {};
+       defineProperty(MyType.prototype, '0', {
+               set: function (x) { throw new Error('Setter called: ' + x); }
+       });
+       a.deep(t.call(MyType, 'abc'), { '0': 'abc', length: 1 }, "Define, not set");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/to-array.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/to-array.js
new file mode 100644 (file)
index 0000000..4985b5e
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = [1, 2, 3];
+       a(t(o), o, "Array");
+       a.deep(t('12r3v'), ['1', '2', 'r', '3', 'v'], "String");
+       a.deep(t((function () { return arguments; }(3, o, 'raz'))),
+               [3, o, 'raz'], "Arguments");
+       a.deep(t((function () { return arguments; }(3))), [3],
+               "Arguments with one numeric value");
+
+       a.deep(t({ 0: 'raz', 1: 'dwa', length: 2 }), ['raz', 'dwa'], "Other");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/valid-array.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/valid-array.js
new file mode 100644 (file)
index 0000000..3732192
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.throws(function () { t(0); }, TypeError, "Number");
+       a.throws(function () { t(true); }, TypeError, "Boolean");
+       a.throws(function () { t('raz'); }, TypeError, "String");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a.throws(function () { t({}); }, TypeError, "Object");
+       a.throws(function () { t({ length: 0 }); }, TypeError, "Array-like");
+       a(t(x = []), x, "Array");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean/is-boolean.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean/is-boolean.js
new file mode 100644 (file)
index 0000000..4e6b3cb
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(false), true, "Boolean");
+       a(t(new Boolean(false)), true, "Boolean object");
+       a(t(new Date()), false, "Date");
+       a(t(new String('raz')), false, "String object");
+       a(t({}), false, "Plain object");
+       a(t(/a/), false, "Regular expression");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/copy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/copy.js
new file mode 100644 (file)
index 0000000..767c5e1
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = new Date(), o2;
+
+       o2 = t.call(o);
+       a.not(o, o2, "Different objects");
+       a.ok(o2 instanceof Date, "Instance of Date");
+       a(o.getTime(), o2.getTime(), "Same time");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/days-in-month.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/days-in-month.js
new file mode 100644 (file)
index 0000000..9ddba55
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2001, 0, 1)), 31, "January");
+       a(t.call(new Date(2001, 1, 1)), 28, "February");
+       a(t.call(new Date(2000, 1, 1)), 29, "February (leap)");
+       a(t.call(new Date(2001, 2, 1)), 31, "March");
+       a(t.call(new Date(2001, 3, 1)), 30, "April");
+       a(t.call(new Date(2001, 4, 1)), 31, "May");
+       a(t.call(new Date(2001, 5, 1)), 30, "June");
+       a(t.call(new Date(2001, 6, 1)), 31, "July");
+       a(t.call(new Date(2001, 7, 1)), 31, "August");
+       a(t.call(new Date(2001, 8, 1)), 30, "September");
+       a(t.call(new Date(2001, 9, 1)), 31, "October");
+       a(t.call(new Date(2001, 10, 1)), 30, "November");
+       a(t.call(new Date(2001, 11, 1)), 31, "December");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-day.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-day.js
new file mode 100644 (file)
index 0000000..d4f4a90
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2000, 0, 1, 13, 32, 34, 234)).valueOf(),
+               new Date(2000, 0, 1).valueOf());
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-month.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-month.js
new file mode 100644 (file)
index 0000000..b4a81be
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2000, 0, 15, 13, 32, 34, 234)).valueOf(),
+               new Date(2000, 0, 1).valueOf());
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-year.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/floor-year.js
new file mode 100644 (file)
index 0000000..aae117e
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(new Date(2000, 5, 13, 13, 32, 34, 234)).valueOf(),
+               new Date(2000, 0, 1).valueOf());
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/format.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#/format.js
new file mode 100644 (file)
index 0000000..e68e4bf
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var dt = new Date(2011, 2, 3, 3, 5, 5, 32);
+       a(t.call(dt, ' %Y.%y.%m.%d.%H.%M.%S.%L '), ' 2011.11.03.03.03.05.05.032 ');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/is-date.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/is-date.js
new file mode 100644 (file)
index 0000000..109093d
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(true), false, "Boolean");
+       a(t(new Date()), true, "Date");
+       a(t(new String('raz')), false, "String object");
+       a(t({}), false, "Plain object");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/valid-date.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/valid-date.js
new file mode 100644 (file)
index 0000000..98787e4
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var d = new Date();
+       a(t(d), d, "Date");
+       a.throws(function () {
+               t({});
+       }, "Object");
+       a.throws(function () {
+               t({ valueOf: function () { return 20; } });
+       }, "Number object");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#/throw.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#/throw.js
new file mode 100644 (file)
index 0000000..1213cfc
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var e = new Error();
+       try {
+               t.call(e);
+       } catch (e2) {
+               a(e2, e);
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/custom.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/custom.js
new file mode 100644 (file)
index 0000000..d4ff500
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var T = t, err = new T('My Error', 'MY_ERROR', { errno: 123 });
+       a(err instanceof Error, true, "Instance of error");
+       a(err.constructor, Error, "Constructor");
+       a(err.name, 'Error', "Name");
+       a(String(err), 'Error: My Error', "String representation");
+       a(err.code, 'MY_ERROR', "Code");
+       a(err.errno, 123, "Errno");
+       a(typeof err.stack, 'string', "Stack trace");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/is-error.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/is-error.js
new file mode 100644 (file)
index 0000000..f8b5e20
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(), false, "Undefined");
+       a(t(1), false, "Primitive");
+       a(t({}), false, "Objectt");
+       a(t({ toString: function () { return '[object Error]'; } }), false,
+               "Fake error");
+       a(t(new Error()), true, "Error");
+       a(t(new EvalError()), true, "EvalError");
+       a(t(new RangeError()), true, "RangeError");
+       a(t(new ReferenceError()), true, "ReferenceError");
+       a(t(new SyntaxError()), true, "SyntaxError");
+       a(t(new TypeError()), true, "TypeError");
+       a(t(new URIError()), true, "URIError");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/valid-error.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/valid-error.js
new file mode 100644 (file)
index 0000000..e04cdb3
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var e = new Error();
+       a(t(e), e, "Error");
+       a.throws(function () {
+               t({});
+       }, "Other");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/compose.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/compose.js
new file mode 100644 (file)
index 0000000..83de5e8
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var f = function (a, b) { return ['a', arguments.length, a, b]; }
+  , g = function (a) { return ['b', arguments.length].concat(a); }
+  , h = function (a) { return ['c', arguments.length].concat(a); };
+
+module.exports = function (t, a) {
+       a.deep(t.call(h, g, f)(1, 2), ['c', 1, 'b', 1, 'a', 2, 1, 2]);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/copy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/copy.js
new file mode 100644 (file)
index 0000000..7a22e2f
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var foo = 'raz', bar = 'dwa'
+         , fn = function marko(a, b) { return this + a + b + foo + bar; }
+         , result, o = {};
+
+       fn.prototype = o;
+
+       fn.foo = 'raz';
+
+       result = t.call(fn);
+
+       a(result.length, fn.length, "Length");
+       a(result.name, fn.name, "Length");
+       a(result.call('marko', 'el', 'fe'), 'markoelferazdwa', "Body");
+       a(result.prototype, fn.prototype, "Prototype");
+       a(result.foo, fn.foo, "Custom property");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/curry.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/curry.js
new file mode 100644 (file)
index 0000000..18fb038
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var toArray = require('../../../array/to-array')
+
+  , f = function () { return toArray(arguments); };
+
+module.exports = function (t, a) {
+       var x, y = {}, z;
+       a.deep(t.call(f, 0, 1, 2)(3), [], "0 arguments");
+       x = t.call(f, 5, {});
+       a(x.length, 5, "Length #1");
+       z = x(1, 2);
+       a(z.length, 3, "Length #2");
+       z = z(3, 4);
+       a(z.length, 1, "Length #1");
+       a.deep(z(5, 6), [1, 2, 3, 4, 5], "Many arguments");
+       a.deep(x(8, 3)(y, 45)('raz', 6), [8, 3, y, 45, 'raz'], "Many arguments #2");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/lock.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/lock.js
new file mode 100644 (file)
index 0000000..44a12d7
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(function () {
+               return arguments.length;
+       })(1, 2, 3), 0);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/not.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/not.js
new file mode 100644 (file)
index 0000000..c0f5e9d
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var identity = require('../../../function/identity')
+  , noop     = require('../../../function/noop');
+
+module.exports = function (t, a) {
+       a(t.call(identity)(''), true, "Falsy");
+       a(t.call(noop)(), true, "Undefined");
+       a(t.call(identity)({}), false, "Any object");
+       a(t.call(identity)(true), false, "True");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/partial.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/partial.js
new file mode 100644 (file)
index 0000000..bd00ce7
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var toArray = require('../../../array/to-array')
+
+  , f = function () { return toArray(arguments); };
+
+module.exports = function (t, a) {
+       a.deep(t.call(f, 1)(2, 3), [1, 2, 3]);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/spread.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/spread.js
new file mode 100644 (file)
index 0000000..b82dfec
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var f = function (a, b) { return this[a] + this[b]; }
+  , o = { a: 3, b: 4 };
+
+module.exports = function (t, a) {
+       a(t.call(f).call(o, ['a', 'b']), 7);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/to-string-tokens.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#/to-string-tokens.js
new file mode 100644 (file)
index 0000000..4c54d30
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t.call(function (a, b) { return this[a] + this[b]; }),
+               { args: 'a, b', body: ' return this[a] + this[b]; ' });
+       a.deep(t.call(function () {}),
+               { args: '', body: '' });
+       a.deep(t.call(function (raz) {}),
+               { args: 'raz', body: '' });
+       a.deep(t.call(function () { Object(); }),
+               { args: '', body: ' Object(); ' });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/_define-length.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/_define-length.js
new file mode 100644 (file)
index 0000000..8f037e8
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var foo = 'raz', bar = 'dwa'
+         , fn = function (a, b) { return this + a + b + foo + bar; }
+         , result;
+
+       result = t(fn, 3);
+       a(result.call('marko', 'el', 'fe'), 'markoelferazdwa', "Content");
+       a(result.length, 3, "Length");
+       a(result.prototype, fn.prototype, "Prototype");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/constant.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/constant.js
new file mode 100644 (file)
index 0000000..fda52aa
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var o = {};
+
+module.exports = function (t, a) {
+       a(t(o)(), o);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/identity.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/identity.js
new file mode 100644 (file)
index 0000000..8013e2e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var o = {};
+
+module.exports = function (t, a) {
+       a(t(o), o);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/invoke.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/invoke.js
new file mode 100644 (file)
index 0000000..fcce4aa
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+var constant = require('../../function/constant')
+
+  , o = { b: constant('c') };
+
+module.exports = function (t, a) {
+       a(t('b')(o), 'c');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-arguments.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-arguments.js
new file mode 100644 (file)
index 0000000..f8de881
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var args, dummy;
+       args = (function () { return arguments; }());
+       dummy = { '0': 1, '1': 2 };
+       Object.defineProperty(dummy, 'length', { value: 2 });
+       a(t(args), true, "Arguments");
+       a(t(dummy), false, "Dummy");
+       a(t([]), false, "Array");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-function.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/is-function.js
new file mode 100644 (file)
index 0000000..83acc42
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var o = { call: Function.prototype.call, apply: Function.prototype.apply };
+
+module.exports = function (t, a) {
+       a(t(function () {}), true, "Function is function");
+       a(t(o), false, "Plain object is not function");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/noop.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/noop.js
new file mode 100644 (file)
index 0000000..4305c6f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t(1, 2, 3), 'undefined');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/pluck.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/pluck.js
new file mode 100644 (file)
index 0000000..5bf9583
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+var o = { foo: 'bar' };
+
+module.exports = function (t, a) {
+       a(t('foo')(o), o.foo);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/valid-function.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/valid-function.js
new file mode 100644 (file)
index 0000000..59b1623
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var f = function () {};
+       a(t(f), f, "Function");
+       f = new Function();
+       a(t(f), f, "Function");
+       a.throws(function () {
+               t({});
+       }, "Object");
+       a.throws(function () {
+               t(/re/);
+       }, "RegExp");
+       a.throws(function () {
+               t({ call: function () { return 20; } });
+       }, "Plain object");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/global.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/global.js
new file mode 100644 (file)
index 0000000..1f452ae
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.ok(t && typeof t === 'object');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/for-each.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/for-each.js
new file mode 100644 (file)
index 0000000..0fed8ad
--- /dev/null
@@ -0,0 +1,40 @@
+'use strict';
+
+var ArrayIterator = require('es6-iterator/array')
+
+  , slice = Array.prototype.slice;
+
+module.exports = function (t, a) {
+       var i = 0, x = ['raz', 'dwa', 'trzy'], y = {};
+       t(x, function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Array " + i + "#");
+               a(this, y, "Array: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t((function () { return arguments; }('raz', 'dwa', 'trzy')), function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Arguments" + i + "#");
+               a(this, y, "Arguments: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t({ 0: 'raz', 1: 'dwa', 2: 'trzy', length: 3 }, function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Array-like" + i + "#");
+               a(this, y, "Array-like: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(x = 'foo', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Regular String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       x = ['r', '💩', 'z'];
+       t('r💩z', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Unicode String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(new ArrayIterator(x), function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Iterator " + i + "#");
+               a(this, y, "Iterator: context:  " + (i++) + "#");
+       }, y);
+
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/is.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/is.js
new file mode 100644 (file)
index 0000000..c0d2a43
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (t, a) {
+       var x;
+       a(t([]), true, "Array");
+       a(t(""), true, "String");
+       a(t((function () { return arguments; }())), true, "Arguments");
+       a(t({ length: 0 }), true, "List object");
+       a(t(function () {}), false, "Function");
+       a(t({}), false, "Plain object");
+       a(t(/raz/), false, "Regexp");
+       a(t(), false, "No argument");
+       a(t(null), false, "Null");
+       a(t(undefined), false, "Undefined");
+       x = {};
+       x[iteratorSymbol] = function () {};
+       a(t(x), true, "Iterable");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate-object.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate-object.js
new file mode 100644 (file)
index 0000000..da12529
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a.throws(function () { t(''); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+       x = {};
+       x[iteratorSymbol] = function () {};
+       a(t(x), x, "Iterable");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable/validate.js
new file mode 100644 (file)
index 0000000..bcc2ad3
--- /dev/null
@@ -0,0 +1,20 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a(t(''), '', "''");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+       x = {};
+       x[iteratorSymbol] = function () {};
+       a(t(x), x, "Iterable");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_pack-ieee754.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_pack-ieee754.js
new file mode 100644 (file)
index 0000000..9041431
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t(1.337, 8, 23), [63, 171, 34, 209]);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_unpack-ieee754.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/_unpack-ieee754.js
new file mode 100644 (file)
index 0000000..ca30b82
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t([63, 171, 34, 209], 8, 23), 1.3370000123977661);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/implement.js
new file mode 100644 (file)
index 0000000..01fb6d0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/acosh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh/shim.js
new file mode 100644 (file)
index 0000000..3d710c7
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-1), NaN, "Negative");
+       a(t(0), NaN, "Zero");
+       a(t(0.5), NaN, "Below 1");
+       a(t(1), 0, "1");
+       a(t(2), 1.3169578969248166, "Other");
+       a(t(Infinity), Infinity, "Infinity");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/implement.js
new file mode 100644 (file)
index 0000000..d1fcece
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/asinh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh/shim.js
new file mode 100644 (file)
index 0000000..d9fbe49
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(-2), -1.4436354751788103, "Negative");
+       a(t(2), 1.4436354751788103, "Positive");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/implement.js
new file mode 100644 (file)
index 0000000..cba8fad
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/atanh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh/shim.js
new file mode 100644 (file)
index 0000000..a857b49
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-2), NaN, "Less than -1");
+       a(t(2), NaN, "Greater than 1");
+       a(t(-1), -Infinity, "-1");
+       a(t(1), Infinity, "1");
+       a(t(0), 0, "Zero");
+       a(t(0.5), 0.5493061443340549, "Ohter");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/implement.js
new file mode 100644 (file)
index 0000000..374d4b3
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/cbrt/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt/shim.js
new file mode 100644 (file)
index 0000000..43ab68b
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(-1), -1, "-1");
+       a(t(1), 1, "1");
+       a(t(2), 1.2599210498948732, "Ohter");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/implement.js
new file mode 100644 (file)
index 0000000..44f8815
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/clz32/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32/shim.js
new file mode 100644 (file)
index 0000000..a769b39
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(1), 31, "1");
+       a(t(1000), 22, "1000");
+       a(t(), 32, "No arguments");
+       a(t(Infinity), 32, "Infinity");
+       a(t(-Infinity), 32, "-Infinity");
+       a(t("foo"), 32, "String");
+       a(t(true), 31, "Boolean");
+       a(t(3.5), 30, "Float");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/implement.js
new file mode 100644 (file)
index 0000000..f3c712b
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/cosh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh/shim.js
new file mode 100644 (file)
index 0000000..419c123
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 1, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), Infinity, "-Infinity");
+       a(t(1), 1.5430806348152437, "1");
+       a(t(Number.MAX_VALUE), Infinity);
+       a(t(-Number.MAX_VALUE), Infinity);
+       a(t(Number.MIN_VALUE), 1);
+       a(t(-Number.MIN_VALUE), 1);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/implement.js
new file mode 100644 (file)
index 0000000..c212967
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/expm1/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1/shim.js
new file mode 100644 (file)
index 0000000..15f0e79
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -1, "-Infinity");
+       a(t(1).toFixed(15), '1.718281828459045', "1");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/implement.js
new file mode 100644 (file)
index 0000000..c909af7
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/fround/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround/shim.js
new file mode 100644 (file)
index 0000000..4ef6d4e
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(1.337), 1.3370000123977661, "1");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/implement.js
new file mode 100644 (file)
index 0000000..9946646
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/hypot/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot/shim.js
new file mode 100644 (file)
index 0000000..91d950a
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(), 0, "No arguments");
+       a(t(0, -0, 0), 0, "Zeros");
+       a(t(4, NaN, Infinity), Infinity, "Infinity");
+       a(t(4, NaN, -Infinity), Infinity, "Infinity");
+       a(t(4, NaN, 34), NaN, "NaN");
+       a(t(3, 4), 5, "#1");
+       a(t(3, 4, 5), 7.0710678118654755, "#2");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/implement.js
new file mode 100644 (file)
index 0000000..7b2a2a6
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/imul/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul/shim.js
new file mode 100644 (file)
index 0000000..a2ca7fe
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(), 0, "No arguments");
+       a(t(0, 0), 0, "Zeros");
+       a(t(2, 4), 8, "#1");
+       a(t(-1, 8), -8, "#2");
+       a(t(0xfffffffe, 5), -10, "#3");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/implement.js
new file mode 100644 (file)
index 0000000..4b3b4a4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/log10/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10/shim.js
new file mode 100644 (file)
index 0000000..5fa0d5b
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-0.5), NaN, "Less than 0");
+       a(t(0), -Infinity, "0");
+       a(t(1), 0, "1");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(2), 0.3010299956639812, "Other");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/implement.js
new file mode 100644 (file)
index 0000000..5d269bd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/log1p/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p/shim.js
new file mode 100644 (file)
index 0000000..d495ce0
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-1.5), NaN, "Less than -1");
+       a(t(-1), -Infinity, "-1");
+       a(t(0), 0, "0");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(1), 0.6931471805599453, "Other");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/implement.js
new file mode 100644 (file)
index 0000000..92b501a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/log2/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2/shim.js
new file mode 100644 (file)
index 0000000..faa9c32
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(-0.5), NaN, "Less than 0");
+       a(t(0), -Infinity, "0");
+       a(t(1), 0, "1");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(3).toFixed(15), '1.584962500721156', "Other");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/implement.js
new file mode 100644 (file)
index 0000000..5875c42
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/sign/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign/shim.js
new file mode 100644 (file)
index 0000000..b6b89c1
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+var is = require('../../../object/is');
+
+module.exports = function (t, a) {
+       a(is(t(0), +0), true, "+0");
+       a(is(t(-0), -0), true, "-0");
+       a(t({}), NaN, true, "NaN");
+       a(t(-234234234), -1, "Negative");
+       a(t(234234234), 1, "Positive");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/implement.js
new file mode 100644 (file)
index 0000000..e52089e
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/sinh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh/shim.js
new file mode 100644 (file)
index 0000000..4f63b59
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(t(1), 1.1752011936438014, "1");
+       a(t(Number.MAX_VALUE), Infinity);
+       a(t(-Number.MAX_VALUE), -Infinity);
+       a(t(Number.MIN_VALUE), 5e-324);
+       a(t(-Number.MIN_VALUE), -5e-324);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/implement.js
new file mode 100644 (file)
index 0000000..a96bf19
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/tanh/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh/shim.js
new file mode 100644 (file)
index 0000000..2c67aaf
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), 1, "Infinity");
+       a(t(-Infinity), -1, "-Infinity");
+       a(t(1), 0.7615941559557649, "1");
+       a(t(Number.MAX_VALUE), 1);
+       a(t(-Number.MAX_VALUE), -1);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/implement.js
new file mode 100644 (file)
index 0000000..1830e61
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../math/trunc/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc/shim.js
new file mode 100644 (file)
index 0000000..9e5eed7
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var is = require('../../../object/is');
+
+module.exports = function (t, a) {
+       a(t({}), NaN, "NaN");
+       a(t(0), 0, "Zero");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(-Infinity), -Infinity, "-Infinity");
+       a(is(t(0.234), 0), true, "0");
+       a(is(t(-0.234), -0), true, "-0");
+       a(t(13.7), 13, "Positive #1");
+       a(t(12.3), 12, "Positive #2");
+       a(t(-12.3), -12, "Negative #1");
+       a(t(-14.7), -14, "Negative #2");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#/pad.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#/pad.js
new file mode 100644 (file)
index 0000000..e020823
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(78, 4), '0078');
+       a(t.call(65.12323, 4, 3), '0065.123', "Precision");
+       a(t.call(65, 4, 3), '0065.000', "Precision integer");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/implement.js
new file mode 100644 (file)
index 0000000..574da75
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/epsilon/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/index.js
new file mode 100644 (file)
index 0000000..c892fd4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'number');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/implement.js
new file mode 100644 (file)
index 0000000..b35345f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-finite/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite/shim.js
new file mode 100644 (file)
index 0000000..5205d1c
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), true, "Number");
+       a(t('23'), false, "Not numeric");
+       a(t(NaN), false, "NaN");
+       a(t(Infinity), false, "Infinity");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/implement.js
new file mode 100644 (file)
index 0000000..127149c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer/shim.js
new file mode 100644 (file)
index 0000000..3f3985c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), true, "Number");
+       a(t(2.34), false, "Float");
+       a(t('23'), false, "Not numeric");
+       a(t(NaN), false, "NaN");
+       a(t(Infinity), false, "Infinity");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/implement.js
new file mode 100644 (file)
index 0000000..2f01d6d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-nan/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan/shim.js
new file mode 100644 (file)
index 0000000..425723e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), false, "Number");
+       a(t({}), false, "Not numeric");
+       a(t(NaN), true, "NaN");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-number.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-number.js
new file mode 100644 (file)
index 0000000..2751334
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(0), true, "Zero");
+       a(t(NaN), true, "NaN");
+       a(t(Infinity), true, "Infinity");
+       a(t(12), true, "Number");
+       a(t(false), false, "Boolean");
+       a(t(new Date()), false, "Date");
+       a(t(new Number(2)), true, "Number object");
+       a(t('asdfaf'), false, "String");
+       a(t(''), false, "Empty String");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..33667e2
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/is-safe-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer/shim.js
new file mode 100644 (file)
index 0000000..77e0667
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(2), true, "Number");
+       a(t(2.34), false, "Float");
+       a(t(Math.pow(2, 53)), false, "Too large");
+       a(t(Math.pow(2, 53) - 1), true, "Maximum");
+       a(t('23'), false, "Not numeric");
+       a(t(NaN), false, "NaN");
+       a(t(Infinity), false, "Infinity");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..bef00ca
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/max-safe-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/index.js
new file mode 100644 (file)
index 0000000..c892fd4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'number');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/implement.js
new file mode 100644 (file)
index 0000000..fa44024
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../number/min-safe-integer/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/index.js
new file mode 100644 (file)
index 0000000..c892fd4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(typeof t, 'number');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-integer.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-integer.js
new file mode 100644 (file)
index 0000000..ff326ba
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "NaN");
+       a(t(20), 20, "Positive integer");
+       a(t('-20'), -20, "String negative integer");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(15.343), 15, "Float");
+       a(t(-15.343), -15, "Negative float");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-pos-integer.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-pos-integer.js
new file mode 100644 (file)
index 0000000..2f3b4e6
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "NaN");
+       a(t(20), 20, "Positive integer");
+       a(t(-20), 0, "Negative integer");
+       a(t(Infinity), Infinity, "Infinity");
+       a(t(15.343), 15, "Float");
+       a(t(-15.343), 0, "Negative float");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-uint32.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/to-uint32.js
new file mode 100644 (file)
index 0000000..00d05bd
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "Not numeric");
+       a(t(-4), 4294967292, "Negative");
+       a(t(133432), 133432, "Positive");
+       a(t(8589934592), 0, "Greater than maximum");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/_iterate.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/_iterate.js
new file mode 100644 (file)
index 0000000..179afed
--- /dev/null
@@ -0,0 +1,30 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { raz: 1, dwa: 2, trzy: 3 }
+         , o2 = {}, o3 = {}, arr, i = -1;
+
+       t = t('forEach');
+       t(o, function (value, name, self, index) {
+               o2[name] = value;
+               a(index, ++i, "Index");
+               a(self, o, "Self");
+               a(this, o3, "Scope");
+       }, o3);
+       a.deep(o2, o);
+
+       arr = [];
+       o2 = {};
+       i = -1;
+       t(o, function (value, name, self, index) {
+               arr.push(value);
+               o2[name] = value;
+               a(index, ++i, "Index");
+               a(self, o, "Self");
+               a(this, o3, "Scope");
+       }, o3, function (a, b) {
+               return o[b] - o[a];
+       });
+       a.deep(o2, o, "Sort by Values: Content");
+       a.deep(arr, [3, 2, 1], "Sort by Values: Order");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/implement.js
new file mode 100644 (file)
index 0000000..4006559
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../object/assign/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign/shim.js
new file mode 100644 (file)
index 0000000..9afe5f6
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o1 = { a: 1, b: 2 }
+         , o2 = { b: 3, c: 4 };
+
+       a(t(o1, o2), o1, "Returns self");
+       a.deep(o1, { a: 1, b: 3, c: 4 }, "Single: content");
+
+       a.deep(t({}, o1, o2), { a: 1, b: 3, c: 4 }, "Multi argument");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/clear.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/clear.js
new file mode 100644 (file)
index 0000000..bfc08cc
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var isEmpty = require('../../object/is-empty');
+
+module.exports = function (t, a) {
+       var x = {};
+       a(t(x), x, "Empty: Returns same object");
+       a(isEmpty(x), true, "Empty: Not changed");
+       x.foo = 'raz';
+       x.bar = 'dwa';
+       a(t(x), x, "Same object");
+       a(isEmpty(x), true, "Emptied");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compact.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compact.js
new file mode 100644 (file)
index 0000000..9c9064c
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = {}, z;
+       z = t(x);
+       a.not(z, x, "Returns different object");
+       a.deep(z, {}, "Empty on empty");
+
+       x = { foo: 'bar', a: 0, b: false, c: '', d: '0', e: null, bar: y,
+               elo: undefined };
+       z = t(x);
+       a.deep(z, { foo: 'bar', a: 0, b: false, c: '', d: '0', bar: y },
+               "Cleared null values");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compare.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/compare.js
new file mode 100644 (file)
index 0000000..cb94241
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var d = new Date();
+
+       a.ok(t(12, 3) > 0, "Numbers");
+       a.ok(t(2, 13) < 0, "Numbers #2");
+       a.ok(t("aaa", "aa") > 0, "Strings");
+       a.ok(t("aa", "ab") < 0, "Strings #2");
+       a(t("aa", "aa"), 0, "Strings same");
+       a(t(d, new Date(d.getTime())), 0, "Same date");
+       a.ok(t(d, new Date(d.getTime() + 1)) < 0, "Different date");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy-deep.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy-deep.js
new file mode 100644 (file)
index 0000000..a4023bc
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var stringify = JSON.stringify;
+
+module.exports = function (t, a) {
+       var o = { 1: 'raz', 2: 'dwa', 3: 'trzy' }
+         , no = t(o);
+
+       a.not(no, o, "Return different object");
+       a(stringify(no), stringify(o), "Match properties and values");
+
+       o = { foo: 'bar', raz: { dwa: 'dwa',
+               trzy: { cztery: 'pięć', 'sześć': 'siedem' }, osiem: {},
+               'dziewięć': function () { } }, 'dziesięć': 10 };
+       o.raz.rec = o;
+
+       no = t(o);
+       a.not(o.raz, no.raz, "Deep");
+       a.not(o.raz.trzy, no.raz.trzy, "Deep #2");
+       a(stringify(o.raz.trzy), stringify(no.raz.trzy), "Deep content");
+       a(no.raz.rec, no, "Recursive");
+       a.not(o.raz.osiem, no.raz.osiem, "Empty object");
+       a(o.raz['dziewięć'], no.raz['dziewięć'], "Function");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/copy.js
new file mode 100644 (file)
index 0000000..2f222ef
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var stringify = JSON.stringify;
+
+module.exports = function (t, a) {
+       var o = { 1: 'raz', 2: 'dwa', 3: 'trzy' }
+         , no = t(o);
+
+       a.not(no, o, "Return different object");
+       a(stringify(no), stringify(o), "Match properties and values");
+
+       o = { foo: 'bar', raz: { dwa: 'dwa',
+               trzy: { cztery: 'pięć', 'sześć': 'siedem' }, osiem: {},
+               'dziewięć': function () { } }, 'dziesięć': 10 };
+       o.raz.rec = o;
+
+       no = t(o);
+       a(o.raz, no.raz, "Shallow");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/count.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/count.js
new file mode 100644 (file)
index 0000000..494f4f1
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), 0, "Empty");
+       a(t({ raz: 1, dwa: null, trzy: undefined, cztery: 0 }), 4,
+               "Some properties");
+       a(t(Object.defineProperties({}, {
+               raz: { value: 'raz' },
+               dwa: { value: 'dwa', enumerable: true }
+       })), 1, "Some properties hidden");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/create.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/create.js
new file mode 100644 (file)
index 0000000..8b7be21
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+var setPrototypeOf = require('../../object/set-prototype-of')
+
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+       var x = {}, obj;
+
+       a(getPrototypeOf(t(x)), x, "Normal object");
+       a(getPrototypeOf(t(null)),
+               (setPrototypeOf && setPrototypeOf.nullPolyfill) || null, "Null");
+
+       a.h1("Properties");
+       a.h2("Normal object");
+       a(getPrototypeOf(obj = t(x, { foo: { value: 'bar' } })), x, "Prototype");
+       a(obj.foo, 'bar', "Property");
+       a.h2("Null");
+       a(getPrototypeOf(obj = t(null, { foo: { value: 'bar2' } })),
+               (setPrototypeOf && setPrototypeOf.nullPolyfill) || null, "Prototype");
+       a(obj.foo, 'bar2', "Property");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/eq.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/eq.js
new file mode 100644 (file)
index 0000000..02b3f00
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = {};
+       a(t(o, {}), false, "Different objects");
+       a(t(o, o), true, "Same objects");
+       a(t('1', '1'), true, "Same primitive");
+       a(t('1', 1), false, "Different primitive types");
+       a(t(NaN, NaN), true, "NaN");
+       a(t(0, 0), true, "0,0");
+       a(t(0, -0), true, "0,-0");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/every.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/every.js
new file mode 100644 (file)
index 0000000..07d5bbb
--- /dev/null
@@ -0,0 +1,21 @@
+'use strict';
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+       var o2 = {};
+       t(o, function (value, name) {
+               o2[name] = value;
+               return true;
+       });
+       a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+       a(t(o, function () {
+               return true;
+       }), true, "Succeeds");
+
+       a(t(o, function () {
+               return false;
+       }), false, "Fails");
+
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/filter.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/filter.js
new file mode 100644 (file)
index 0000000..7307da8
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ 1: 1, 2: 2, 3: 3, 4: 4 },
+               function (value) { return Boolean(value % 2); }), { 1: 1, 3: 3 });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/first-key.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/first-key.js
new file mode 100644 (file)
index 0000000..8169cd2
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = Object.create(null);
+       a(t(x), null, "Normal: Empty");
+       a(t(y), null, "Null extension: Empty");
+       x.foo = 'raz';
+       x.bar = 343;
+       a(['foo', 'bar'].indexOf(t(x)) !== -1, true, "Normal");
+       y.elo = 'foo';
+       y.mar = 'wew';
+       a(['elo', 'mar'].indexOf(t(y)) !== -1, true, "Null extension");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/flatten.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/flatten.js
new file mode 100644 (file)
index 0000000..ca342ea
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ a: { aa: 1, ab: 2 }, b: { ba: 3, bb: 4 } }),
+               { aa: 1, ab: 2, ba: 3, bb: 4 });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/for-each.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/for-each.js
new file mode 100644 (file)
index 0000000..8690d1e
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { raz: 1, dwa: 2, trzy: 3 }
+         , o2 = {};
+       a(t(o, function (value, name) {
+               o2[name] = value;
+       }), undefined, "Return");
+       a.deep(o2, o);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/get-property-names.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/get-property-names.js
new file mode 100644 (file)
index 0000000..b91c3dd
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { first: 1, second: 4 }, r1, r2;
+       o = Object.create(o, {
+               third: { value: null }
+       });
+       o.first = 2;
+       o = Object.create(o);
+       o.fourth = 3;
+
+       r1 = t(o);
+       r1.sort();
+       r2 = ['first', 'second', 'third', 'fourth']
+               .concat(Object.getOwnPropertyNames(Object.prototype));
+       r2.sort();
+       a.deep(r1, r2);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-array-like.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-array-like.js
new file mode 100644 (file)
index 0000000..6295973
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t([]), true, "Array");
+       a(t(""), true, "String");
+       a(t((function () { return arguments; }())), true, "Arguments");
+       a(t({ length: 0 }), true, "List object");
+       a(t(function () {}), false, "Function");
+       a(t({}), false, "Plain object");
+       a(t(/raz/), false, "Regexp");
+       a(t(), false, "No argument");
+       a(t(null), false, "Null");
+       a(t(undefined), false, "Undefined");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-callable.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-callable.js
new file mode 100644 (file)
index 0000000..625e221
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(function () {}), true, "Function");
+       a(t({}), false, "Object");
+       a(t(), false, "Undefined");
+       a(t(null), false, "Null");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy-deep.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy-deep.js
new file mode 100644 (file)
index 0000000..4f14cbb
--- /dev/null
@@ -0,0 +1,46 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x, y;
+
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 3 }), true, "Same");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Different property value");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2 }), false,
+               "Property only in source");
+       a(t({ 1: 1, 2: 2 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Property only in target");
+
+       a(t("raz", "dwa"), false, "String: diff");
+       a(t("raz", "raz"), true, "String: same");
+       a(t("32", 32), false, "String & Number");
+
+       a(t([1, 'raz', true], [1, 'raz', true]), true, "Array: same");
+       a(t([1, 'raz', undefined], [1, 'raz']), false, "Array: diff");
+       a(t(['foo'], ['one']), false, "Array: One value comparision");
+
+       x = { foo: { bar: { mar: {} } } };
+       y = { foo: { bar: { mar: {} } } };
+       a(t(x, y), true, "Deep");
+
+       a(t({ foo: { bar: { mar: 'foo' } } }, { foo: { bar: { mar: {} } } }),
+               false, "Deep: false");
+
+       x = { foo: { bar: { mar: {} } } };
+       x.rec = { foo: x };
+
+       y = { foo: { bar: { mar: {} } } };
+       y.rec = { foo: x };
+
+       a(t(x, y), true, "Object: Infinite Recursion: Same #1");
+
+       x.rec.foo = y;
+       a(t(x, y), true, "Object: Infinite Recursion: Same #2");
+
+       x.rec.foo = x;
+       y.rec.foo = y;
+       a(t(x, y), true, "Object: Infinite Recursion: Same #3");
+
+       y.foo.bar.mar = 'raz';
+       a(t(x, y), false, "Object: Infinite Recursion: Diff");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-copy.js
new file mode 100644 (file)
index 0000000..394e2ed
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 3 }), true, "Same");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Different property value");
+       a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2 }), false,
+               "Property only in source");
+       a(t({ 1: 1, 2: 2 }, { 1: 1, 2: 2, 3: 4 }), false,
+               "Property only in target");
+
+       a(t("raz", "dwa"), false, "String: diff");
+       a(t("raz", "raz"), true, "String: same");
+       a(t("32", 32), false, "String & Number");
+
+       a(t([1, 'raz', true], [1, 'raz', true]), true, "Array: same");
+       a(t([1, 'raz', undefined], [1, 'raz']), false, "Array: diff");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-empty.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-empty.js
new file mode 100644 (file)
index 0000000..b560c2c
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), true, "Empty");
+       a(t({ 1: 1 }), false, "Not empty");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-object.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-object.js
new file mode 100644 (file)
index 0000000..72c8aa6
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(true), false, "Boolean");
+       a(t(null), false, "Null");
+       a(t(new Date()), true, "Date");
+       a(t(new String('raz')), true, "String object");
+       a(t({}), true, "Plain object");
+       a(t(/a/), true, "Regular expression");
+       a(t(function () {}), true, "Function");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-plain-object.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is-plain-object.js
new file mode 100644 (file)
index 0000000..e988829
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t({}), true, "Empty {} is plain object");
+       a(t({ a: true }), true, "{} with property is plain object");
+       a(t({ prototype: 1, constructor: 2, __proto__:  3 }), true,
+               "{} with any property keys is plain object");
+       a(t(null), false, "Null is not plain object");
+       a(t('string'), false, "Primitive is not plain object");
+       a(t(function () {}), false, "Function is not plain object");
+       a(t(Object.create({})), false,
+               "Object whose prototype is not Object.prototype is not plain object");
+       a(t(Object.create(Object.prototype)), true,
+               "Object whose prototype is Object.prototype is plain object");
+       a(t(Object.create(null)), true,
+               "Object whose prototype is null is plain object");
+       a(t(Object.prototype), false, "Object.prototype");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/is.js
new file mode 100644 (file)
index 0000000..4f8948c
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = {};
+       a(t(o, {}), false, "Different objects");
+       a(t(o, o), true, "Same objects");
+       a(t('1', '1'), true, "Same primitive");
+       a(t('1', 1), false, "Different primitive types");
+       a(t(NaN, NaN), true, "NaN");
+       a(t(0, 0), true, "0,0");
+       a(t(0, -0), false, "0,-0");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/key-of.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/key-of.js
new file mode 100644 (file)
index 0000000..a9225a0
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x = {}, y = {}
+         , o = { foo: 'bar', raz: x, trzy: 'cztery', five: '6' };
+
+       a(t(o, 'bar'), 'foo', "First property");
+       a(t(o, 6), null, "Primitive that's not there");
+       a(t(o, x), 'raz', "Object");
+       a(t(o, y), null, "Object that's not there");
+       a(t(o, '6'), 'five', "Last property");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/implement.js
new file mode 100644 (file)
index 0000000..179e1e5
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../object/keys/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys/shim.js
new file mode 100644 (file)
index 0000000..ed29eeb
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ foo: 'bar' }), ['foo'], "Object");
+       a.deep(t('raz'), ['0', '1', '2'], "Primitive");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Undefined");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map-keys.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map-keys.js
new file mode 100644 (file)
index 0000000..be84825
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t({ 1: 1, 2: 2, 3: 3 }, function (key, value) {
+               return 'x' + (key + value);
+       }), { x11: 1, x22: 2, x33: 3 });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/map.js
new file mode 100644 (file)
index 0000000..f9cc09c
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var obj = { 1: 1, 2: 2, 3: 3 };
+       a.deep(t(obj, function (value, key, context) {
+               a(context, obj, "Context argument");
+               return (value + 1) + key;
+       }), { 1: '21', 2: '32', 3: '43' });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin-prototypes.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin-prototypes.js
new file mode 100644 (file)
index 0000000..d1c727a
--- /dev/null
@@ -0,0 +1,67 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o, o1, o2, x, y = {}, z = {};
+       o = { inherited: true, visible: 23 };
+       o1 = Object.create(o);
+       o1.visible = z;
+       o1.nonremovable = 'raz';
+       Object.defineProperty(o1, 'hidden', { value: 'hidden' });
+
+       o2 = Object.defineProperties({}, { nonremovable: { value: y } });
+       o2.other = 'other';
+
+       try { t(o2, o1); } catch (ignore) {}
+
+       a(o2.visible, z, "Enumerable");
+       a(o1.hidden, 'hidden', "Not Enumerable");
+       a(o2.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(o2.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(o2.inherited, true, "Extend deep");
+
+       a(o2.nonremovable, y, "Do not overwrite non configurable");
+       a(o2.other, 'other', "Own kept");
+
+       x = {};
+       t(x, o2);
+       try { t(x, o1); } catch (ignore) {}
+
+       a(x.visible, z, "Enumerable");
+       a(x.hidden, 'hidden', "Not Enumerable");
+       a(x.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(x.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(x.inherited, true, "Extend deep");
+
+       a(x.nonremovable, y, "Ignored non configurable");
+       a(x.other, 'other', "Other");
+
+       x.visible = 3;
+       a(x.visible, 3, "Writable is writable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               x.hidden = 3;
+       }, "Not writable is not writable");
+
+       x = {};
+       t(x, o1);
+       delete x.visible;
+       a.ok(!x.hasOwnProperty('visible'), "Configurable is configurable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               delete x.hidden;
+       }, "Not configurable is not configurable");
+
+       x = Object.defineProperty({}, 'foo',
+               { configurable: false, writable: true, enumerable: false, value: 'bar' });
+
+       try { t(x, { foo: 'lorem' }); } catch (ignore) {}
+       a(x.foo, 'bar', "Writable, not enumerable");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/mixin.js
new file mode 100644 (file)
index 0000000..866005b
--- /dev/null
@@ -0,0 +1,69 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o, o1, o2, x, y = {}, z = {};
+       o = { inherited: true };
+       o1 = Object.create(o);
+       o1.visible = z;
+       o1.nonremovable = 'raz';
+       Object.defineProperty(o1, 'hidden', { value: 'hidden' });
+
+       o2 = Object.defineProperties({}, { nonremovable: { value: y } });
+       o2.other = 'other';
+
+       try { t(o2, o1); } catch (ignore) {}
+
+       a(o2.visible, z, "Enumerable");
+       a(o1.hidden, 'hidden', "Not Enumerable");
+       a(o2.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(o2.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(o2.hasOwnProperty('inherited'), false, "Extend only own");
+       a(o2.inherited, undefined, "Extend ony own: value");
+
+       a(o2.nonremovable, y, "Do not overwrite non configurable");
+       a(o2.other, 'other', "Own kept");
+
+       x = {};
+       t(x, o2);
+       try { t(x, o1); } catch (ignore) {}
+
+       a(x.visible, z, "Enumerable");
+       a(x.hidden, 'hidden', "Not Enumerable");
+       a(x.propertyIsEnumerable('visible'), true, "Enumerable is enumerable");
+       a(x.propertyIsEnumerable('hidden'), false,
+               "Not enumerable is not enumerable");
+
+       a(x.hasOwnProperty('inherited'), false, "Extend only own");
+       a(x.inherited, undefined, "Extend ony own: value");
+
+       a(x.nonremovable, y, "Ignored non configurable");
+       a(x.other, 'other', "Other");
+
+       x.visible = 3;
+       a(x.visible, 3, "Writable is writable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               x.hidden = 3;
+       }, "Not writable is not writable");
+
+       x = {};
+       t(x, o1);
+       delete x.visible;
+       a.ok(!x.hasOwnProperty('visible'), "Configurable is configurable");
+
+       x = {};
+       t(x, o1);
+       a.throws(function () {
+               delete x.hidden;
+       }, "Not configurable is not configurable");
+
+       x = Object.defineProperty({}, 'foo',
+               { configurable: false, writable: true, enumerable: false, value: 'bar' });
+
+       try { t(x, { foo: 'lorem' }); } catch (ignore) {}
+       a(x.foo, 'bar', "Writable, not enumerable");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/normalize-options.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/normalize-options.js
new file mode 100644 (file)
index 0000000..0d2d4da
--- /dev/null
@@ -0,0 +1,32 @@
+'use strict';
+
+var create = Object.create, defineProperty = Object.defineProperty;
+
+module.exports = function (t, a) {
+       var x = { foo: 'raz', bar: 'dwa' }, y;
+       y = t(x);
+       a.not(y, x, "Returns copy");
+       a.deep(y, x, "Plain");
+
+       x = { raz: 'one', dwa: 'two' };
+       defineProperty(x, 'get', {
+               configurable: true,
+               enumerable: true,
+               get: function () { return this.dwa; }
+       });
+       x = create(x);
+       x.trzy = 'three';
+       x.cztery = 'four';
+       x = create(x);
+       x.dwa = 'two!';
+       x.trzy = 'three!';
+       x.piec = 'five';
+       x.szesc = 'six';
+
+       a.deep(t(x), { raz: 'one', dwa: 'two!', trzy: 'three!', cztery: 'four',
+               piec: 'five', szesc: 'six', get: 'two!' }, "Deep object");
+
+       a.deep(t({ marko: 'raz', raz: 'foo' }, x, { szesc: 'elo', siedem: 'bibg' }),
+               { marko: 'raz', raz: 'one', dwa: 'two!', trzy: 'three!', cztery: 'four',
+                       piec: 'five', szesc: 'elo', siedem: 'bibg', get: 'two!' }, "Multiple options");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/primitive-set.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/primitive-set.js
new file mode 100644 (file)
index 0000000..839857e
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+var getPropertyNames = require('../../object/get-property-names')
+  , isPlainObject    = require('../../object/is-plain-object');
+
+module.exports = function (t, a) {
+       var x = t();
+       a(isPlainObject(x), true, "Plain object");
+       a.deep(getPropertyNames(x), [], "No properties");
+       x.foo = 'bar';
+       a.deep(getPropertyNames(x), ['foo'], "Extensible");
+
+       a.deep(t('raz', 'dwa', 3), { raz: true, dwa: true, 3: true },
+               "Arguments handling");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/safe-traverse.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/safe-traverse.js
new file mode 100644 (file)
index 0000000..d30cdef
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var obj = { foo: { bar: { lorem: 12  } } };
+       a(t(obj), obj, "No props");
+       a(t(obj, 'foo'), obj.foo, "One");
+       a(t(obj, 'raz'), undefined, "One: Fail");
+       a(t(obj, 'foo', 'bar'), obj.foo.bar, "Two");
+       a(t(obj, 'dsd', 'raz'), undefined, "Two: Fail #1");
+       a(t(obj, 'foo', 'raz'), undefined, "Two: Fail #2");
+       a(t(obj, 'foo', 'bar', 'lorem'), obj.foo.bar.lorem, "Three");
+       a(t(obj, 'dsd', 'raz', 'fef'), undefined, "Three: Fail #1");
+       a(t(obj, 'foo', 'raz', 'asdf'), undefined, "Three: Fail #2");
+       a(t(obj, 'foo', 'bar', 'asd'), undefined, "Three: Fail #3");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/serialize.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/serialize.js
new file mode 100644 (file)
index 0000000..43eed6a
--- /dev/null
@@ -0,0 +1,25 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var fn = function (raz, dwa) { return raz + dwa; };
+       a(t(), 'undefined', "Undefined");
+       a(t(null), 'null', "Null");
+       a(t(null), 'null', "Null");
+       a(t('raz'), '"raz"', "String");
+       a(t('raz"ddwa\ntrzy'), '"raz\\"ddwa\\ntrzy"', "String with escape");
+       a(t(false), 'false', "Booelean");
+       a(t(fn), String(fn), "Function");
+
+       a(t(/raz-dwa/g), '/raz-dwa/g', "RegExp");
+       a(t(new Date(1234567)), 'new Date(1234567)', "Date");
+       a(t([]), '[]', "Empty array");
+       a(t([undefined, false, null, 'raz"ddwa\ntrzy', fn, /raz/g, new Date(1234567), ['foo']]),
+               '[undefined,false,null,"raz\\"ddwa\\ntrzy",' + String(fn) +
+               ',/raz/g,new Date(1234567),["foo"]]', "Rich Array");
+       a(t({}), '{}', "Empty object");
+       a(t({ raz: undefined, dwa: false, trzy: null, cztery: 'raz"ddwa\ntrzy', piec: fn, szesc: /raz/g,
+               siedem: new Date(1234567), osiem: ['foo', 32], dziewiec: { foo: 'bar', dwa: 343 } }),
+               '{"raz":undefined,"dwa":false,"trzy":null,"cztery":"raz\\"ddwa\\ntrzy","piec":' + String(fn) +
+               ',"szesc":/raz/g,"siedem":new Date(1234567),"osiem":["foo",32],' +
+               '"dziewiec":{"foo":"bar","dwa":343}}', "Rich object");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/implement.js
new file mode 100644 (file)
index 0000000..30b2ac4
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var create        = require('../../../object/create')
+  , isImplemented = require('../../../object/set-prototype-of/is-implemented');
+
+module.exports = function (a) { a(isImplemented(create), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/index.js
new file mode 100644 (file)
index 0000000..aec2605
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var create = require('../../../object/create')
+
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+       var x = {}, y = {};
+
+       if (t === null) return;
+       a(t(x, y), x, "Return self object");
+       a(getPrototypeOf(x), y, "Object");
+       a.throws(function () { t(x); }, TypeError, "Undefined");
+       a.throws(function () { t('foo'); }, TypeError, "Primitive");
+       a(getPrototypeOf(t(x, null)), t.nullPolyfill || null, "Null");
+       x = create(null);
+       a.h1("Change null prototype");
+       a(t(x, y), x, "Result");
+       a(getPrototypeOf(x), y, "Prototype");
+       a.h1("Set null prototype");
+       a(t(y, null), y, "Result");
+       a(getPrototypeOf(y), t.nullPolyfill || null, "Prototype");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of/shim.js
new file mode 100644 (file)
index 0000000..aec2605
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var create = require('../../../object/create')
+
+  , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+       var x = {}, y = {};
+
+       if (t === null) return;
+       a(t(x, y), x, "Return self object");
+       a(getPrototypeOf(x), y, "Object");
+       a.throws(function () { t(x); }, TypeError, "Undefined");
+       a.throws(function () { t('foo'); }, TypeError, "Primitive");
+       a(getPrototypeOf(t(x, null)), t.nullPolyfill || null, "Null");
+       x = create(null);
+       a.h1("Change null prototype");
+       a(t(x, y), x, "Result");
+       a(getPrototypeOf(x), y, "Prototype");
+       a.h1("Set null prototype");
+       a(t(y, null), y, "Result");
+       a(getPrototypeOf(y), t.nullPolyfill || null, "Prototype");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/some.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/some.js
new file mode 100644 (file)
index 0000000..490431e
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+       var o2 = {}, i = 0;
+       t(o, function (value, name) {
+               o2[name] = value;
+               return false;
+       });
+       a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+       a(t(o, function () {
+               ++i;
+               return true;
+       }), true, "Succeeds");
+       a(i, 1, "Stops iteration after condition is met");
+
+       a(t(o, function () {
+               return false;
+       }), false, "Fails");
+
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/to-array.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/to-array.js
new file mode 100644 (file)
index 0000000..1f4beef
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var o = { 1: 1, 2: 2, 3: 3 }, o1 = {}
+         , o2 = t(o, function (value, name, self) {
+               a(self, o, "Self");
+               a(this, o1, "Scope");
+               return value + Number(name);
+       }, o1);
+       a.deep(o2, [2, 4, 6]);
+
+       t(o).sort().forEach(function (item) {
+               a.deep(item, [item[0], o[item[0]]], "Default");
+       });
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/unserialize.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/unserialize.js
new file mode 100644 (file)
index 0000000..405eef1
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var fn = function (raz, dwa) { return raz + dwa; };
+       a(t('undefined'), undefined, "Undefined");
+       a(t('null'), null, "Null");
+       a(t('"raz"'), 'raz', "String");
+       a(t('"raz\\"ddwa\\ntrzy"'), 'raz"ddwa\ntrzy', "String with escape");
+       a(t('false'), false, "Booelean");
+       a(String(t(String(fn))), String(fn), "Function");
+
+       a.deep(t('/raz-dwa/g'), /raz-dwa/g, "RegExp");
+       a.deep(t('new Date(1234567)'), new Date(1234567), "Date");
+       a.deep(t('[]'), [], "Empty array");
+       a.deep(t('[undefined,false,null,"raz\\"ddwa\\ntrzy",/raz/g,new Date(1234567),["foo"]]'),
+               [undefined, false, null, 'raz"ddwa\ntrzy', /raz/g, new Date(1234567), ['foo']], "Rich Array");
+       a.deep(t('{}'), {}, "Empty object");
+       a.deep(t('{"raz":undefined,"dwa":false,"trzy":null,"cztery":"raz\\"ddwa\\ntrzy",' +
+               '"szesc":/raz/g,"siedem":new Date(1234567),"osiem":["foo",32],' +
+               '"dziewiec":{"foo":"bar","dwa":343}}'),
+               { raz: undefined, dwa: false, trzy: null, cztery: 'raz"ddwa\ntrzy', szesc: /raz/g,
+                       siedem: new Date(1234567), osiem: ['foo', 32], dziewiec: { foo: 'bar', dwa: 343 } },
+               "Rich object");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-callable.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-callable.js
new file mode 100644 (file)
index 0000000..b40540b
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var f = function () {};
+       a(t(f), f, "Function");
+       a.throws(function () {
+               t({});
+       }, "Not Function");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-object.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-object.js
new file mode 100644 (file)
index 0000000..eaa8e7b
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a.throws(function () { t(''); }, TypeError, "''");
+       a(t(x = {}), x, "Object");
+       a(t(x = function () {}), x, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+       a(t(x = new Date()), x, "Date");
+
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-value.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/valid-value.js
new file mode 100644 (file)
index 0000000..f1eeafa
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var numIsNaN = require('../../number/is-nan');
+
+module.exports = function (t, a) {
+       var x;
+       a(t(0), 0, "0");
+       a(t(false), false, "false");
+       a(t(''), '', "''");
+       a(numIsNaN(t(NaN)), true, "NaN");
+       a(t(x = {}), x, "{}");
+
+       a.throws(function () {
+               t();
+       }, "Undefined");
+       a.throws(function () {
+               t(null);
+       }, "null");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like-object.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like-object.js
new file mode 100644 (file)
index 0000000..2f3e31b
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a.throws(function () { t(''); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-array-like.js
new file mode 100644 (file)
index 0000000..53bd112
--- /dev/null
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(0); }, TypeError, "0");
+       a.throws(function () { t(false); }, TypeError, "false");
+       a(t(''), '', "''");
+       a.throws(function () { t({}); }, TypeError, "Plain Object");
+       a.throws(function () { t(function () {}); }, TypeError, "Function");
+       a(t(x = new String('raz')), x, "String object"); //jslint: ignore
+
+       a(t(x = { length: 1 }), x, "Array like");
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "null");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable-value.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable-value.js
new file mode 100644 (file)
index 0000000..ae9bd17
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a(t(0), "0");
+       a(t(false), "false");
+       a(t(''), "");
+       a(t({}), String({}), "Object");
+       a(t(x = function () {}), String(x), "Function");
+       a(t(x = new String('raz')), String(x), "String object"); //jslint: ignore
+       a(t(x = new Date()), String(x), "Date");
+
+       a.throws(function () { t(Object.create(null)); }, TypeError, "Null prototype object");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/validate-stringifiable.js
new file mode 100644 (file)
index 0000000..4a46bb5
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var x;
+       a(t(), 'undefined', "Undefined");
+       a(t(null), 'null', "Null");
+       a(t(0), "0");
+       a(t(false), "false");
+       a(t(''), "");
+       a(t({}), String({}), "Object");
+       a(t(x = function () {}), String(x), "Function");
+       a(t(x = new String('raz')), String(x), "String object"); //jslint: ignore
+       a(t(x = new Date()), String(x), "Date");
+
+       a.throws(function () { t(Object.create(null)); }, TypeError, "Null prototype object");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/index.js
new file mode 100644 (file)
index 0000000..ca2bd65
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var indexTest = require('tad/lib/utils/index-test')
+
+  , path = require('path').resolve(__dirname, '../../../reg-exp/#');
+
+module.exports = function (t, a, d) {
+       indexTest(indexTest.readDir(path).aside(function (data) {
+               delete data.sticky;
+               delete data.unicode;
+       }))(t, a, d);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-sticky.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-sticky.js
new file mode 100644 (file)
index 0000000..e154ac2
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var re;
+       a(t.call(/raz/), false, "Normal");
+       a(t.call(/raz/g), false, "Global");
+       try { re = new RegExp('raz', 'y'); } catch (ignore) {}
+       if (!re) return;
+       a(t.call(re), true, "Sticky");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-unicode.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/is-unicode.js
new file mode 100644 (file)
index 0000000..2ffb9e8
--- /dev/null
@@ -0,0 +1,10 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var re;
+       a(t.call(/raz/), false, "Normal");
+       a(t.call(/raz/g), false, "Global");
+       try { re = new RegExp('raz', 'u'); } catch (ignore) {}
+       if (!re) return;
+       a(t.call(re), true, "Unicode");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/implement.js
new file mode 100644 (file)
index 0000000..89825a4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/match/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match/shim.js
new file mode 100644 (file)
index 0000000..5249139
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var result = ['foo'];
+       result.index = 0;
+       result.input = 'foobar';
+       a.deep(t.call(/foo/, 'foobar'), result);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/implement.js
new file mode 100644 (file)
index 0000000..c32b23a
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/replace/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace/shim.js
new file mode 100644 (file)
index 0000000..2b378fd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(/foo/, 'foobar', 'mar'), 'marbar');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/implement.js
new file mode 100644 (file)
index 0000000..ff1b808
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/search/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search/shim.js
new file mode 100644 (file)
index 0000000..596bcdb
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(/foo/, 'barfoo'), 3);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/implement.js
new file mode 100644 (file)
index 0000000..1cee441
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/split/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split/shim.js
new file mode 100644 (file)
index 0000000..6a95cd0
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.deep(t.call(/\|/, 'bar|foo'), ['bar', 'foo']);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js
new file mode 100644 (file)
index 0000000..d94e7b9
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/sticky/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js
new file mode 100644 (file)
index 0000000..9b1aa0f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../reg-exp/#/unicode/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/escape.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/escape.js
new file mode 100644 (file)
index 0000000..5b00f67
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var str = "(?:^te|er)s{2}t\\[raz]+$";
+       a(RegExp('^' + t(str) + '$').test(str), true);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/is-reg-exp.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/is-reg-exp.js
new file mode 100644 (file)
index 0000000..785ca28
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t('arar'), false, "String");
+       a(t(12), false, "Number");
+       a(t(true), false, "Boolean");
+       a(t(new Date()), false, "Date");
+       a(t(new String('raz')), false, "String object");
+       a(t({}), false, "Plain object");
+       a(t(/a/), true, "Regular expression");
+       a(t(new RegExp('a')), true, "Regular expression via constructor");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js
new file mode 100644 (file)
index 0000000..cd12cf1
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var r = /raz/;
+       a(t(r), r, "Direct");
+       r = new RegExp('foo');
+       a(t(r), r, "Constructor");
+       a.throws(function () {
+               t({});
+       }, "Object");
+       a.throws(function () {
+               t(function () {});
+       }, "Function");
+       a.throws(function () {
+               t({ exec: function () { return 20; } });
+       }, "Plain object");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/implement.js
new file mode 100644 (file)
index 0000000..09bf336
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/@@iterator/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator/shim.js
new file mode 100644 (file)
index 0000000..3b0e0b7
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       var it = t.call('r💩z');
+       a.deep(it.next(), { done: false, value: 'r' }, "#1");
+       a.deep(it.next(), { done: false, value: '💩' }, "#2");
+       a.deep(it.next(), { done: false, value: 'z' }, "#3");
+       a.deep(it.next(), { done: true, value: undefined }, "End");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/at.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/at.js
new file mode 100644 (file)
index 0000000..2447a9f
--- /dev/null
@@ -0,0 +1,97 @@
+// See tests at https://github.com/mathiasbynens/String.prototype.at
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.length, 1, "Length");
+
+       a.h1("BMP");
+       a(t.call('abc\uD834\uDF06def', -Infinity), '', "-Infinity");
+       a(t.call('abc\uD834\uDF06def', -1), '', "-1");
+       a(t.call('abc\uD834\uDF06def', -0), 'a', "-0");
+       a(t.call('abc\uD834\uDF06def', +0), 'a', "+0");
+       a(t.call('abc\uD834\uDF06def', 1), 'b', "1");
+       a(t.call('abc\uD834\uDF06def', 3), '\uD834\uDF06', "3");
+       a(t.call('abc\uD834\uDF06def', 4), '\uDF06', "4");
+       a(t.call('abc\uD834\uDF06def', 5), 'd', "5");
+       a(t.call('abc\uD834\uDF06def', 42), '', "42");
+       a(t.call('abc\uD834\uDF06def', +Infinity), '', "+Infinity");
+       a(t.call('abc\uD834\uDF06def', null), 'a', "null");
+       a(t.call('abc\uD834\uDF06def', undefined), 'a', "undefined");
+       a(t.call('abc\uD834\uDF06def'), 'a', "No argument");
+       a(t.call('abc\uD834\uDF06def', false), 'a', "false");
+       a(t.call('abc\uD834\uDF06def', NaN), 'a', "NaN");
+       a(t.call('abc\uD834\uDF06def', ''), 'a', "Empty string");
+       a(t.call('abc\uD834\uDF06def', '_'), 'a', "_");
+       a(t.call('abc\uD834\uDF06def', '1'), 'b', "'1'");
+       a(t.call('abc\uD834\uDF06def', []), 'a', "[]");
+       a(t.call('abc\uD834\uDF06def', {}), 'a', "{}");
+       a(t.call('abc\uD834\uDF06def', -0.9), 'a', "-0.9");
+       a(t.call('abc\uD834\uDF06def', 1.9), 'b', "1.9");
+       a(t.call('abc\uD834\uDF06def', 7.9), 'f', "7.9");
+       a(t.call('abc\uD834\uDF06def', Math.pow(2, 32)), '', "Big number");
+
+       a.h1("Astral symbol");
+       a(t.call('\uD834\uDF06def', -Infinity), '', "-Infinity");
+       a(t.call('\uD834\uDF06def', -1), '', "-1");
+       a(t.call('\uD834\uDF06def', -0), '\uD834\uDF06', "-0");
+       a(t.call('\uD834\uDF06def', +0), '\uD834\uDF06', "+0");
+       a(t.call('\uD834\uDF06def', 1), '\uDF06', "1");
+       a(t.call('\uD834\uDF06def', 2), 'd', "2");
+       a(t.call('\uD834\uDF06def', 3), 'e', "3");
+       a(t.call('\uD834\uDF06def', 4), 'f', "4");
+       a(t.call('\uD834\uDF06def', 42), '', "42");
+       a(t.call('\uD834\uDF06def', +Infinity), '', "+Infinity");
+       a(t.call('\uD834\uDF06def', null), '\uD834\uDF06', "null");
+       a(t.call('\uD834\uDF06def', undefined), '\uD834\uDF06', "undefined");
+       a(t.call('\uD834\uDF06def'), '\uD834\uDF06', "No arguments");
+       a(t.call('\uD834\uDF06def', false), '\uD834\uDF06', "false");
+       a(t.call('\uD834\uDF06def', NaN), '\uD834\uDF06', "NaN");
+       a(t.call('\uD834\uDF06def', ''), '\uD834\uDF06', "Empty string");
+       a(t.call('\uD834\uDF06def', '_'), '\uD834\uDF06', "_");
+       a(t.call('\uD834\uDF06def', '1'), '\uDF06', "'1'");
+
+       a.h1("Lone high surrogates");
+       a(t.call('\uD834abc', -Infinity), '', "-Infinity");
+       a(t.call('\uD834abc', -1), '',  "-1");
+       a(t.call('\uD834abc', -0), '\uD834', "-0");
+       a(t.call('\uD834abc', +0), '\uD834', "+0");
+       a(t.call('\uD834abc', 1), 'a', "1");
+       a(t.call('\uD834abc', 42), '', "42");
+       a(t.call('\uD834abc', +Infinity), '', "Infinity");
+       a(t.call('\uD834abc', null), '\uD834', "null");
+       a(t.call('\uD834abc', undefined), '\uD834', "undefined");
+       a(t.call('\uD834abc'), '\uD834', "No arguments");
+       a(t.call('\uD834abc', false), '\uD834', "false");
+       a(t.call('\uD834abc', NaN), '\uD834', "NaN");
+       a(t.call('\uD834abc', ''), '\uD834', "Empty string");
+       a(t.call('\uD834abc', '_'), '\uD834', "_");
+       a(t.call('\uD834abc', '1'), 'a', "'a'");
+
+       a.h1("Lone low surrogates");
+       a(t.call('\uDF06abc', -Infinity), '', "-Infinity");
+       a(t.call('\uDF06abc', -1), '', "-1");
+       a(t.call('\uDF06abc', -0), '\uDF06', "-0");
+       a(t.call('\uDF06abc', +0), '\uDF06', "+0");
+       a(t.call('\uDF06abc', 1), 'a', "1");
+       a(t.call('\uDF06abc', 42), '', "42");
+       a(t.call('\uDF06abc', +Infinity), '', "+Infinity");
+       a(t.call('\uDF06abc', null), '\uDF06', "null");
+       a(t.call('\uDF06abc', undefined), '\uDF06', "undefined");
+       a(t.call('\uDF06abc'), '\uDF06', "No arguments");
+       a(t.call('\uDF06abc', false), '\uDF06', "false");
+       a(t.call('\uDF06abc', NaN), '\uDF06', "NaN");
+       a(t.call('\uDF06abc', ''), '\uDF06', "Empty string");
+       a(t.call('\uDF06abc', '_'), '\uDF06', "_");
+       a(t.call('\uDF06abc', '1'), 'a', "'1'");
+
+       a.h1("Context");
+       a.throws(function () { t.call(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t.call(undefined, 4); }, TypeError,
+               "Undefined + argument");
+       a.throws(function () { t.call(null); }, TypeError, "Null");
+       a.throws(function () { t.call(null, 4); }, TypeError, "Null + argument");
+       a(t.call(42, 0), '4', "Number #1");
+       a(t.call(42, 1), '2', "Number #2");
+       a(t.call({ toString: function () { return 'abc'; } }, 2), 'c', "Object");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/camel-to-hyphen.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/camel-to-hyphen.js
new file mode 100644 (file)
index 0000000..8b47a81
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('razDwaTRzy4yFoo45My'), 'raz-dwa-t-rzy4y-foo45-my');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/capitalize.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/capitalize.js
new file mode 100644 (file)
index 0000000..fa11ff8
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('raz'), 'Raz', "Word");
+       a(t.call('BLA'), 'BLA', "Uppercase");
+       a(t.call(''), '', "Empty");
+       a(t.call('a'), 'A', "One letter");
+       a(t.call('this is a test'), 'This is a test', "Sentence");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/case-insensitive-compare.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/case-insensitive-compare.js
new file mode 100644 (file)
index 0000000..01a90c3
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call("AA", "aa"), 0, "Same");
+       a.ok(t.call("Amber", "zebra") < 0, "Less");
+       a.ok(t.call("Zebra", "amber") > 0, "Greater");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/implement.js
new file mode 100644 (file)
index 0000000..5e33cd7
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+var isImplemented =
+       require('../../../../string/#/code-point-at/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at/shim.js
new file mode 100644 (file)
index 0000000..0df4751
--- /dev/null
@@ -0,0 +1,81 @@
+// Taken from: https://github.com/mathiasbynens/String.prototype.codePointAt
+//             /blob/master/tests/tests.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.length, 1, "Length");
+
+       // String that starts with a BMP symbol
+       a(t.call('abc\uD834\uDF06def', ''), 0x61);
+       a(t.call('abc\uD834\uDF06def', '_'), 0x61);
+       a(t.call('abc\uD834\uDF06def'), 0x61);
+       a(t.call('abc\uD834\uDF06def', -Infinity), undefined);
+       a(t.call('abc\uD834\uDF06def', -1), undefined);
+       a(t.call('abc\uD834\uDF06def', -0), 0x61);
+       a(t.call('abc\uD834\uDF06def', 0), 0x61);
+       a(t.call('abc\uD834\uDF06def', 3), 0x1D306);
+       a(t.call('abc\uD834\uDF06def', 4), 0xDF06);
+       a(t.call('abc\uD834\uDF06def', 5), 0x64);
+       a(t.call('abc\uD834\uDF06def', 42), undefined);
+       a(t.call('abc\uD834\uDF06def', Infinity), undefined);
+       a(t.call('abc\uD834\uDF06def', Infinity), undefined);
+       a(t.call('abc\uD834\uDF06def', NaN), 0x61);
+       a(t.call('abc\uD834\uDF06def', false), 0x61);
+       a(t.call('abc\uD834\uDF06def', null), 0x61);
+       a(t.call('abc\uD834\uDF06def', undefined), 0x61);
+
+       // String that starts with an astral symbol
+       a(t.call('\uD834\uDF06def', ''), 0x1D306);
+       a(t.call('\uD834\uDF06def', '1'), 0xDF06);
+       a(t.call('\uD834\uDF06def', '_'), 0x1D306);
+       a(t.call('\uD834\uDF06def'), 0x1D306);
+       a(t.call('\uD834\uDF06def', -1), undefined);
+       a(t.call('\uD834\uDF06def', -0), 0x1D306);
+       a(t.call('\uD834\uDF06def', 0), 0x1D306);
+       a(t.call('\uD834\uDF06def', 1), 0xDF06);
+       a(t.call('\uD834\uDF06def', 42), undefined);
+       a(t.call('\uD834\uDF06def', false), 0x1D306);
+       a(t.call('\uD834\uDF06def', null), 0x1D306);
+       a(t.call('\uD834\uDF06def', undefined), 0x1D306);
+
+       // Lone high surrogates
+       a(t.call('\uD834abc', ''), 0xD834);
+       a(t.call('\uD834abc', '_'), 0xD834);
+       a(t.call('\uD834abc'), 0xD834);
+       a(t.call('\uD834abc', -1), undefined);
+       a(t.call('\uD834abc', -0), 0xD834);
+       a(t.call('\uD834abc', 0), 0xD834);
+       a(t.call('\uD834abc', false), 0xD834);
+       a(t.call('\uD834abc', NaN), 0xD834);
+       a(t.call('\uD834abc', null), 0xD834);
+       a(t.call('\uD834abc', undefined), 0xD834);
+
+       // Lone low surrogates
+       a(t.call('\uDF06abc', ''), 0xDF06);
+       a(t.call('\uDF06abc', '_'), 0xDF06);
+       a(t.call('\uDF06abc'), 0xDF06);
+       a(t.call('\uDF06abc', -1), undefined);
+       a(t.call('\uDF06abc', -0), 0xDF06);
+       a(t.call('\uDF06abc', 0), 0xDF06);
+       a(t.call('\uDF06abc', false), 0xDF06);
+       a(t.call('\uDF06abc', NaN), 0xDF06);
+       a(t.call('\uDF06abc', null), 0xDF06);
+       a(t.call('\uDF06abc', undefined), 0xDF06);
+
+       a.throws(function () { t.call(undefined); }, TypeError);
+       a.throws(function () { t.call(undefined, 4); }, TypeError);
+       a.throws(function () { t.call(null); }, TypeError);
+       a.throws(function () { t.call(null, 4); }, TypeError);
+       a(t.call(42, 0), 0x34);
+       a(t.call(42, 1), 0x32);
+       a(t.call({ toString: function () { return 'abc'; } }, 2), 0x63);
+
+       a.throws(function () { t.apply(undefined); }, TypeError);
+       a.throws(function () { t.apply(undefined, [4]); }, TypeError);
+       a.throws(function () { t.apply(null); }, TypeError);
+       a.throws(function () { t.apply(null, [4]); }, TypeError);
+       a(t.apply(42, [0]), 0x34);
+       a(t.apply(42, [1]), 0x32);
+       a(t.apply({ toString: function () { return 'abc'; } }, [2]), 0x63);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/implement.js
new file mode 100644 (file)
index 0000000..220f50d
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/contains/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains/shim.js
new file mode 100644 (file)
index 0000000..a0ea4db
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('raz', ''), true, "Empty");
+       a(t.call('', ''), true, "Both Empty");
+       a(t.call('raz', 'raz'), true, "Same");
+       a(t.call('razdwa', 'raz'), true, "Starts with");
+       a(t.call('razdwa', 'dwa'), true, "Ends with");
+       a(t.call('razdwa', 'zdw'), true, "In middle");
+       a(t.call('', 'raz'), false, "Something in empty");
+       a(t.call('az', 'raz'), false, "Longer");
+       a(t.call('azasdfasdf', 'azff'), false, "Not found");
+       a(t.call('razdwa', 'raz', 1), false, "Position");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/implement.js
new file mode 100644 (file)
index 0000000..93bd2dd
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/ends-with/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with/shim.js
new file mode 100644 (file)
index 0000000..e4b93c4
--- /dev/null
@@ -0,0 +1,16 @@
+// In some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog/
+// string/string_test.html
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('abc', ''), true, "Empty needle");
+       a(t.call('abcd', 'cd'), true, "Ends with needle");
+       a(t.call('abcd', 'abcd'), true, "Needle equals haystack");
+       a(t.call('abcd', 'ab'), false, "Doesn't end with needle");
+       a(t.call('abc', 'defg'), false, "Length trick");
+       a(t.call('razdwa', 'zd', 3), false, "Position: false");
+       a(t.call('razdwa', 'zd', 4), true, "Position: true");
+       a(t.call('razdwa', 'zd', 5), false, "Position: false #2");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/hyphen-to-camel.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/hyphen-to-camel.js
new file mode 100644 (file)
index 0000000..bd7ded4
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('raz-dwa-t-rzy-4y-rtr4-tiu-45-pa'), 'razDwaTRzy4yRtr4Tiu45Pa');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/indent.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/indent.js
new file mode 100644 (file)
index 0000000..eb92b36
--- /dev/null
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('ra\nzz', ''), 'ra\nzz', "Empty");
+       a(t.call('ra\nzz', '\t', 3), '\t\t\tra\n\t\t\tzz', "String repeat");
+       a(t.call('ra\nzz\nsss\nfff\n', '\t'), '\tra\n\tzz\n\tsss\n\tfff\n',
+               "Multi-line");
+       a(t.call('ra\n\nzz\n', '\t'), '\tra\n\n\tzz\n', "Don't touch empty lines");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/last.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/last.js
new file mode 100644 (file)
index 0000000..ad36a21
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call(''), null, "Null");
+       a(t.call('abcdef'), 'f', "String");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/_data.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/_data.js
new file mode 100644 (file)
index 0000000..c741add
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t[0], 'object'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/implement.js
new file mode 100644 (file)
index 0000000..4886c9b
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/normalize/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize/shim.js
new file mode 100644 (file)
index 0000000..28e27f5
--- /dev/null
@@ -0,0 +1,13 @@
+// Taken from: https://github.com/walling/unorm/blob/master/test/es6-shim.js
+
+'use strict';
+
+var str = 'äiti';
+
+module.exports = function (t, a) {
+       a(t.call(str), "\u00e4iti");
+       a(t.call(str, "NFC"), "\u00e4iti");
+       a(t.call(str, "NFD"), "a\u0308iti");
+       a(t.call(str, "NFKC"), "\u00e4iti");
+       a(t.call(str, "NFKD"), "a\u0308iti");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/pad.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/pad.js
new file mode 100644 (file)
index 0000000..28c3fca
--- /dev/null
@@ -0,0 +1,24 @@
+'use strict';
+
+var partial = require('../../../function/#/partial');
+
+module.exports = {
+       Left: function (t, a) {
+               t = partial.call(t, 'x', 5);
+
+               a(t.call('yy'), 'xxxyy');
+               a(t.call(''), 'xxxxx', "Empty string");
+
+               a(t.call('yyyyy'), 'yyyyy', 'Equal length');
+               a(t.call('yyyyyyy'), 'yyyyyyy', 'Longer');
+       },
+       Right: function (t, a) {
+               t = partial.call(t, 'x', -5);
+
+               a(t.call('yy'), 'yyxxx');
+               a(t.call(''), 'xxxxx', "Empty string");
+
+               a(t.call('yyyyy'), 'yyyyy', 'Equal length');
+               a(t.call('yyyyyyy'), 'yyyyyyy', 'Longer');
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace-all.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace-all.js
new file mode 100644 (file)
index 0000000..a425c87
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('razdwatrzy', 'dwa', 'olera'), 'razoleratrzy', "Basic");
+       a(t.call('razdwatrzy', 'dwa', 'ole$&a'), 'razole$&atrzy', "Inserts");
+       a(t.call('razdwa', 'ola', 'sdfs'), 'razdwa', "No replace");
+
+       a(t.call('$raz$$dwa$trzy$', '$', '&&'), '&&raz&&&&dwa&&trzy&&', "Multi");
+       a(t.call('$raz$$dwa$$$$trzy$', '$$', '&'), '$raz&dwa&&trzy$',
+               "Multi many chars");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/plain-replace.js
new file mode 100644 (file)
index 0000000..54522ed
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('razdwatrzy', 'dwa', 'olera'), 'razoleratrzy', "Basic");
+       a(t.call('razdwatrzy', 'dwa', 'ole$&a'), 'razole$&atrzy', "Inserts");
+       a(t.call('razdwa', 'ola', 'sdfs'), 'razdwa', "No replace");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/implement.js
new file mode 100644 (file)
index 0000000..7ff65a8
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/repeat/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat/shim.js
new file mode 100644 (file)
index 0000000..7e0d077
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('a', 0), '', "Empty");
+       a(t.call('a', 1), 'a', "1");
+       a(t.call('\t', 5), '\t\t\t\t\t', "Whitespace");
+       a(t.call('raz', 3), 'razrazraz', "Many chars");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/implement.js
new file mode 100644 (file)
index 0000000..fc8490f
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../../string/#/starts-with/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with/shim.js
new file mode 100644 (file)
index 0000000..e0e123b
--- /dev/null
@@ -0,0 +1,14 @@
+// Inspired and in some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog
+// /string/string_test.html
+
+'use strict';
+
+module.exports = function (t, a) {
+       a(t.call('abc', ''), true, "Empty needle");
+       a(t.call('abcd', 'ab'), true, "Starts with needle");
+       a(t.call('abcd', 'abcd'), true, "Needle equals haystack");
+       a(t.call('abcd', 'bcde', 1), false, "Needle larger than haystack");
+       a(!t.call('abcd', 'cd'), true, "Doesn't start with needle");
+       a(t.call('abcd', 'bc', 1), true, "Position");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/format-method.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/format-method.js
new file mode 100644 (file)
index 0000000..bb5561e
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function (t, a) {
+       t = t({ a: 'A', aa: 'B', ab: 'C', b: 'D',
+               c: function () { return ++this.a; } });
+       a(t.call({ a: 0 }, ' %a%aab%abb%b\\%aa%ab%c%c '), ' ABbCbD%aaC12 ');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/implement.js
new file mode 100644 (file)
index 0000000..0aceb97
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../string/from-code-point/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point/shim.js
new file mode 100644 (file)
index 0000000..88cda3d
--- /dev/null
@@ -0,0 +1,47 @@
+// Taken from: https://github.com/mathiasbynens/String.fromCodePoint/blob/master
+//             /tests/tests.js
+
+'use strict';
+
+var pow = Math.pow;
+
+module.exports = function (t, a) {
+       var counter, result;
+
+       a(t.length, 1, "Length");
+       a(String.propertyIsEnumerable('fromCodePoint'), false, "Not enumerable");
+
+       a(t(''), '\0', "Empty string");
+       a(t(), '', "No arguments");
+       a(t(-0), '\0', "-0");
+       a(t(0), '\0', "0");
+       a(t(0x1D306), '\uD834\uDF06', "Unicode");
+       a(t(0x1D306, 0x61, 0x1D307), '\uD834\uDF06a\uD834\uDF07', "Complex unicode");
+       a(t(0x61, 0x62, 0x1D307), 'ab\uD834\uDF07', "Complex");
+       a(t(false), '\0', "false");
+       a(t(null), '\0', "null");
+
+       a.throws(function () { t('_'); }, RangeError, "_");
+       a.throws(function () { t(Infinity); }, RangeError, "Infinity");
+       a.throws(function () { t(-Infinity); }, RangeError, "-Infinity");
+       a.throws(function () { t(-1); }, RangeError, "-1");
+       a.throws(function () { t(0x10FFFF + 1); }, RangeError, "Range error #1");
+       a.throws(function () { t(3.14); }, RangeError, "Range error #2");
+       a.throws(function () { t(3e-2); }, RangeError, "Range error #3");
+       a.throws(function () { t(-Infinity); }, RangeError, "Range error #4");
+       a.throws(function () { t(+Infinity); }, RangeError, "Range error #5");
+       a.throws(function () { t(NaN); }, RangeError, "Range error #6");
+       a.throws(function () { t(undefined); }, RangeError, "Range error #7");
+       a.throws(function () { t({}); }, RangeError, "Range error #8");
+       a.throws(function () { t(/re/); }, RangeError, "Range error #9");
+
+       counter = pow(2, 15) * 3 / 2;
+       result = [];
+       while (--counter >= 0) result.push(0); // one code unit per symbol
+       t.apply(null, result); // must not throw
+
+       counter = pow(2, 15) * 3 / 2;
+       result = [];
+       while (--counter >= 0) result.push(0xFFFF + 1); // two code units per symbol
+       t.apply(null, result); // must not throw
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/is-string.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/is-string.js
new file mode 100644 (file)
index 0000000..32f5958
--- /dev/null
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(null), false, "Null");
+       a(t(''), true, "Empty string");
+       a(t(12), false, "Number");
+       a(t(false), false, "Boolean");
+       a(t(new Date()), false, "Date");
+       a(t(new String('raz')), true, "String object");
+       a(t('asdfaf'), true, "String");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/random-uniq.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/random-uniq.js
new file mode 100644 (file)
index 0000000..6791ac2
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var isValidFormat = RegExp.prototype.test.bind(/^[a-z0-9]+$/);
+
+module.exports = function (t, a) {
+       a(typeof t(), 'string');
+       a.ok(t().length > 7);
+       a.not(t(), t());
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+       a.ok(isValidFormat(t()));
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/implement.js
new file mode 100644 (file)
index 0000000..59416de
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+var isImplemented = require('../../../string/raw/is-implemented');
+
+module.exports = function (a) { a(isImplemented(), true); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/index.js
new file mode 100644 (file)
index 0000000..2e0bfa3
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./shim');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/shim.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw/shim.js
new file mode 100644 (file)
index 0000000..025ed78
--- /dev/null
@@ -0,0 +1,15 @@
+// Partially taken from:
+// https://github.com/paulmillr/es6-shim/blob/master/test/string.js
+
+'use strict';
+
+module.exports = function (t, a) {
+       var callSite = [];
+
+       callSite.raw = ["The total is ", " ($", " with tax)"];
+       a(t(callSite, '{total}', '{total * 1.01}'),
+               'The total is {total} (${total * 1.01} with tax)');
+
+       callSite.raw = [];
+       a(t(callSite, '{total}', '{total * 1.01}'), '');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js
new file mode 100644 (file)
index 0000000..6dc1543
--- /dev/null
@@ -0,0 +1,40 @@
+'use strict';
+
+var setPrototypeOf = require('es5-ext/object/set-prototype-of')
+  , d              = require('d')
+  , Iterator       = require('../')
+  , validIterable  = require('../valid-iterable')
+
+  , push = Array.prototype.push
+  , defineProperties = Object.defineProperties
+  , IteratorChain;
+
+IteratorChain = function (iterators) {
+       defineProperties(this, {
+               __iterators__: d('', iterators),
+               __current__: d('w', iterators.shift())
+       });
+};
+if (setPrototypeOf) setPrototypeOf(IteratorChain, Iterator);
+
+IteratorChain.prototype = Object.create(Iterator.prototype, {
+       constructor: d(IteratorChain),
+       next: d(function () {
+               var result;
+               if (!this.__current__) return { done: true, value: undefined };
+               result = this.__current__.next();
+               while (result.done) {
+                       this.__current__ = this.__iterators__.shift();
+                       if (!this.__current__) return { done: true, value: undefined };
+                       result = this.__current__.next();
+               }
+               return result;
+       })
+});
+
+module.exports = function () {
+       var iterators = [this];
+       push.apply(iterators, arguments);
+       iterators.forEach(validIterable);
+       return new IteratorChain(iterators);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.lint b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.lint
new file mode 100644 (file)
index 0000000..cf54d81
--- /dev/null
@@ -0,0 +1,11 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.npmignore b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.travis.yml b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/.travis.yml
new file mode 100644 (file)
index 0000000..02c277c
--- /dev/null
@@ -0,0 +1,11 @@
+language: node_js
+node_js:
+  - 0.8
+  - 0.10
+  - 0.11
+
+notifications:
+  email:
+    - medikoo+es6-iterator@medikoo.com
+
+script: "npm test && npm run lint"
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/CHANGES b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/CHANGES
new file mode 100644 (file)
index 0000000..a2d1ec7
--- /dev/null
@@ -0,0 +1,28 @@
+v0.1.3  --  2015.02.02
+* Update dependencies
+* Fix spelling of LICENSE
+
+v0.1.2  --  2014.11.19
+* Optimise internal `_next` to not verify internal's list length at all times
+  (#2 thanks @RReverser)
+* Fix documentation examples
+* Configure lint scripts
+
+v0.1.1  --  2014.04.29
+* Fix es6-symbol dependency version
+
+v0.1.0  --  2014.04.29
+* Assure strictly npm hosted dependencies
+* Remove sparse arrays dedicated handling (as per spec)
+* Add: isIterable, validIterable and chain (method)
+* Remove toArray, it's addressed by Array.from (polyfil can be found in es5-ext/array/from)
+* Add break possiblity to 'forOf' via 'doBreak' function argument
+* Provide dedicated iterator for array-likes (ArrayIterator) and for strings (StringIterator)
+* Provide @@toStringTag symbol
+* When available rely on @@iterator symbol
+* Remove 32bit integer maximum list length restriction
+* Improve Iterator internals
+* Update to use latest version of dependencies
+
+v0.0.0  --  2013.10.12
+Initial (dev version)
\ No newline at end of file
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/LICENSE b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/LICENSE
new file mode 100644 (file)
index 0000000..04724a3
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.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/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/README.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/README.md
new file mode 100644 (file)
index 0000000..288373d
--- /dev/null
@@ -0,0 +1,148 @@
+# es6-iterator
+## ECMAScript 6 Iterator interface
+
+### Installation
+
+       $ npm install es6-iterator
+       
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+## API
+
+### Constructors
+
+#### Iterator(list) _(es6-iterator)_
+
+Abstract Iterator interface. Meant for extensions and not to be used on its own.
+
+Accepts any _list_ object (technically object with numeric _length_ property).
+
+_Mind it doesn't iterate strings properly, for that use dedicated [StringIterator](#string-iterator)_
+
+```javascript
+var Iterator = require('es6-iterator')
+var iterator = new Iterator([1, 2, 3]);
+
+iterator.next(); // { value: 1, done: false }
+iterator.next(); // { value: 2, done: false }
+iterator.next(); // { value: 3, done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+
+#### ArrayIterator(arrayLike[, kind]) _(es6-iterator/array)_
+
+Dedicated for arrays and array-likes. Supports three iteration kinds:
+* __value__ _(default)_ - Iterates values
+* __key__ - Iterates indexes
+* __key+value__ - Iterates keys and indexes, each iteration value is in _[key, value]_ form.
+
+
+```javascript
+var ArrayIterator = require('es6-iterator/array')
+var iterator = new ArrayIterator([1, 2, 3], 'key+value');
+
+iterator.next(); // { value: [0, 1], done: false }
+iterator.next(); // { value: [1, 2], done: false }
+iterator.next(); // { value: [2, 3], done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+May also be used for _arguments_ objects:
+
+```javascript
+(function () {
+  var iterator = new ArrayIterator(arguments);
+
+  iterator.next(); // { value: 1, done: false }
+  iterator.next(); // { value: 2, done: false }
+  iterator.next(); // { value: 3, done: false }
+  iterator.next(); // { value: undefined, done: true }
+}(1, 2, 3));
+```
+
+#### StringIterator(str) _(es6-iterator/string)_
+
+Assures proper iteration over unicode symbols.  
+See: http://mathiasbynens.be/notes/javascript-unicode
+
+```javascript
+var StringIterator = require('es6-iterator/string');
+var iterator = new StringIterator('f🙈o🙉o🙊');
+
+iterator.next(); // { value: 'f', done: false }
+iterator.next(); // { value: '🙈', done: false }
+iterator.next(); // { value: 'o', done: false }
+iterator.next(); // { value: '🙉', done: false }
+iterator.next(); // { value: 'o', done: false }
+iterator.next(); // { value: '🙊', done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+### Function utilities
+
+#### forOf(iterable, callback[, thisArg]) _(es6-iterator/for-of)_
+
+Polyfill for ECMAScript 6 [`for...of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) statement.
+
+```
+var forOf = require('es6-iterator/for-of');
+var result = [];
+
+forOf('🙈🙉🙊', function (monkey) { result.push(monkey); });
+console.log(result); // ['🙈', '🙉', '🙊'];
+```
+
+Optionally you can break iteration at any point:
+
+```javascript
+var result = [];
+
+forOf([1,2,3,4]', function (val, doBreak) {
+  result.push(monkey);
+  if (val >= 3) doBreak();
+});
+console.log(result); // [1, 2, 3];
+```
+
+#### get(obj) _(es6-iterator/get)_
+
+Return iterator for any iterable object.
+
+```javascript
+var getIterator = require('es6-iterator/get');
+var iterator = get([1,2,3]);
+
+iterator.next(); // { value: 1, done: false }
+iterator.next(); // { value: 2, done: false }
+iterator.next(); // { value: 3, done: false }
+iterator.next(); // { value: undefined, done: true }
+```
+
+#### isIterable(obj) _(es6-iterator/is-iterable)_
+
+Whether _obj_ is iterable
+
+```javascript
+var isIterable = require('es6-iterator/is-iterable');
+
+isIterable(null); // false
+isIterable(true); // false
+isIterable('str'); // true
+isIterable(['a', 'r', 'r']); // true
+isIterable(new ArrayIterator([])); // true
+```
+
+#### validIterable(obj) _(es6-iterator/valid-iterable)_
+
+If _obj_ is an iterable it is returned. Otherwise _TypeError_ is thrown.
+
+### Method extensions
+
+#### iterator.chain(iterator1[, …iteratorn]) _(es6-iterator/#/chain)_
+
+Chain multiple iterators into one.
+
+### Tests [![Build Status](https://travis-ci.org/medikoo/es6-iterator.png)](https://travis-ci.org/medikoo/es6-iterator)
+
+       $ npm test
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js
new file mode 100644 (file)
index 0000000..885ad0a
--- /dev/null
@@ -0,0 +1,30 @@
+'use strict';
+
+var setPrototypeOf = require('es5-ext/object/set-prototype-of')
+  , contains       = require('es5-ext/string/#/contains')
+  , d              = require('d')
+  , Iterator       = require('./')
+
+  , defineProperty = Object.defineProperty
+  , ArrayIterator;
+
+ArrayIterator = module.exports = function (arr, kind) {
+       if (!(this instanceof ArrayIterator)) return new ArrayIterator(arr, kind);
+       Iterator.call(this, arr);
+       if (!kind) kind = 'value';
+       else if (contains.call(kind, 'key+value')) kind = 'key+value';
+       else if (contains.call(kind, 'key')) kind = 'key';
+       else kind = 'value';
+       defineProperty(this, '__kind__', d('', kind));
+};
+if (setPrototypeOf) setPrototypeOf(ArrayIterator, Iterator);
+
+ArrayIterator.prototype = Object.create(Iterator.prototype, {
+       constructor: d(ArrayIterator),
+       _resolve: d(function (i) {
+               if (this.__kind__ === 'value') return this.__list__[i];
+               if (this.__kind__ === 'key+value') return [i, this.__list__[i]];
+               return i;
+       }),
+       toString: d(function () { return '[object Array Iterator]'; })
+});
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js
new file mode 100644 (file)
index 0000000..111f552
--- /dev/null
@@ -0,0 +1,44 @@
+'use strict';
+
+var callable = require('es5-ext/object/valid-callable')
+  , isString = require('es5-ext/string/is-string')
+  , get      = require('./get')
+
+  , isArray = Array.isArray, call = Function.prototype.call;
+
+module.exports = function (iterable, cb/*, thisArg*/) {
+       var mode, thisArg = arguments[2], result, doBreak, broken, i, l, char, code;
+       if (isArray(iterable)) mode = 'array';
+       else if (isString(iterable)) mode = 'string';
+       else iterable = get(iterable);
+
+       callable(cb);
+       doBreak = function () { broken = true; };
+       if (mode === 'array') {
+               iterable.some(function (value) {
+                       call.call(cb, thisArg, value, doBreak);
+                       if (broken) return true;
+               });
+               return;
+       }
+       if (mode === 'string') {
+               l = iterable.length;
+               for (i = 0; i < l; ++i) {
+                       char = iterable[i];
+                       if ((i + 1) < l) {
+                               code = char.charCodeAt(0);
+                               if ((code >= 0xD800) && (code <= 0xDBFF)) char += iterable[++i];
+                       }
+                       call.call(cb, thisArg, char, doBreak);
+                       if (broken) break;
+               }
+               return;
+       }
+       result = iterable.next();
+
+       while (!result.done) {
+               call.call(cb, thisArg, result.value, doBreak);
+               if (broken) return;
+               result = iterable.next();
+       }
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js
new file mode 100644 (file)
index 0000000..38230fd
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var isString = require('es5-ext/string/is-string')
+  , ArrayIterator  = require('./array')
+  , StringIterator = require('./string')
+  , iterable       = require('./valid-iterable')
+  , iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (obj) {
+       if (typeof iterable(obj)[iteratorSymbol] === 'function') return obj[iteratorSymbol]();
+       if (isString(obj)) return new StringIterator(obj);
+       return new ArrayIterator(obj);
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js
new file mode 100644 (file)
index 0000000..10fd089
--- /dev/null
@@ -0,0 +1,90 @@
+'use strict';
+
+var clear    = require('es5-ext/array/#/clear')
+  , assign   = require('es5-ext/object/assign')
+  , callable = require('es5-ext/object/valid-callable')
+  , value    = require('es5-ext/object/valid-value')
+  , d        = require('d')
+  , autoBind = require('d/auto-bind')
+  , Symbol   = require('es6-symbol')
+
+  , defineProperty = Object.defineProperty
+  , defineProperties = Object.defineProperties
+  , Iterator;
+
+module.exports = Iterator = function (list, context) {
+       if (!(this instanceof Iterator)) return new Iterator(list, context);
+       defineProperties(this, {
+               __list__: d('w', value(list)),
+               __context__: d('w', context),
+               __nextIndex__: d('w', 0)
+       });
+       if (!context) return;
+       callable(context.on);
+       context.on('_add', this._onAdd);
+       context.on('_delete', this._onDelete);
+       context.on('_clear', this._onClear);
+};
+
+defineProperties(Iterator.prototype, assign({
+       constructor: d(Iterator),
+       _next: d(function () {
+               var i;
+               if (!this.__list__) return;
+               if (this.__redo__) {
+                       i = this.__redo__.shift();
+                       if (i !== undefined) return i;
+               }
+               if (this.__nextIndex__ < this.__list__.length) return this.__nextIndex__++;
+               this._unBind();
+       }),
+       next: d(function () { return this._createResult(this._next()); }),
+       _createResult: d(function (i) {
+               if (i === undefined) return { done: true, value: undefined };
+               return { done: false, value: this._resolve(i) };
+       }),
+       _resolve: d(function (i) { return this.__list__[i]; }),
+       _unBind: d(function () {
+               this.__list__ = null;
+               delete this.__redo__;
+               if (!this.__context__) return;
+               this.__context__.off('_add', this._onAdd);
+               this.__context__.off('_delete', this._onDelete);
+               this.__context__.off('_clear', this._onClear);
+               this.__context__ = null;
+       }),
+       toString: d(function () { return '[object Iterator]'; })
+}, autoBind({
+       _onAdd: d(function (index) {
+               if (index >= this.__nextIndex__) return;
+               ++this.__nextIndex__;
+               if (!this.__redo__) {
+                       defineProperty(this, '__redo__', d('c', [index]));
+                       return;
+               }
+               this.__redo__.forEach(function (redo, i) {
+                       if (redo >= index) this.__redo__[i] = ++redo;
+               }, this);
+               this.__redo__.push(index);
+       }),
+       _onDelete: d(function (index) {
+               var i;
+               if (index >= this.__nextIndex__) return;
+               --this.__nextIndex__;
+               if (!this.__redo__) return;
+               i = this.__redo__.indexOf(index);
+               if (i !== -1) this.__redo__.splice(i, 1);
+               this.__redo__.forEach(function (redo, i) {
+                       if (redo > index) this.__redo__[i] = --redo;
+               }, this);
+       }),
+       _onClear: d(function () {
+               if (this.__redo__) clear.call(this.__redo__);
+               this.__nextIndex__ = 0;
+       })
+})));
+
+defineProperty(Iterator.prototype, Symbol.iterator, d(function () {
+       return this;
+}));
+defineProperty(Iterator.prototype, Symbol.toStringTag, d('', 'Iterator'));
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js
new file mode 100644 (file)
index 0000000..bbcf104
--- /dev/null
@@ -0,0 +1,13 @@
+'use strict';
+
+var isString       = require('es5-ext/string/is-string')
+  , iteratorSymbol = require('es6-symbol').iterator
+
+  , isArray = Array.isArray;
+
+module.exports = function (value) {
+       if (value == null) return false;
+       if (isArray(value)) return true;
+       if (isString(value)) return true;
+       return (typeof value[iteratorSymbol] === 'function');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json
new file mode 100644 (file)
index 0000000..e913854
--- /dev/null
@@ -0,0 +1,65 @@
+{
+  "name": "es6-iterator",
+  "version": "0.1.3",
+  "description": "Iterator abstraction based on ES6 specification",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "iterator",
+    "array",
+    "list",
+    "set",
+    "map",
+    "generator"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es6-iterator.git"
+  },
+  "dependencies": {
+    "d": "~0.1.1",
+    "es5-ext": "~0.10.5",
+    "es6-symbol": "~2.0.1"
+  },
+  "devDependencies": {
+    "event-emitter": "~0.3.3",
+    "tad": "~0.2.1",
+    "xlint": "~0.2.2",
+    "xlint-jslint-medikoo": "~0.1.2"
+  },
+  "scripts": {
+    "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+    "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "2addc362c6f139e4941cf4726eeb59e5960c5cef",
+  "bugs": {
+    "url": "https://github.com/medikoo/es6-iterator/issues"
+  },
+  "homepage": "https://github.com/medikoo/es6-iterator",
+  "_id": "es6-iterator@0.1.3",
+  "_shasum": "d6f58b8c4fc413c249b4baa19768f8e4d7c8944e",
+  "_from": "es6-iterator@>=0.1.3 <0.2.0",
+  "_npmVersion": "2.3.0",
+  "_nodeVersion": "0.11.16",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "d6f58b8c4fc413c249b4baa19768f8e4d7c8944e",
+    "tarball": "http://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz"
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js
new file mode 100644 (file)
index 0000000..cdb39ea
--- /dev/null
@@ -0,0 +1,37 @@
+// Thanks @mathiasbynens
+// http://mathiasbynens.be/notes/javascript-unicode#iterating-over-symbols
+
+'use strict';
+
+var setPrototypeOf = require('es5-ext/object/set-prototype-of')
+  , d              = require('d')
+  , Iterator       = require('./')
+
+  , defineProperty = Object.defineProperty
+  , StringIterator;
+
+StringIterator = module.exports = function (str) {
+       if (!(this instanceof StringIterator)) return new StringIterator(str);
+       str = String(str);
+       Iterator.call(this, str);
+       defineProperty(this, '__length__', d('', str.length));
+
+};
+if (setPrototypeOf) setPrototypeOf(StringIterator, Iterator);
+
+StringIterator.prototype = Object.create(Iterator.prototype, {
+       constructor: d(StringIterator),
+       _next: d(function () {
+               if (!this.__list__) return;
+               if (this.__nextIndex__ < this.__length__) return this.__nextIndex__++;
+               this._unBind();
+       }),
+       _resolve: d(function (i) {
+               var char = this.__list__[i], code;
+               if (this.__nextIndex__ === this.__length__) return char;
+               code = char.charCodeAt(0);
+               if ((code >= 0xD800) && (code <= 0xDBFF)) return char + this.__list__[this.__nextIndex__++];
+               return char;
+       }),
+       toString: d(function () { return '[object String Iterator]'; })
+});
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#/chain.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#/chain.js
new file mode 100644 (file)
index 0000000..a414c66
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var Iterator = require('../../');
+
+module.exports = function (t, a) {
+       var i1 = new Iterator(['raz', 'dwa', 'trzy'])
+         , i2 = new Iterator(['cztery', 'pięć', 'sześć'])
+         , i3 = new Iterator(['siedem', 'osiem', 'dziewięć'])
+
+         , iterator = t.call(i1, i2, i3);
+
+       a.deep(iterator.next(), { done: false, value: 'raz' }, "#1");
+       a.deep(iterator.next(), { done: false, value: 'dwa' }, "#2");
+       a.deep(iterator.next(), { done: false, value: 'trzy' }, "#3");
+       a.deep(iterator.next(), { done: false, value: 'cztery' }, "#4");
+       a.deep(iterator.next(), { done: false, value: 'pięć' }, "#5");
+       a.deep(iterator.next(), { done: false, value: 'sześć' }, "#6");
+       a.deep(iterator.next(), { done: false, value: 'siedem' }, "#7");
+       a.deep(iterator.next(), { done: false, value: 'osiem' }, "#8");
+       a.deep(iterator.next(), { done: false, value: 'dziewięć' }, "#9");
+       a.deep(iterator.next(), { done: true, value: undefined }, "Done #1");
+       a.deep(iterator.next(), { done: true, value: undefined }, "Done #2");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/array.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/array.js
new file mode 100644 (file)
index 0000000..ae7c219
--- /dev/null
@@ -0,0 +1,67 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (T) {
+       return {
+               Values: function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it;
+
+                       it = new T(x);
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.splice(1, 0, 'elo');
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "Insert");
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       x.pop();
+                       a.deep(it.next(), { done: false, value: 'pięć' }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Keys & Values": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it;
+
+                       it = new T(x, 'key+value');
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       a.deep(it.next(), { done: false, value: [0, 'raz'] }, "#1");
+                       a.deep(it.next(), { done: false, value: [1, 'dwa'] }, "#2");
+                       x.splice(1, 0, 'elo');
+                       a.deep(it.next(), { done: false, value: [2, 'dwa'] }, "Insert");
+                       a.deep(it.next(), { done: false, value: [3, 'trzy'] }, "#3");
+                       a.deep(it.next(), { done: false, value: [4, 'cztery'] }, "#4");
+                       x.pop();
+                       a.deep(it.next(), { done: false, value: [5, 'pięć'] }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               Keys: function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it;
+
+                       it = new T(x, 'key');
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       a.deep(it.next(), { done: false, value: 0 }, "#1");
+                       a.deep(it.next(), { done: false, value: 1 }, "#2");
+                       x.splice(1, 0, 'elo');
+                       a.deep(it.next(), { done: false, value: 2 }, "Insert");
+                       a.deep(it.next(), { done: false, value: 3 }, "#3");
+                       a.deep(it.next(), { done: false, value: 4 }, "#4");
+                       x.pop();
+                       a.deep(it.next(), { done: false, value: 5 }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               Sparse: function (a) {
+                       var x = new Array(6), it;
+
+                       x[2] = 'raz';
+                       x[4] = 'dwa';
+                       it = new T(x);
+                       a.deep(it.next(), { done: false, value: undefined }, "#1");
+                       a.deep(it.next(), { done: false, value: undefined }, "#2");
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#3");
+                       a.deep(it.next(), { done: false, value: undefined }, "#4");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#5");
+                       a.deep(it.next(), { done: false, value: undefined }, "#6");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               }
+       };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/for-of.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/for-of.js
new file mode 100644 (file)
index 0000000..502e7b7
--- /dev/null
@@ -0,0 +1,35 @@
+'use strict';
+
+var ArrayIterator = require('../array')
+
+  , slice = Array.prototype.slice;
+
+module.exports = function (t, a) {
+       var i = 0, x = ['raz', 'dwa', 'trzy'], y = {}, called = 0;
+       t(x, function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Array " + i + "#");
+               a(this, y, "Array: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(x = 'foo', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Regular String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       x = ['r', '💩', 'z'];
+       t('r💩z', function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+               a(this, y, "Unicode String: context:  " + (i++) + "#");
+       }, y);
+       i = 0;
+       t(new ArrayIterator(x), function () {
+               a.deep(slice.call(arguments, 0, 1), [x[i]], "Iterator " + i + "#");
+               a(this, y, "Iterator: context:  " + (i++) + "#");
+       }, y);
+
+       t(x = ['raz', 'dwa', 'trzy'], function (value, doBreak) {
+               ++called;
+               return doBreak();
+       });
+       a(called, 1, "Break");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/get.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/get.js
new file mode 100644 (file)
index 0000000..7309590
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , Iterator       = require('../');
+
+module.exports = function (t, a) {
+       var iterator;
+       a.throws(function () { t(); }, TypeError, "Null");
+       a.throws(function () { t({}); }, TypeError, "Plain object");
+       a.throws(function () { t({ length: 0 }); }, TypeError, "Array-like");
+       iterator = {};
+       iterator[iteratorSymbol] = function () { return new Iterator([]); };
+       a(t(iterator) instanceof Iterator, true, "Iterator");
+       a(String(t([])), '[object Array Iterator]', " Array");
+       a(String(t('foo')), '[object String Iterator]', "String");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/index.js
new file mode 100644 (file)
index 0000000..ea3621a
--- /dev/null
@@ -0,0 +1,99 @@
+'use strict';
+
+var ee             = require('event-emitter')
+  , iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (T) {
+       return {
+               "": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć'], it, y, z;
+
+                       it = new T(x);
+                       a(it[iteratorSymbol](), it, "@@iterator");
+                       y = it.next();
+                       a.deep(y, { done: false, value: 'raz' }, "#1");
+                       z = it.next();
+                       a.not(y, z, "Recreate result");
+                       a.deep(z, { done: false, value: 'dwa' }, "#2");
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       a.deep(it.next(), { done: false, value: 'pięć' }, "#5");
+                       a.deep(y = it.next(), { done: true, value: undefined }, "End");
+                       a.not(y, it.next(), "Recreate result on dead");
+               },
+               Emited: function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       y.emit('_add', x.push('sześć') - 1);
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       x.splice(1, 0, 'półtora');
+                       y.emit('_add', 1);
+                       a.deep(it.next(), { done: false, value: 'półtora' }, "Insert");
+                       x.splice(5, 1);
+                       y.emit('_delete', 5);
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       a.deep(it.next(), { done: false, value: 'sześć' }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Emited #2": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.splice(1, 0, 'półtora');
+                       y.emit('_add', 1);
+                       x.splice(1, 0, '1.25');
+                       y.emit('_add', 1);
+                       x.splice(0, 1);
+                       y.emit('_delete', 0);
+                       a.deep(it.next(), { done: false, value: 'półtora' }, "Insert");
+                       a.deep(it.next(), { done: false, value: '1.25' }, "Insert #2");
+                       a.deep(it.next(), { done: false, value: 'trzy' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'cztery' }, "#4");
+                       x.splice(5, 1);
+                       y.emit('_delete', 5);
+                       a.deep(it.next(), { done: false, value: 'sześć' }, "#5");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Emited: Clear #1": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.length = 0;
+                       y.emit('_clear');
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               },
+               "Emited: Clear #2": function (a) {
+                       var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], y, it;
+
+                       y = ee();
+                       it = new T(x, y);
+                       a.deep(it.next(), { done: false, value: 'raz' }, "#1");
+                       a.deep(it.next(), { done: false, value: 'dwa' }, "#2");
+                       x.length = 0;
+                       y.emit('_clear');
+                       x.push('foo');
+                       x.push('bar');
+                       a.deep(it.next(), { done: false, value: 'foo' }, "#3");
+                       a.deep(it.next(), { done: false, value: 'bar' }, "#4");
+                       x.splice(1, 0, 'półtora');
+                       y.emit('_add', 1);
+                       x.splice(1, 0, '1.25');
+                       y.emit('_add', 1);
+                       x.splice(0, 1);
+                       y.emit('_delete', 0);
+                       a.deep(it.next(), { done: false, value: 'półtora' }, "Insert");
+                       a.deep(it.next(), { done: false, value: '1.25' }, "Insert #2");
+                       a.deep(it.next(), { done: true, value: undefined }, "End");
+               }
+       };
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/is-iterable.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/is-iterable.js
new file mode 100644 (file)
index 0000000..7c5c59b
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , Iterator       = require('../');
+
+module.exports = function (t, a) {
+       var iterator;
+       a(t(), false, "Undefined");
+       a(t(123), false, "Number");
+       a(t({}), false, "Plain object");
+       a(t({ length: 0 }), false, "Array-like");
+       iterator = {};
+       iterator[iteratorSymbol] = function () { return new Iterator([]); };
+       a(t(iterator), true, "Iterator");
+       a(t([]), true, "Array");
+       a(t('foo'), true, "String");
+       a(t(''), true, "Empty string");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/string.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/string.js
new file mode 100644 (file)
index 0000000..d11855f
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator;
+
+module.exports = function (T, a) {
+       var it = new T('foobar');
+
+       a(it[iteratorSymbol](), it, "@@iterator");
+       a.deep(it.next(), { done: false, value: 'f' }, "#1");
+       a.deep(it.next(), { done: false, value: 'o' }, "#2");
+       a.deep(it.next(), { done: false, value: 'o' }, "#3");
+       a.deep(it.next(), { done: false, value: 'b' }, "#4");
+       a.deep(it.next(), { done: false, value: 'a' }, "#5");
+       a.deep(it.next(), { done: false, value: 'r' }, "#6");
+       a.deep(it.next(), { done: true, value: undefined }, "End");
+
+       a.h1("Outside of BMP");
+       it = new T('r💩z');
+       a.deep(it.next(), { done: false, value: 'r' }, "#1");
+       a.deep(it.next(), { done: false, value: '💩' }, "#2");
+       a.deep(it.next(), { done: false, value: 'z' }, "#3");
+       a.deep(it.next(), { done: true, value: undefined }, "End");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/valid-iterable.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/valid-iterable.js
new file mode 100644 (file)
index 0000000..7760b01
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var iteratorSymbol = require('es6-symbol').iterator
+  , Iterator       = require('../');
+
+module.exports = function (t, a) {
+       var obj;
+       a.throws(function () { t(); }, TypeError, "Undefined");
+       a.throws(function () { t({}); }, TypeError, "Plain object");
+       a.throws(function () { t({ length: 0 }); }, TypeError, "Array-like");
+       obj = {};
+       obj[iteratorSymbol] = function () { return new Iterator([]); };
+       a(t(obj), obj, "Iterator");
+       obj = [];
+       a(t(obj), obj, 'Array');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js
new file mode 100644 (file)
index 0000000..d330997
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isIterable = require('./is-iterable');
+
+module.exports = function (value) {
+       if (!isIterable(value)) throw new TypeError(value + " is not iterable");
+       return value;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.lint b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.lint
new file mode 100644 (file)
index 0000000..1851752
--- /dev/null
@@ -0,0 +1,13 @@
+@root
+
+module
+
+tabs
+indent 2
+maxlen 100
+
+ass
+nomen
+plusplus
+newcap
+vars
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.npmignore b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.npmignore
new file mode 100644 (file)
index 0000000..155e41f
--- /dev/null
@@ -0,0 +1,4 @@
+.DS_Store
+/node_modules
+/npm-debug.log
+/.lintcache
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.travis.yml b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/.travis.yml
new file mode 100644 (file)
index 0000000..afd3509
--- /dev/null
@@ -0,0 +1,9 @@
+language: node_js
+node_js:
+  - 0.8
+  - 0.10
+  - 0.11
+
+notifications:
+  email:
+    - medikoo+es6-symbol@medikoo.com
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/CHANGES b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/CHANGES
new file mode 100644 (file)
index 0000000..df8c27e
--- /dev/null
@@ -0,0 +1,34 @@
+v2.0.1  --  2015.01.28
+* Fix Symbol.prototype[Symbol.isPrimitive] implementation
+* Improve validation within Symbol.prototype.toString and
+  Symbol.prototype.valueOf
+
+v2.0.0  --  2015.01.28
+* Update up to changes in specification:
+  * Implement `for` and `keyFor`
+  * Remove `Symbol.create` and `Symbol.isRegExp`
+  * Add `Symbol.match`, `Symbol.replace`, `Symbol.search`, `Symbol.species` and
+    `Symbol.split`
+* Rename `validSymbol` to `validateSymbol`
+* Improve documentation
+* Remove dead test modules
+
+v1.0.0  --  2015.01.26
+* Fix enumerability for symbol properties set normally (e.g. obj[symbol] = value)
+* Introduce initialization via hidden constructor
+* Fix isSymbol handling of polyfill values when native Symbol is present
+* Fix spelling of LICENSE
+* Configure lint scripts
+
+v0.1.1  --  2014.10.07
+* Fix isImplemented, so it returns true in case of polyfill
+* Improve documentations
+
+v0.1.0  --  2014.04.28
+* Assure strictly npm dependencies
+* Update to use latest versions of dependencies
+* Fix implementation detection so it doesn't crash on `String(symbol)`
+* throw on `new Symbol()` (as decided by TC39)
+
+v0.0.0  --  2013.11.15
+* Initial (dev) version
\ No newline at end of file
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/LICENSE b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/LICENSE
new file mode 100644 (file)
index 0000000..04724a3
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.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/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/README.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/README.md
new file mode 100644 (file)
index 0000000..95d6780
--- /dev/null
@@ -0,0 +1,71 @@
+# es6-symbol
+## ECMAScript 6 Symbol polyfill
+
+For more information about symbols see following links
+- [Symbols in ECMAScript 6 by Axel Rauschmayer](http://www.2ality.com/2014/12/es6-symbols.html)
+- [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol)
+- [Specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-constructor)
+
+### Limitations
+
+Underneath it uses real string property names which can easily be retrieved, however accidental collision with other property names is unlikely.
+
+### Usage
+
+If you'd like to use native version when it exists and fallback to polyfill if it doesn't (but without implementing `Symbol` on global scope), do:
+
+```javascript
+var Symbol = require('es6-symbol');
+```
+
+If you want to make sure your environment implements `Symbol`, do:
+
+```javascript
+require('es6-symbol/implement');
+```
+
+If you strictly want to use polyfill even if native `Symbol` exists (hard to find a good reason for that), do:
+
+```javascript
+var Symbol = require('es6-symbol/polyfill');
+```
+
+#### API
+
+Best is to refer to [specification](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-objects). Still if you want quick look, follow examples:
+
+```javascript
+var Symbol = require('es6-symbol');
+
+var symbol = Symbol('My custom symbol');
+var x = {};
+
+x[symbol] = 'foo';
+console.log(x[symbol]); 'foo'
+
+// Detect iterable:
+var iterator, result;
+if (possiblyIterable[Symbol.iterator]) {
+  iterator = possiblyIterable[Symbol.iterator]();
+  result = iterator.next();
+  while(!result.done) {
+    console.log(result.value);
+    result = iterator.next();
+  }
+}
+```
+
+### Installation
+#### NPM
+
+In your project path:
+
+       $ npm install es6-symbol
+
+##### Browser
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
+## Tests [![Build Status](https://travis-ci.org/medikoo/es6-symbol.png)](https://travis-ci.org/medikoo/es6-symbol)
+
+       $ npm test
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js
new file mode 100644 (file)
index 0000000..153edac
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+if (!require('./is-implemented')()) {
+       Object.defineProperty(require('es5-ext/global'), 'Symbol',
+               { value: require('./polyfill'), configurable: true, enumerable: false,
+                       writable: true });
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js
new file mode 100644 (file)
index 0000000..609f1fa
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./is-implemented')() ? Symbol : require('./polyfill');
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js
new file mode 100644 (file)
index 0000000..53759f3
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = function () {
+       var symbol;
+       if (typeof Symbol !== 'function') return false;
+       symbol = Symbol('test symbol');
+       try { String(symbol); } catch (e) { return false; }
+       if (typeof Symbol.iterator === 'symbol') return true;
+
+       // Return 'true' for polyfills
+       if (typeof Symbol.isConcatSpreadable !== 'object') return false;
+       if (typeof Symbol.iterator !== 'object') return false;
+       if (typeof Symbol.toPrimitive !== 'object') return false;
+       if (typeof Symbol.toStringTag !== 'object') return false;
+       if (typeof Symbol.unscopables !== 'object') return false;
+
+       return true;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js
new file mode 100644 (file)
index 0000000..a8cb8b8
--- /dev/null
@@ -0,0 +1,8 @@
+// Exports true if environment provides native `Symbol` implementation
+
+'use strict';
+
+module.exports = (function () {
+       if (typeof Symbol !== 'function') return false;
+       return (typeof Symbol.iterator === 'symbol');
+}());
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js
new file mode 100644 (file)
index 0000000..beeba2c
--- /dev/null
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function (x) {
+       return (x && ((typeof x === 'symbol') || (x['@@toStringTag'] === 'Symbol'))) || false;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json
new file mode 100644 (file)
index 0000000..6a09929
--- /dev/null
@@ -0,0 +1,62 @@
+{
+  "name": "es6-symbol",
+  "version": "2.0.1",
+  "description": "ECMAScript6 Symbol polyfill",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "symbol",
+    "private",
+    "property",
+    "es6",
+    "ecmascript",
+    "harmony"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es6-symbol.git"
+  },
+  "dependencies": {
+    "d": "~0.1.1",
+    "es5-ext": "~0.10.5"
+  },
+  "devDependencies": {
+    "tad": "~0.2.1",
+    "xlint": "~0.2.2",
+    "xlint-jslint-medikoo": "~0.1.2"
+  },
+  "scripts": {
+    "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+    "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "51f6938d7830269fefa38f02eb912f5472b3ccd7",
+  "bugs": {
+    "url": "https://github.com/medikoo/es6-symbol/issues"
+  },
+  "homepage": "https://github.com/medikoo/es6-symbol",
+  "_id": "es6-symbol@2.0.1",
+  "_shasum": "761b5c67cfd4f1d18afb234f691d678682cb3bf3",
+  "_from": "es6-symbol@>=2.0.1 <2.1.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "761b5c67cfd4f1d18afb234f691d678682cb3bf3",
+    "tarball": "http://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz"
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js
new file mode 100644 (file)
index 0000000..735eb67
--- /dev/null
@@ -0,0 +1,77 @@
+'use strict';
+
+var d              = require('d')
+  , validateSymbol = require('./validate-symbol')
+
+  , create = Object.create, defineProperties = Object.defineProperties
+  , defineProperty = Object.defineProperty, objPrototype = Object.prototype
+  , Symbol, HiddenSymbol, globalSymbols = create(null);
+
+var generateName = (function () {
+       var created = create(null);
+       return function (desc) {
+               var postfix = 0, name;
+               while (created[desc + (postfix || '')]) ++postfix;
+               desc += (postfix || '');
+               created[desc] = true;
+               name = '@@' + desc;
+               defineProperty(objPrototype, name, d.gs(null, function (value) {
+                       defineProperty(this, name, d(value));
+               }));
+               return name;
+       };
+}());
+
+HiddenSymbol = function Symbol(description) {
+       if (this instanceof HiddenSymbol) throw new TypeError('TypeError: Symbol is not a constructor');
+       return Symbol(description);
+};
+module.exports = Symbol = function Symbol(description) {
+       var symbol;
+       if (this instanceof Symbol) throw new TypeError('TypeError: Symbol is not a constructor');
+       symbol = create(HiddenSymbol.prototype);
+       description = (description === undefined ? '' : String(description));
+       return defineProperties(symbol, {
+               __description__: d('', description),
+               __name__: d('', generateName(description))
+       });
+};
+defineProperties(Symbol, {
+       for: d(function (key) {
+               if (globalSymbols[key]) return globalSymbols[key];
+               return (globalSymbols[key] = Symbol(String(key)));
+       }),
+       keyFor: d(function (s) {
+               var key;
+               validateSymbol(s);
+               for (key in globalSymbols) if (globalSymbols[key] === s) return key;
+       }),
+       hasInstance: d('', Symbol('hasInstance')),
+       isConcatSpreadable: d('', Symbol('isConcatSpreadable')),
+       iterator: d('', Symbol('iterator')),
+       match: d('', Symbol('match')),
+       replace: d('', Symbol('replace')),
+       search: d('', Symbol('search')),
+       species: d('', Symbol('species')),
+       split: d('', Symbol('split')),
+       toPrimitive: d('', Symbol('toPrimitive')),
+       toStringTag: d('', Symbol('toStringTag')),
+       unscopables: d('', Symbol('unscopables'))
+});
+defineProperties(HiddenSymbol.prototype, {
+       constructor: d(Symbol),
+       toString: d('', function () { return this.__name__; })
+});
+
+defineProperties(Symbol.prototype, {
+       toString: d(function () { return 'Symbol (' + validateSymbol(this).__description__ + ')'; }),
+       valueOf: d(function () { return validateSymbol(this); })
+});
+defineProperty(Symbol.prototype, Symbol.toPrimitive, d('',
+       function () { return validateSymbol(this); }));
+defineProperty(Symbol.prototype, Symbol.toStringTag, d('c', 'Symbol'));
+
+defineProperty(HiddenSymbol.prototype, Symbol.toPrimitive,
+       d('c', Symbol.prototype[Symbol.toPrimitive]));
+defineProperty(HiddenSymbol.prototype, Symbol.toStringTag,
+       d('c', Symbol.prototype[Symbol.toStringTag]));
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/implement.js
new file mode 100644 (file)
index 0000000..eb35c30
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof Symbol, 'function'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/index.js
new file mode 100644 (file)
index 0000000..62b3296
--- /dev/null
@@ -0,0 +1,12 @@
+'use strict';
+
+var d = require('d')
+
+  , defineProperty = Object.defineProperty;
+
+module.exports = function (T, a) {
+       var symbol = T('test'), x = {};
+       defineProperty(x, symbol, d('foo'));
+       a(x.test, undefined, "Name");
+       a(x[symbol], 'foo', "Get");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-implemented.js
new file mode 100644 (file)
index 0000000..bb0d645
--- /dev/null
@@ -0,0 +1,14 @@
+'use strict';
+
+var global   = require('es5-ext/global')
+  , polyfill = require('../polyfill');
+
+module.exports = function (t, a) {
+       var cache;
+       a(typeof t(), 'boolean');
+       cache = global.Symbol;
+       global.Symbol = polyfill;
+       a(t(), true);
+       if (cache === undefined) delete global.Symbol;
+       else global.Symbol = cache;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-native-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-native-implemented.js
new file mode 100644 (file)
index 0000000..df8ba03
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t, 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-symbol.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/is-symbol.js
new file mode 100644 (file)
index 0000000..ac24b9a
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var SymbolPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       a(t(undefined), false, "Undefined");
+       a(t(null), false, "Null");
+       a(t(true), false, "Primitive");
+       a(t('raz'), false, "String");
+       a(t({}), false, "Object");
+       a(t([]), false, "Array");
+       if (typeof Symbol !== 'undefined') {
+               a(t(Symbol()), true, "Native");
+       }
+       a(t(SymbolPoly()), true, "Polyfill");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/polyfill.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/polyfill.js
new file mode 100644 (file)
index 0000000..83fb5e9
--- /dev/null
@@ -0,0 +1,27 @@
+'use strict';
+
+var d        = require('d')
+  , isSymbol = require('../is-symbol')
+
+  , defineProperty = Object.defineProperty;
+
+module.exports = function (T, a) {
+       var symbol = T('test'), x = {};
+       defineProperty(x, symbol, d('foo'));
+       a(x.test, undefined, "Name");
+       a(x[symbol], 'foo', "Get");
+       a(x instanceof T, false);
+
+       a(isSymbol(symbol), true, "Symbol");
+       a(isSymbol(T.iterator), true, "iterator");
+       a(isSymbol(T.toStringTag), true, "toStringTag");
+
+       x = {};
+       x[symbol] = 'foo';
+       a.deep(Object.getOwnPropertyDescriptor(x, symbol), { configurable: true, enumerable: false,
+               value: 'foo', writable: true });
+       symbol = T.for('marko');
+       a(isSymbol(symbol), true);
+       a(T.for('marko'), symbol);
+       a(T.keyFor(symbol), 'marko');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/validate-symbol.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test/validate-symbol.js
new file mode 100644 (file)
index 0000000..2c8f84c
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var SymbolPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       var symbol;
+       a.throws(function () { t(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.throws(function () { t(true); }, TypeError, "Primitive");
+       a.throws(function () { t('raz'); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Object");
+       a.throws(function () { t([]); }, TypeError, "Array");
+       if (typeof Symbol !== 'undefined') {
+               symbol = Symbol();
+               a(t(symbol), symbol, "Native");
+       }
+       symbol = SymbolPoly();
+       a(t(symbol), symbol, "Polyfill");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js
new file mode 100644 (file)
index 0000000..4275004
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isSymbol = require('./is-symbol');
+
+module.exports = function (value) {
+       if (!isSymbol(value)) throw new TypeError(value + " is not a symbol");
+       return value;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json
new file mode 100644 (file)
index 0000000..e4b0cff
--- /dev/null
@@ -0,0 +1,63 @@
+{
+  "name": "es6-weak-map",
+  "version": "0.1.4",
+  "description": "ECMAScript6 WeakMap polyfill",
+  "author": {
+    "name": "Mariusz Nowak",
+    "email": "medyk@medikoo.com",
+    "url": "http://www.medikoo.com/"
+  },
+  "keywords": [
+    "map",
+    "weakmap",
+    "collection",
+    "es6",
+    "harmony",
+    "list",
+    "hash",
+    "gc"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/medikoo/es6-weak-map.git"
+  },
+  "dependencies": {
+    "d": "~0.1.1",
+    "es5-ext": "~0.10.6",
+    "es6-iterator": "~0.1.3",
+    "es6-symbol": "~2.0.1"
+  },
+  "devDependencies": {
+    "tad": "~0.2.2"
+  },
+  "scripts": {
+    "test": "node ./node_modules/tad/bin/tad"
+  },
+  "license": "MIT",
+  "gitHead": "e68802395b82a700257374c379cfaafe84ee8552",
+  "bugs": {
+    "url": "https://github.com/medikoo/es6-weak-map/issues"
+  },
+  "homepage": "https://github.com/medikoo/es6-weak-map",
+  "_id": "es6-weak-map@0.1.4",
+  "_shasum": "706cef9e99aa236ba7766c239c8b9e286ea7d228",
+  "_from": "es6-weak-map@>=0.1.2 <0.2.0",
+  "_npmVersion": "2.7.4",
+  "_nodeVersion": "0.12.2",
+  "_npmUser": {
+    "name": "medikoo",
+    "email": "medikoo+npm@medikoo.com"
+  },
+  "maintainers": [
+    {
+      "name": "medikoo",
+      "email": "medikoo+npm@medikoo.com"
+    }
+  ],
+  "dist": {
+    "shasum": "706cef9e99aa236ba7766c239c8b9e286ea7d228",
+    "tarball": "http://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz"
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js
new file mode 100644 (file)
index 0000000..1d15660
--- /dev/null
@@ -0,0 +1,75 @@
+'use strict';
+
+var setPrototypeOf    = require('es5-ext/object/set-prototype-of')
+  , object            = require('es5-ext/object/valid-object')
+  , value             = require('es5-ext/object/valid-value')
+  , d                 = require('d')
+  , getIterator       = require('es6-iterator/get')
+  , forOf             = require('es6-iterator/for-of')
+  , toStringTagSymbol = require('es6-symbol').toStringTag
+  , isNative          = require('./is-native-implemented')
+
+  , isArray = Array.isArray, defineProperty = Object.defineProperty, random = Math.random
+  , hasOwnProperty = Object.prototype.hasOwnProperty
+  , genId, WeakMapPoly;
+
+genId = (function () {
+       var generated = Object.create(null);
+       return function () {
+               var id;
+               do { id = random().toString(36).slice(2); } while (generated[id]);
+               generated[id] = true;
+               return id;
+       };
+}());
+
+module.exports = WeakMapPoly = function (/*iterable*/) {
+       var iterable = arguments[0];
+       if (!(this instanceof WeakMapPoly)) return new WeakMapPoly(iterable);
+       if (this.__weakMapData__ !== undefined) {
+               throw new TypeError(this + " cannot be reinitialized");
+       }
+       if (iterable != null) {
+               if (!isArray(iterable)) iterable = getIterator(iterable);
+       }
+       defineProperty(this, '__weakMapData__', d('c', '$weakMap$' + genId()));
+       if (!iterable) return;
+       forOf(iterable, function (val) {
+               value(val);
+               this.set(val[0], val[1]);
+       }, this);
+};
+
+if (isNative) {
+       if (setPrototypeOf) setPrototypeOf(WeakMapPoly, WeakMap);
+       WeakMapPoly.prototype = Object.create(WeakMap.prototype, {
+               constructor: d(WeakMapPoly)
+       });
+}
+
+Object.defineProperties(WeakMapPoly.prototype, {
+       clear: d(function () {
+               defineProperty(this, '__weakMapData__', d('c', '$weakMap$' + genId()));
+       }),
+       delete: d(function (key) {
+               if (hasOwnProperty.call(object(key), this.__weakMapData__)) {
+                       delete key[this.__weakMapData__];
+                       return true;
+               }
+               return false;
+       }),
+       get: d(function (key) {
+               if (hasOwnProperty.call(object(key), this.__weakMapData__)) {
+                       return key[this.__weakMapData__];
+               }
+       }),
+       has: d(function (key) {
+               return hasOwnProperty.call(object(key), this.__weakMapData__);
+       }),
+       set: d(function (key, value) {
+               defineProperty(object(key), this.__weakMapData__, d('c', value));
+               return this;
+       }),
+       toString: d(function () { return '[object WeakMap]'; })
+});
+defineProperty(WeakMapPoly.prototype, toStringTagSymbol, d('c', 'WeakMap'));
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/implement.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/implement.js
new file mode 100644 (file)
index 0000000..860027e
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof WeakMap, 'function'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/index.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/index.js
new file mode 100644 (file)
index 0000000..9b26e4f
--- /dev/null
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function (T, a) {
+       var x = {};
+       a((new T([[x, 'foo']])).get(x), 'foo');
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-implemented.js
new file mode 100644 (file)
index 0000000..1a88328
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t(), 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-native-implemented.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-native-implemented.js
new file mode 100644 (file)
index 0000000..df8ba03
--- /dev/null
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t, 'boolean'); };
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-weak-map.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/is-weak-map.js
new file mode 100644 (file)
index 0000000..ba8c045
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+var WeakMapPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       a(t(undefined), false, "Undefined");
+       a(t(null), false, "Null");
+       a(t(true), false, "Primitive");
+       a(t('raz'), false, "String");
+       a(t({}), false, "Object");
+       a(t([]), false, "Array");
+       if (typeof WeakMap !== 'undefined') {
+               a(t(new WeakMap()), true, "Native");
+       }
+       a(t(new WeakMapPoly()), true, "Polyfill");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/polyfill.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/polyfill.js
new file mode 100644 (file)
index 0000000..1a4885b
--- /dev/null
@@ -0,0 +1,22 @@
+'use strict';
+
+module.exports = function (T, a) {
+       var x = {}, y = {}, z = {}, arr = [[x, 'raz'], [y, 'dwa']], map = new T(arr);
+
+       a(map instanceof T, true, "WeakMap");
+       a(map.has(x), true, "Has: true");
+       a(map.get(x), 'raz', "Get: contains");
+       a(map.has(z), false, "Has: false");
+       a(map.get(z), undefined, "Get: doesn't contain");
+       a(map.set(z, 'trzy'), map, "Set: return");
+       a(map.has(z), true, "Add");
+       a(map.delete({}), false, "Delete: false");
+
+       a(map.delete(x), true, "Delete: true");
+       a(map.get(x), undefined, "Get: after delete");
+       a(map.has(x), false, "Has: after delete");
+
+       a(map.has(y), true, "Has: pre clear");
+       map.clear();
+       a(map.has(y), false, "Has: after clear");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/valid-weak-map.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test/valid-weak-map.js
new file mode 100644 (file)
index 0000000..a782342
--- /dev/null
@@ -0,0 +1,19 @@
+'use strict';
+
+var WeakMapPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+       var map;
+       a.throws(function () { t(undefined); }, TypeError, "Undefined");
+       a.throws(function () { t(null); }, TypeError, "Null");
+       a.throws(function () { t(true); }, TypeError, "Primitive");
+       a.throws(function () { t('raz'); }, TypeError, "String");
+       a.throws(function () { t({}); }, TypeError, "Object");
+       a.throws(function () { t([]); }, TypeError, "Array");
+       if (typeof WeakMap !== 'undefined') {
+               map = new WeakMap();
+               a(t(map), map, "Native");
+       }
+       map = new WeakMapPoly();
+       a(t(map), map, "Polyfill");
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js
new file mode 100644 (file)
index 0000000..bfb579f
--- /dev/null
@@ -0,0 +1,8 @@
+'use strict';
+
+var isWeakMap = require('./is-weak-map');
+
+module.exports = function (x) {
+       if (!isWeakMap(x)) throw new TypeError(x + " is not a WeakMap");
+       return x;
+};
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/LICENSE.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/README.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/README.md
new file mode 100644 (file)
index 0000000..7c450e3
--- /dev/null
@@ -0,0 +1,36 @@
+# Mixto: A simple mixin superclass [![Build Status](https://travis-ci.org/atom/mixto.png?branch=master)](https://travis-ci.org/atom/mixto)
+
+To create a mixin, subclass mixto:
+
+```coffee
+Mixin = require 'mixto'
+
+class MyMixin extends Mixin
+  @classMethod: -> console.log("foo")
+  instanceMethod: -> console.log("bar")
+```
+
+Then mix into classes with `.includeInto`:
+
+```coffee
+class MyClass
+  MyMixin.includeInto(this)
+  
+MyClass.classMethod()
+(new MyClass).instanceMethod()
+```
+
+Or extend individual objects with `.extend`:
+
+```coffee-script
+myObject = {a: 1, b: 2}
+MyMixin.extend(myObject)
+myObject.instanceMethod()
+```
+
+Or build standalone instances of your 'mixin':
+
+```
+standalone = new MyMixin
+standalone.instanceMethod()
+```
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js
new file mode 100644 (file)
index 0000000..a6fdd4f
--- /dev/null
@@ -0,0 +1,51 @@
+(function() {
+  var ExcludedClassProperties, ExcludedPrototypeProperties, Mixin, name;
+
+  module.exports = Mixin = (function() {
+    Mixin.includeInto = function(constructor) {
+      var name, value, _ref;
+      this.extend(constructor.prototype);
+      for (name in this) {
+        value = this[name];
+        if (ExcludedClassProperties.indexOf(name) === -1) {
+          if (!constructor.hasOwnProperty(name)) {
+            constructor[name] = value;
+          }
+        }
+      }
+      return (_ref = this.included) != null ? _ref.call(constructor) : void 0;
+    };
+
+    Mixin.extend = function(object) {
+      var name, _i, _len, _ref, _ref1;
+      _ref = Object.getOwnPropertyNames(this.prototype);
+      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+        name = _ref[_i];
+        if (ExcludedPrototypeProperties.indexOf(name) === -1) {
+          if (!object.hasOwnProperty(name)) {
+            object[name] = this.prototype[name];
+          }
+        }
+      }
+      return (_ref1 = this.prototype.extended) != null ? _ref1.call(object) : void 0;
+    };
+
+    function Mixin() {
+      if (typeof this.extended === "function") {
+        this.extended();
+      }
+    }
+
+    return Mixin;
+
+  })();
+
+  ExcludedClassProperties = ['__super__'];
+
+  for (name in Mixin) {
+    ExcludedClassProperties.push(name);
+  }
+
+  ExcludedPrototypeProperties = ['constructor', 'extended'];
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json
new file mode 100644 (file)
index 0000000..e675518
--- /dev/null
@@ -0,0 +1,64 @@
+{
+  "name": "mixto",
+  "version": "1.0.0",
+  "description": "A mixin superclass. Its subclasses have `.extend` and `.includeInto` methods to mix behavior into other objects and classes.",
+  "main": "lib/mixin",
+  "scripts": {
+    "prepublish": "grunt clean coffee lint",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/mixto"
+  },
+  "keywords": [
+    "mixin",
+    "trait"
+  ],
+  "bugs": {
+    "url": "https://github.com/atom/mixto/issues"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/mixto/raw/master/LICENSE.md"
+    }
+  ],
+  "devDependencies": {
+    "coffee-script": "~1.6.3",
+    "jasmine-focused": "~0.19.0",
+    "grunt-contrib-coffee": "~0.7.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "rimraf": "~2.2.2"
+  },
+  "author": {
+    "name": "Nathan Sobo"
+  },
+  "_id": "mixto@1.0.0",
+  "dist": {
+    "shasum": "c320ef61b52f2898f522e17d8bbc6d506d8425b6",
+    "tarball": "http://registry.npmjs.org/mixto/-/mixto-1.0.0.tgz"
+  },
+  "_from": "mixto@>=1.0.0 <2.0.0",
+  "_npmVersion": "1.3.2",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    }
+  ],
+  "directories": {},
+  "_shasum": "c320ef61b52f2898f522e17d8bbc6d506d8425b6",
+  "_resolved": "https://registry.npmjs.org/mixto/-/mixto-1.0.0.tgz"
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/LICENSE.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/README.md b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/README.md
new file mode 100644 (file)
index 0000000..6ef1e04
--- /dev/null
@@ -0,0 +1,80 @@
+# Property Accessors Mixin [![Build Status](https://travis-ci.org/atom/property-accessors.svg?branch=master)](https://travis-ci.org/atom/property-accessors)
+
+A mixin for defining dynamic properties.
+
+## Basic Usage
+
+To define a basic property accessor, use the `accessor` declaration. If you've
+included the mixin into a class, you define a prototype property by calling
+`@::accessor` on its prototype.
+
+```coffee
+PropertyAccessors = require 'property-accessors'
+
+class Vehicle
+  PropertyAccessors.includeInto(this)
+
+  @::accessor 'type',
+    get: ->
+      switch @doorCount
+        when 4 then 'sedan' # i know this isn't strictly accurate
+        when 2 then 'coupe'
+    set: (type) ->
+      switch type
+        when 'sedan' then @doorCount = 4
+        when 'coupe' then @doorCount = 2
+
+car = new Vehicle
+car.doorCount = 2
+car.type # => 'coupe'
+```
+
+You can define a class-level property by *extending* with the mixin rather than
+including it (which extends the prototype).
+
+```coffee
+class Vehicle
+  PropertyAccessors.extend(this)
+
+  @accessor 'vehicleCount', get: -> @allVehicles.length  
+```
+
+You can just pass a single function if you only want to define a getter:
+
+```coffee
+class Vehicle
+  PropertyAccessors.includeInto(this)
+
+  @::accessor 'type', -> # ...
+```
+
+## Fancy Usage
+
+### Lazy Accessors
+
+Lazy accessors call a function the first time a property is accessed. You are
+still free to overwrite this value by assigning the property explicitly.
+
+```coffee
+class ScienceLab
+  PropertyAccessors.includeInto(this)
+
+  @::lazyAccessor 'crazyComputation', -> computeCrazyComputation()
+```
+
+### Advised Accessors
+
+Advised accessors allow you to call code before the reading or writing of a
+property value. If a property is being assigned, your advice function is called
+with the value being assigned and the old value.
+
+```coffee
+class SpyStation
+  @advisedAccessor 'online',
+    get: -> @ensureAllSystemsNominal()
+    set: -> @ensureUserIsSpy()
+
+station = new SpyStation
+station.online = true # ensures user is a spy, then assigns true
+station.online # ensures all systems are nominal, then returns true
+```
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js
new file mode 100644 (file)
index 0000000..4cb92d8
--- /dev/null
@@ -0,0 +1,74 @@
+(function() {
+  var Mixin, PropertyAccessors, WeakMap, _ref, _ref1,
+    __hasProp = {}.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; };
+
+  Mixin = require('mixto');
+
+  WeakMap = (_ref = global.WeakMap) != null ? _ref : require('es6-weak-map');
+
+  module.exports = PropertyAccessors = (function(_super) {
+    __extends(PropertyAccessors, _super);
+
+    function PropertyAccessors() {
+      _ref1 = PropertyAccessors.__super__.constructor.apply(this, arguments);
+      return _ref1;
+    }
+
+    PropertyAccessors.prototype.accessor = function(name, definition) {
+      if (typeof definition === 'function') {
+        definition = {
+          get: definition
+        };
+      }
+      return Object.defineProperty(this, name, definition);
+    };
+
+    PropertyAccessors.prototype.advisedAccessor = function(name, definition) {
+      var getAdvice, setAdvice, values;
+      if (typeof definition === 'function') {
+        getAdvice = definition;
+      } else {
+        getAdvice = definition.get;
+        setAdvice = definition.set;
+      }
+      values = new WeakMap;
+      return this.accessor(name, {
+        get: function() {
+          if (getAdvice != null) {
+            getAdvice.call(this);
+          }
+          return values.get(this);
+        },
+        set: function(newValue) {
+          if (setAdvice != null) {
+            setAdvice.call(this, newValue, values.get(this));
+          }
+          return values.set(this, newValue);
+        }
+      });
+    };
+
+    PropertyAccessors.prototype.lazyAccessor = function(name, definition) {
+      var values;
+      values = new WeakMap;
+      return this.accessor(name, {
+        get: function() {
+          if (values.has(this)) {
+            return values.get(this);
+          } else {
+            values.set(this, definition.call(this));
+            return values.get(this);
+          }
+        },
+        set: function(value) {
+          return values.set(this, value);
+        }
+      });
+    };
+
+    return PropertyAccessors;
+
+  })(Mixin);
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json
new file mode 100644 (file)
index 0000000..63150bc
--- /dev/null
@@ -0,0 +1,74 @@
+{
+  "name": "property-accessors",
+  "version": "1.1.3",
+  "description": "A mixin for declaring property accessors",
+  "main": "lib/property-accessors",
+  "scripts": {
+    "test": "grunt test",
+    "publish": "grunt"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/property-accessors"
+  },
+  "keywords": [
+    "property",
+    "accessors",
+    "metaprogramming"
+  ],
+  "author": {
+    "name": "Nathan Sobo"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/telepath/raw/master/LICENSE.md"
+    }
+  ],
+  "bugs": {
+    "url": "https://github.com/atom/property-accessors/issues"
+  },
+  "homepage": "http://atom.github.io/property-accessors/",
+  "dependencies": {
+    "mixto": "1.x",
+    "es6-weak-map": "^0.1.2"
+  },
+  "devDependencies": {
+    "jasmine-focused": "1.x",
+    "grunt-contrib-coffee": "~0.7.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "rimraf": "~2.2.2"
+  },
+  "gitHead": "c90f096dfc8f589ecb8186cadfbfcf97dc5f5cc6",
+  "_id": "property-accessors@1.1.3",
+  "_shasum": "1dde84024631865909ef30703365680c5f928b15",
+  "_from": "property-accessors@>=1.1.0 <2.0.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "1dde84024631865909ef30703365680c5f928b15",
+    "tarball": "http://registry.npmjs.org/property-accessors/-/property-accessors-1.1.3.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/property-accessors/-/property-accessors-1.1.3.tgz"
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/package.json b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/node_modules/emissary/package.json
new file mode 100644 (file)
index 0000000..436e2d7
--- /dev/null
@@ -0,0 +1,77 @@
+{
+  "name": "emissary",
+  "version": "1.3.3",
+  "description": "Utility mixins for subscribing to and emitting events.",
+  "main": "lib/emissary.js",
+  "scripts": {
+    "test": "grunt test",
+    "prepublish": "grunt clean lint coffee"
+  },
+  "repository": {
+    "type": "git",
+    "url": "http://github.com/atom/emissary.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/emissary/issues"
+  },
+  "homepage": "http://atom.github.io/emissary",
+  "keywords": [
+    "event-emitter",
+    "events",
+    "subscribe",
+    "subscriber"
+  ],
+  "author": {
+    "name": "Nathan Sobo"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/emissary/raw/master/LICENSE.md"
+    }
+  ],
+  "dependencies": {
+    "underscore-plus": "1.x",
+    "mixto": "1.x",
+    "property-accessors": "^1.1",
+    "es6-weak-map": "^0.1.2"
+  },
+  "devDependencies": {
+    "jasmine-focused": "1.x",
+    "grunt-contrib-coffee": "~0.7.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "rimraf": "~2.2.2"
+  },
+  "gitHead": "13170d3e1f8b1cd4396d6dceb3c3bccf0887dae2",
+  "_id": "emissary@1.3.3",
+  "_shasum": "a618d92d682b232d31111dc3625a5df661799606",
+  "_from": "emissary@>=1.2.0 <2.0.0",
+  "_npmVersion": "1.4.28",
+  "_npmUser": {
+    "name": "kevinsawicki",
+    "email": "kevinsawicki@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "a618d92d682b232d31111dc3625a5df661799606",
+    "tarball": "http://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/emissary/-/emissary-1.3.3.tgz"
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/package.json b/atom/packages/vim-mode/node_modules/event-kit/node_modules/grim/package.json
new file mode 100644 (file)
index 0000000..ae85b41
--- /dev/null
@@ -0,0 +1,73 @@
+{
+  "name": "grim",
+  "version": "0.12.0",
+  "description": "Log usage of deprecated methods",
+  "main": "./lib/grim",
+  "scripts": {
+    "prepublish": "grunt clean lint coffee",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/grim.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/grim/issues"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/grim/raw/master/LICENSE.md"
+    }
+  ],
+  "dependencies": {
+    "underscore-plus": "^1.0.0",
+    "emissary": "^1.2.0"
+  },
+  "devDependencies": {
+    "coffee-script": "^1.7.0",
+    "jasmine-focused": "^1.0.4",
+    "grunt-contrib-coffee": "^0.9.0",
+    "grunt-cli": "^0.1.8",
+    "grunt": "^0.4.1",
+    "grunt-shell": "^0.2.2",
+    "grunt-coffeelint": "^0.0.6",
+    "rimraf": "^2.2.2",
+    "coffee-cache": "^0.2.0",
+    "temp": "^0.6.0"
+  },
+  "gitHead": "c24f22a7e415d5d6b695967e341f7fb7aa27d83f",
+  "homepage": "https://github.com/atom/grim",
+  "_id": "grim@0.12.0",
+  "_shasum": "86d4ea11bf57b960688c624878bdc126fe4b7d1b",
+  "_from": "grim@>=0.12.0 <0.13.0",
+  "_npmVersion": "1.4.23",
+  "_npmUser": {
+    "name": "benogle",
+    "email": "ogle.ben@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "probablycorey",
+      "email": "probablycorey@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "nathansobo",
+      "email": "nathan@github.com"
+    }
+  ],
+  "dist": {
+    "shasum": "86d4ea11bf57b960688c624878bdc126fe4b7d1b",
+    "tarball": "http://registry.npmjs.org/grim/-/grim-0.12.0.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/grim/-/grim-0.12.0.tgz"
+}
diff --git a/atom/packages/vim-mode/node_modules/event-kit/package.json b/atom/packages/vim-mode/node_modules/event-kit/package.json
new file mode 100644 (file)
index 0000000..d19b561
--- /dev/null
@@ -0,0 +1,73 @@
+{
+  "name": "event-kit",
+  "version": "0.7.2",
+  "description": "Simple library for implementing and consuming evented APIs",
+  "main": "./lib/event-kit",
+  "scripts": {
+    "prepublish": "grunt clean lint coffee shell:update-atomdoc atomdoc",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/event-kit.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/event-kit/issues"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/event-kit/raw/master/LICENSE.md"
+    }
+  ],
+  "dependencies": {
+    "grim": "^0.12.0"
+  },
+  "devDependencies": {
+    "coffee-cache": "^0.2.0",
+    "coffee-script": "^1.7.0",
+    "grunt": "^0.4.1",
+    "grunt-atomdoc": "^1.0.0",
+    "grunt-cli": "^0.1.8",
+    "grunt-coffeelint": "^0.0.6",
+    "grunt-contrib-coffee": "^0.9.0",
+    "grunt-shell": "^0.2.2",
+    "jasmine-focused": "^1.0.4",
+    "rimraf": "^2.2.2",
+    "temp": "^0.6.0"
+  },
+  "gitHead": "997b618b19566d5740c77507492528c52b5edb6a",
+  "homepage": "https://github.com/atom/event-kit",
+  "_id": "event-kit@0.7.2",
+  "_shasum": "331f5c36fde2ebd6413b69b56633e2b6b5cf9e60",
+  "_from": "event-kit@>=0.7.2 <0.8.0",
+  "_npmVersion": "1.4.23",
+  "_npmUser": {
+    "name": "benogle",
+    "email": "ogle.ben@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "nathansobo",
+      "email": "nathan@github.com"
+    },
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    },
+    {
+      "name": "zcbenz",
+      "email": "zcbenz@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "331f5c36fde2ebd6413b69b56633e2b6b5cf9e60",
+    "tarball": "http://registry.npmjs.org/event-kit/-/event-kit-0.7.2.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/event-kit/-/event-kit-0.7.2.tgz"
+}
diff --git a/atom/packages/vim-mode/node_modules/underscore-plus/LICENSE.md b/atom/packages/vim-mode/node_modules/underscore-plus/LICENSE.md
new file mode 100644 (file)
index 0000000..493db50
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013 GitHub Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/atom/packages/vim-mode/node_modules/underscore-plus/README.md b/atom/packages/vim-mode/node_modules/underscore-plus/README.md
new file mode 100644 (file)
index 0000000..dd7b4c0
--- /dev/null
@@ -0,0 +1,14 @@
+# underscore-plus [![Build Status](https://travis-ci.org/atom/underscore-plus.svg?branch=master)](https://travis-ci.org/atom/underscore-plus)
+
+Takes the great [underscore](http://underscorejs.org/) library and adds a few
+more things.
+
+## Using
+
+```sh
+npm install underscore-plus
+```
+
+```coffeescript
+_ = require 'underscore-plus' # Has all underscore methods and more
+```
diff --git a/atom/packages/vim-mode/node_modules/underscore-plus/lib/underscore-plus.js b/atom/packages/vim-mode/node_modules/underscore-plus/lib/underscore-plus.js
new file mode 100644 (file)
index 0000000..32eb482
--- /dev/null
@@ -0,0 +1,522 @@
+(function() {
+  var isEqual, isPlainObject, macModifierKeyMap, nonMacModifierKeyMap, plus, shiftKeyMap, splitKeyPath, _,
+    __slice = [].slice;
+
+  _ = require('underscore');
+
+  macModifierKeyMap = {
+    cmd: '\u2318',
+    ctrl: '\u2303',
+    alt: '\u2325',
+    option: '\u2325',
+    shift: '\u21e7',
+    enter: '\u23ce',
+    left: '\u2190',
+    right: '\u2192',
+    up: '\u2191',
+    down: '\u2193'
+  };
+
+  nonMacModifierKeyMap = {
+    cmd: 'Cmd',
+    ctrl: 'Ctrl',
+    alt: 'Alt',
+    option: 'Alt',
+    shift: 'Shift',
+    enter: 'Enter',
+    left: 'Left',
+    right: 'Right',
+    up: 'Up',
+    down: 'Down'
+  };
+
+  shiftKeyMap = {
+    '~': '`',
+    '_': '-',
+    '+': '=',
+    '|': '\\',
+    '{': '[',
+    '}': ']',
+    ':': ';',
+    '"': '\'',
+    '<': ',',
+    '>': '.',
+    '?': '/'
+  };
+
+  splitKeyPath = function(keyPath) {
+    var char, i, keyPathArray, startIndex, _i, _len;
+    startIndex = 0;
+    keyPathArray = [];
+    if (keyPath == null) {
+      return keyPathArray;
+    }
+    for (i = _i = 0, _len = keyPath.length; _i < _len; i = ++_i) {
+      char = keyPath[i];
+      if (char === '.' && (i === 0 || keyPath[i - 1] !== '\\')) {
+        keyPathArray.push(keyPath.substring(startIndex, i));
+        startIndex = i + 1;
+      }
+    }
+    keyPathArray.push(keyPath.substr(startIndex, keyPath.length));
+    return keyPathArray;
+  };
+
+  isPlainObject = function(value) {
+    return _.isObject(value) && !_.isArray(value);
+  };
+
+  plus = {
+    adviseBefore: function(object, methodName, advice) {
+      var original;
+      original = object[methodName];
+      return object[methodName] = function() {
+        var args;
+        args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+        if (advice.apply(this, args) !== false) {
+          return original.apply(this, args);
+        }
+      };
+    },
+    camelize: function(string) {
+      if (string) {
+        return string.replace(/[_-]+(\w)/g, function(m) {
+          return m[1].toUpperCase();
+        });
+      } else {
+        return '';
+      }
+    },
+    capitalize: function(word) {
+      if (!word) {
+        return '';
+      }
+      if (word.toLowerCase() === 'github') {
+        return 'GitHub';
+      } else {
+        return word[0].toUpperCase() + word.slice(1);
+      }
+    },
+    compactObject: function(object) {
+      var key, newObject, value;
+      newObject = {};
+      for (key in object) {
+        value = object[key];
+        if (value != null) {
+          newObject[key] = value;
+        }
+      }
+      return newObject;
+    },
+    dasherize: function(string) {
+      if (!string) {
+        return '';
+      }
+      string = string[0].toLowerCase() + string.slice(1);
+      return string.replace(/([A-Z])|(_)/g, function(m, letter) {
+        if (letter) {
+          return "-" + letter.toLowerCase();
+        } else {
+          return "-";
+        }
+      });
+    },
+    deepClone: function(object) {
+      if (_.isArray(object)) {
+        return object.map(function(value) {
+          return plus.deepClone(value);
+        });
+      } else if (_.isObject(object) && !_.isFunction(object)) {
+        return plus.mapObject(object, (function(_this) {
+          return function(key, value) {
+            return [key, plus.deepClone(value)];
+          };
+        })(this));
+      } else {
+        return object;
+      }
+    },
+    deepExtend: function(target) {
+      var i, key, object, result, _i, _len, _ref;
+      result = target;
+      i = 0;
+      while (++i < arguments.length) {
+        object = arguments[i];
+        if (isPlainObject(result) && isPlainObject(object)) {
+          _ref = Object.keys(object);
+          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+            key = _ref[_i];
+            result[key] = plus.deepExtend(result[key], object[key]);
+          }
+        } else {
+          result = plus.deepClone(object);
+        }
+      }
+      return result;
+    },
+    deepContains: function(array, target) {
+      var object, _i, _len;
+      if (array == null) {
+        return false;
+      }
+      for (_i = 0, _len = array.length; _i < _len; _i++) {
+        object = array[_i];
+        if (_.isEqual(object, target)) {
+          return true;
+        }
+      }
+      return false;
+    },
+    endsWith: function(string, suffix) {
+      if (suffix == null) {
+        suffix = '';
+      }
+      if (string) {
+        return string.indexOf(suffix, string.length - suffix.length) !== -1;
+      } else {
+        return false;
+      }
+    },
+    escapeAttribute: function(string) {
+      if (string) {
+        return string.replace(/"/g, '&quot;').replace(/\n/g, '').replace(/\\/g, '-');
+      } else {
+        return '';
+      }
+    },
+    escapeRegExp: function(string) {
+      if (string) {
+        return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+      } else {
+        return '';
+      }
+    },
+    humanizeEventName: function(eventName, eventDoc) {
+      var event, namespace, namespaceDoc, _ref;
+      _ref = eventName.split(':'), namespace = _ref[0], event = _ref[1];
+      if (event == null) {
+        return plus.undasherize(namespace);
+      }
+      namespaceDoc = plus.undasherize(namespace);
+      if (eventDoc == null) {
+        eventDoc = plus.undasherize(event);
+      }
+      return "" + namespaceDoc + ": " + eventDoc;
+    },
+    humanizeKey: function(key, platform) {
+      var modifierKeyMap;
+      if (platform == null) {
+        platform = process.platform;
+      }
+      if (!key) {
+        return key;
+      }
+      modifierKeyMap = platform === 'darwin' ? macModifierKeyMap : nonMacModifierKeyMap;
+      if (modifierKeyMap[key]) {
+        return modifierKeyMap[key];
+      } else if (key.length === 1 && (shiftKeyMap[key] != null)) {
+        return [modifierKeyMap.shift, shiftKeyMap[key]];
+      } else if (key.length === 1 && key === key.toUpperCase() && key.toUpperCase() !== key.toLowerCase()) {
+        return [modifierKeyMap.shift, key.toUpperCase()];
+      } else if (key.length === 1 || /f[0-9]{1,2}/.test(key)) {
+        return key.toUpperCase();
+      } else {
+        if (platform === 'darwin') {
+          return key;
+        } else {
+          return plus.capitalize(key);
+        }
+      }
+    },
+    humanizeKeystroke: function(keystroke, platform) {
+      var humanizedKeystrokes, index, key, keys, keystrokes, splitKeystroke, _i, _j, _len, _len1;
+      if (platform == null) {
+        platform = process.platform;
+      }
+      if (!keystroke) {
+        return keystroke;
+      }
+      keystrokes = keystroke.split(' ');
+      humanizedKeystrokes = [];
+      for (_i = 0, _len = keystrokes.length; _i < _len; _i++) {
+        keystroke = keystrokes[_i];
+        keys = [];
+        splitKeystroke = keystroke.split('-');
+        for (index = _j = 0, _len1 = splitKeystroke.length; _j < _len1; index = ++_j) {
+          key = splitKeystroke[index];
+          if (key === '' && splitKeystroke[index - 1] === '') {
+            key = '-';
+          }
+          if (key) {
+            keys.push(plus.humanizeKey(key, platform));
+          }
+        }
+        keys = _.uniq(_.flatten(keys));
+        if (platform === 'darwin') {
+          keys = keys.join('');
+        } else {
+          keys = keys.join('+');
+        }
+        humanizedKeystrokes.push(keys);
+      }
+      return humanizedKeystrokes.join(' ');
+    },
+    isSubset: function(potentialSubset, potentialSuperset) {
+      return _.every(potentialSubset, function(element) {
+        return _.include(potentialSuperset, element);
+      });
+    },
+    losslessInvert: function(hash) {
+      var inverted, key, value;
+      inverted = {};
+      for (key in hash) {
+        value = hash[key];
+        if (inverted[value] == null) {
+          inverted[value] = [];
+        }
+        inverted[value].push(key);
+      }
+      return inverted;
+    },
+    mapObject: function(object, iterator) {
+      var key, newObject, value, _i, _len, _ref, _ref1;
+      newObject = {};
+      _ref = Object.keys(object);
+      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+        key = _ref[_i];
+        _ref1 = iterator(key, object[key]), key = _ref1[0], value = _ref1[1];
+        newObject[key] = value;
+      }
+      return newObject;
+    },
+    multiplyString: function(string, n) {
+      var finalString, i;
+      finalString = "";
+      i = 0;
+      while (i < n) {
+        finalString += string;
+        i++;
+      }
+      return finalString;
+    },
+    pluralize: function(count, singular, plural) {
+      if (count == null) {
+        count = 0;
+      }
+      if (plural == null) {
+        plural = singular + 's';
+      }
+      if (count === 1) {
+        return "" + count + " " + singular;
+      } else {
+        return "" + count + " " + plural;
+      }
+    },
+    remove: function(array, element) {
+      var index;
+      index = array.indexOf(element);
+      if (index >= 0) {
+        array.splice(index, 1);
+      }
+      return array;
+    },
+    setValueForKeyPath: function(object, keyPath, value) {
+      var key, keys;
+      keys = splitKeyPath(keyPath);
+      while (keys.length > 1) {
+        key = keys.shift();
+        if (object[key] == null) {
+          object[key] = {};
+        }
+        object = object[key];
+      }
+      if (value != null) {
+        return object[keys.shift()] = value;
+      } else {
+        return delete object[keys.shift()];
+      }
+    },
+    hasKeyPath: function(object, keyPath) {
+      var key, keys, _i, _len;
+      keys = splitKeyPath(keyPath);
+      for (_i = 0, _len = keys.length; _i < _len; _i++) {
+        key = keys[_i];
+        if (!object.hasOwnProperty(key)) {
+          return false;
+        }
+        object = object[key];
+      }
+      return true;
+    },
+    spliceWithArray: function(originalArray, start, length, insertedArray, chunkSize) {
+      var chunkStart, _i, _ref, _results;
+      if (chunkSize == null) {
+        chunkSize = 100000;
+      }
+      if (insertedArray.length < chunkSize) {
+        return originalArray.splice.apply(originalArray, [start, length].concat(__slice.call(insertedArray)));
+      } else {
+        originalArray.splice(start, length);
+        _results = [];
+        for (chunkStart = _i = 0, _ref = insertedArray.length; chunkSize > 0 ? _i <= _ref : _i >= _ref; chunkStart = _i += chunkSize) {
+          _results.push(originalArray.splice.apply(originalArray, [start + chunkStart, 0].concat(__slice.call(insertedArray.slice(chunkStart, chunkStart + chunkSize)))));
+        }
+        return _results;
+      }
+    },
+    sum: function(array) {
+      var elt, sum, _i, _len;
+      sum = 0;
+      for (_i = 0, _len = array.length; _i < _len; _i++) {
+        elt = array[_i];
+        sum += elt;
+      }
+      return sum;
+    },
+    uncamelcase: function(string) {
+      var result;
+      if (!string) {
+        return '';
+      }
+      result = string.replace(/([A-Z])|_+/g, function(match, letter) {
+        if (letter == null) {
+          letter = '';
+        }
+        return " " + letter;
+      });
+      return plus.capitalize(result.trim());
+    },
+    undasherize: function(string) {
+      if (string) {
+        return string.split('-').map(plus.capitalize).join(' ');
+      } else {
+        return '';
+      }
+    },
+    underscore: function(string) {
+      if (!string) {
+        return '';
+      }
+      string = string[0].toLowerCase() + string.slice(1);
+      return string.replace(/([A-Z])|-+/g, function(match, letter) {
+        if (letter == null) {
+          letter = '';
+        }
+        return "_" + (letter.toLowerCase());
+      });
+    },
+    valueForKeyPath: function(object, keyPath) {
+      var key, keys, _i, _len;
+      keys = splitKeyPath(keyPath);
+      for (_i = 0, _len = keys.length; _i < _len; _i++) {
+        key = keys[_i];
+        object = object[key];
+        if (object == null) {
+          return;
+        }
+      }
+      return object;
+    },
+    isEqual: function(a, b, aStack, bStack) {
+      if (_.isArray(aStack) && _.isArray(bStack)) {
+        return isEqual(a, b, aStack, bStack);
+      } else {
+        return isEqual(a, b);
+      }
+    },
+    isEqualForProperties: function() {
+      var a, b, properties, property, _i, _len;
+      a = arguments[0], b = arguments[1], properties = 3 <= arguments.length ? __slice.call(arguments, 2) : [];
+      for (_i = 0, _len = properties.length; _i < _len; _i++) {
+        property = properties[_i];
+        if (!_.isEqual(a[property], b[property])) {
+          return false;
+        }
+      }
+      return true;
+    }
+  };
+
+  isEqual = function(a, b, aStack, bStack) {
+    var aCtor, aCtorValid, aElement, aKeyCount, aValue, bCtor, bCtorValid, bKeyCount, bValue, equal, i, key, stackIndex, _i, _len;
+    if (aStack == null) {
+      aStack = [];
+    }
+    if (bStack == null) {
+      bStack = [];
+    }
+    if (a === b) {
+      return _.isEqual(a, b);
+    }
+    if (_.isFunction(a) || _.isFunction(b)) {
+      return _.isEqual(a, b);
+    }
+    stackIndex = aStack.length;
+    while (stackIndex--) {
+      if (aStack[stackIndex] === a) {
+        return bStack[stackIndex] === b;
+      }
+    }
+    aStack.push(a);
+    bStack.push(b);
+    equal = false;
+    if (_.isFunction(a != null ? a.isEqual : void 0)) {
+      equal = a.isEqual(b, aStack, bStack);
+    } else if (_.isFunction(b != null ? b.isEqual : void 0)) {
+      equal = b.isEqual(a, bStack, aStack);
+    } else if (_.isArray(a) && _.isArray(b) && a.length === b.length) {
+      equal = true;
+      for (i = _i = 0, _len = a.length; _i < _len; i = ++_i) {
+        aElement = a[i];
+        if (!isEqual(aElement, b[i], aStack, bStack)) {
+          equal = false;
+          break;
+        }
+      }
+    } else if (_.isRegExp(a) && _.isRegExp(b)) {
+      equal = _.isEqual(a, b);
+    } else if (_.isElement(a) && _.isElement(b)) {
+      equal = a === b;
+    } else if (_.isObject(a) && _.isObject(b)) {
+      aCtor = a.constructor;
+      bCtor = b.constructor;
+      aCtorValid = _.isFunction(aCtor) && aCtor instanceof aCtor;
+      bCtorValid = _.isFunction(bCtor) && bCtor instanceof bCtor;
+      if (aCtor !== bCtor && !(aCtorValid && bCtorValid)) {
+        equal = false;
+      } else {
+        aKeyCount = 0;
+        equal = true;
+        for (key in a) {
+          aValue = a[key];
+          if (!_.has(a, key)) {
+            continue;
+          }
+          aKeyCount++;
+          if (!(_.has(b, key) && isEqual(aValue, b[key], aStack, bStack))) {
+            equal = false;
+            break;
+          }
+        }
+        if (equal) {
+          bKeyCount = 0;
+          for (key in b) {
+            bValue = b[key];
+            if (_.has(b, key)) {
+              bKeyCount++;
+            }
+          }
+          equal = aKeyCount === bKeyCount;
+        }
+      }
+    } else {
+      equal = _.isEqual(a, b);
+    }
+    aStack.pop();
+    bStack.pop();
+    return equal;
+  };
+
+  module.exports = _.extend({}, _, plus);
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/LICENSE b/atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/LICENSE
new file mode 100644 (file)
index 0000000..0d6b873
--- /dev/null
@@ -0,0 +1,23 @@
+Copyright (c) 2009-2014 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/atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/README.md b/atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/README.md
new file mode 100644 (file)
index 0000000..c2ba259
--- /dev/null
@@ -0,0 +1,22 @@
+                       __
+                      /\ \                                                         __
+     __  __    ___    \_\ \     __   _ __   ____    ___    ___   _ __    __       /\_\    ____
+    /\ \/\ \ /' _ `\  /'_  \  /'__`\/\  __\/ ,__\  / ___\ / __`\/\  __\/'__`\     \/\ \  /',__\
+    \ \ \_\ \/\ \/\ \/\ \ \ \/\  __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\  __/  __  \ \ \/\__, `\
+     \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/
+      \/___/  \/_/\/_/\/__,_ /\/____/ \/_/ \/___/  \/____/\/___/  \/_/ \/____/\/_//\ \_\ \/___/
+                                                                                  \ \____/
+                                                                                   \/___/
+
+Underscore.js is a utility-belt library for JavaScript that provides
+support for the usual functional suspects (each, map, reduce, filter...)
+without extending any core JavaScript objects.
+
+For Docs, License, Tests, and pre-packed downloads, see:
+http://underscorejs.org
+
+Underscore is an open-sourced component of DocumentCloud:
+https://github.com/documentcloud
+
+Many thanks to our contributors:
+https://github.com/jashkenas/underscore/contributors
diff --git a/atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/package.json b/atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/package.json
new file mode 100644 (file)
index 0000000..fb45655
--- /dev/null
@@ -0,0 +1,66 @@
+{
+  "name": "underscore",
+  "description": "JavaScript's functional programming helper library.",
+  "homepage": "http://underscorejs.org",
+  "keywords": [
+    "util",
+    "functional",
+    "server",
+    "client",
+    "browser"
+  ],
+  "author": {
+    "name": "Jeremy Ashkenas",
+    "email": "jeremy@documentcloud.org"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/jashkenas/underscore.git"
+  },
+  "main": "underscore.js",
+  "version": "1.6.0",
+  "devDependencies": {
+    "docco": "0.6.x",
+    "phantomjs": "1.9.0-1",
+    "uglify-js": "2.4.x"
+  },
+  "scripts": {
+    "test": "phantomjs test/vendor/runner.js test/index.html?noglobals=true",
+    "build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js",
+    "doc": "docco underscore.js"
+  },
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "https://raw.github.com/jashkenas/underscore/master/LICENSE"
+    }
+  ],
+  "files": [
+    "underscore.js",
+    "underscore-min.js",
+    "LICENSE"
+  ],
+  "bugs": {
+    "url": "https://github.com/jashkenas/underscore/issues"
+  },
+  "_id": "underscore@1.6.0",
+  "dist": {
+    "shasum": "8b38b10cacdef63337b8b24e4ff86d45aea529a8",
+    "tarball": "http://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz"
+  },
+  "_from": "underscore@>=1.6.0 <1.7.0",
+  "_npmVersion": "1.3.21",
+  "_npmUser": {
+    "name": "jashkenas",
+    "email": "jashkenas@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "jashkenas",
+      "email": "jashkenas@gmail.com"
+    }
+  ],
+  "directories": {},
+  "_shasum": "8b38b10cacdef63337b8b24e4ff86d45aea529a8",
+  "_resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz"
+}
diff --git a/atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/underscore-min.js b/atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/underscore-min.js
new file mode 100644 (file)
index 0000000..3434d6c
--- /dev/null
@@ -0,0 +1,6 @@
+//     Underscore.js 1.6.0
+//     http://underscorejs.org
+//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,w=Object.keys,_=i.bind,j=function(n){return n instanceof j?n:this instanceof j?void(this._wrapped=n):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.6.0";var A=j.each=j.forEach=function(n,t,e){if(null==n)return n;if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return;return n};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var O="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},j.find=j.detect=function(n,t,r){var e;return k(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var k=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:k(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,j.property(t))},j.where=function(n,t){return j.filter(n,j.matches(t))},j.findWhere=function(n,t){return j.find(n,j.matches(t))},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);var e=-1/0,u=-1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;o>u&&(e=n,u=o)}),e},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);var e=1/0,u=1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;u>o&&(e=n,u=o)}),e},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e},j.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=j.values(n)),n[j.random(n.length-1)]):j.shuffle(n).slice(0,Math.max(0,t))};var E=function(n){return null==n?j.identity:j.isFunction(n)?n:j.property(n)};j.sortBy=function(n,t,r){return t=E(t),j.pluck(j.map(n,function(n,e,u){return{value:n,index:e,criteria:t.call(r,n,e,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=E(r),A(t,function(i,a){var o=r.call(e,i,a,t);n(u,o,i)}),u}};j.groupBy=F(function(n,t,r){j.has(n,t)?n[t].push(r):n[t]=[r]}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=E(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])<u?i=o+1:a=o}return i},j.toArray=function(n){return n?j.isArray(n)?o.call(n):n.length===+n.length?j.map(n,j.identity):j.values(n):[]},j.size=function(n){return null==n?0:n.length===+n.length?n.length:j.keys(n).length},j.first=j.head=j.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:0>t?[]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var M=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):M(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return M(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.partition=function(n,t){var r=[],e=[];return A(n,function(n){(t(n)?r:e).push(n)}),[r,e]},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.contains(t,n)})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===j&&(e[u]=arguments[r++]);for(;r<arguments.length;)e.push(arguments[r++]);return n.apply(this,e)}},j.bindAll=function(n){var t=o.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return A(t,function(t){n[t]=j.bind(n[t],n)}),n},j.memoize=function(n,t){var r={};return t||(t=j.identity),function(){var e=t.apply(this,arguments);return j.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},j.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},j.defer=function(n){return j.delay.apply(j,[n,1].concat(o.call(arguments,1)))},j.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var c=function(){o=r.leading===!1?0:j.now(),a=null,i=n.apply(e,u),e=u=null};return function(){var l=j.now();o||r.leading!==!1||(o=l);var f=t-(l-o);return e=this,u=arguments,0>=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u),e=u=null):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o,c=function(){var l=j.now()-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u),i=u=null))};return function(){i=this,u=arguments,a=j.now();var l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u),i=u=null),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return j.partial(t,n)},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=function(n){if(!j.isObject(n))return[];if(w)return w(n);var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o)&&"constructor"in n&&"constructor"in t)return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.constant=function(n){return function(){return n}},j.property=function(n){return function(t){return t[n]}},j.matches=function(n){return function(t){if(t===n)return!0;for(var r in n)if(n[r]!==t[r])return!1;return!0}},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},j.now=Date.now||function(){return(new Date).getTime()};var T={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"}};T.unescape=j.invert(T.escape);var I={escape:new RegExp("["+j.keys(T.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(T.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(I[n],function(t){return T[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n","  ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),"function"==typeof define&&define.amd&&define("underscore",[],function(){return j})}).call(this);
+//# sourceMappingURL=underscore-min.map
\ No newline at end of file
diff --git a/atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/underscore.js b/atom/packages/vim-mode/node_modules/underscore-plus/node_modules/underscore/underscore.js
new file mode 100644 (file)
index 0000000..9a4cabe
--- /dev/null
@@ -0,0 +1,1343 @@
+//     Underscore.js 1.6.0
+//     http://underscorejs.org
+//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+
+(function() {
+
+  // Baseline setup
+  // --------------
+
+  // Establish the root object, `window` in the browser, or `exports` on the server.
+  var root = this;
+
+  // Save the previous value of the `_` variable.
+  var previousUnderscore = root._;
+
+  // Establish the object that gets returned to break out of a loop iteration.
+  var breaker = {};
+
+  // Save bytes in the minified (but not gzipped) version:
+  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+  // Create quick reference variables for speed access to core prototypes.
+  var
+    push             = ArrayProto.push,
+    slice            = ArrayProto.slice,
+    concat           = ArrayProto.concat,
+    toString         = ObjProto.toString,
+    hasOwnProperty   = ObjProto.hasOwnProperty;
+
+  // All **ECMAScript 5** native function implementations that we hope to use
+  // are declared here.
+  var
+    nativeForEach      = ArrayProto.forEach,
+    nativeMap          = ArrayProto.map,
+    nativeReduce       = ArrayProto.reduce,
+    nativeReduceRight  = ArrayProto.reduceRight,
+    nativeFilter       = ArrayProto.filter,
+    nativeEvery        = ArrayProto.every,
+    nativeSome         = ArrayProto.some,
+    nativeIndexOf      = ArrayProto.indexOf,
+    nativeLastIndexOf  = ArrayProto.lastIndexOf,
+    nativeIsArray      = Array.isArray,
+    nativeKeys         = Object.keys,
+    nativeBind         = FuncProto.bind;
+
+  // Create a safe reference to the Underscore object for use below.
+  var _ = function(obj) {
+    if (obj instanceof _) return obj;
+    if (!(this instanceof _)) return new _(obj);
+    this._wrapped = obj;
+  };
+
+  // Export the Underscore object for **Node.js**, with
+  // backwards-compatibility for the old `require()` API. If we're in
+  // the browser, add `_` as a global object via a string identifier,
+  // for Closure Compiler "advanced" mode.
+  if (typeof exports !== 'undefined') {
+    if (typeof module !== 'undefined' && module.exports) {
+      exports = module.exports = _;
+    }
+    exports._ = _;
+  } else {
+    root._ = _;
+  }
+
+  // Current version.
+  _.VERSION = '1.6.0';
+
+  // Collection Functions
+  // --------------------
+
+  // The cornerstone, an `each` implementation, aka `forEach`.
+  // Handles objects with the built-in `forEach`, arrays, and raw objects.
+  // Delegates to **ECMAScript 5**'s native `forEach` if available.
+  var each = _.each = _.forEach = function(obj, iterator, context) {
+    if (obj == null) return obj;
+    if (nativeForEach && obj.forEach === nativeForEach) {
+      obj.forEach(iterator, context);
+    } else if (obj.length === +obj.length) {
+      for (var i = 0, length = obj.length; i < length; i++) {
+        if (iterator.call(context, obj[i], i, obj) === breaker) return;
+      }
+    } else {
+      var keys = _.keys(obj);
+      for (var i = 0, length = keys.length; i < length; i++) {
+        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
+      }
+    }
+    return obj;
+  };
+
+  // Return the results of applying the iterator to each element.
+  // Delegates to **ECMAScript 5**'s native `map` if available.
+  _.map = _.collect = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+    each(obj, function(value, index, list) {
+      results.push(iterator.call(context, value, index, list));
+    });
+    return results;
+  };
+
+  var reduceError = 'Reduce of empty array with no initial value';
+
+  // **Reduce** builds up a single result from a list of values, aka `inject`,
+  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduce && obj.reduce === nativeReduce) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+    }
+    each(obj, function(value, index, list) {
+      if (!initial) {
+        memo = value;
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, value, index, list);
+      }
+    });
+    if (!initial) throw new TypeError(reduceError);
+    return memo;
+  };
+
+  // The right-associative version of reduce, also known as `foldr`.
+  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+    }
+    var length = obj.length;
+    if (length !== +length) {
+      var keys = _.keys(obj);
+      length = keys.length;
+    }
+    each(obj, function(value, index, list) {
+      index = keys ? keys[--length] : --length;
+      if (!initial) {
+        memo = obj[index];
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, obj[index], index, list);
+      }
+    });
+    if (!initial) throw new TypeError(reduceError);
+    return memo;
+  };
+
+  // Return the first value which passes a truth test. Aliased as `detect`.
+  _.find = _.detect = function(obj, predicate, context) {
+    var result;
+    any(obj, function(value, index, list) {
+      if (predicate.call(context, value, index, list)) {
+        result = value;
+        return true;
+      }
+    });
+    return result;
+  };
+
+  // Return all the elements that pass a truth test.
+  // Delegates to **ECMAScript 5**'s native `filter` if available.
+  // Aliased as `select`.
+  _.filter = _.select = function(obj, predicate, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
+    each(obj, function(value, index, list) {
+      if (predicate.call(context, value, index, list)) results.push(value);
+    });
+    return results;
+  };
+
+  // Return all the elements for which a truth test fails.
+  _.reject = function(obj, predicate, context) {
+    return _.filter(obj, function(value, index, list) {
+      return !predicate.call(context, value, index, list);
+    }, context);
+  };
+
+  // Determine whether all of the elements match a truth test.
+  // Delegates to **ECMAScript 5**'s native `every` if available.
+  // Aliased as `all`.
+  _.every = _.all = function(obj, predicate, context) {
+    predicate || (predicate = _.identity);
+    var result = true;
+    if (obj == null) return result;
+    if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context);
+    each(obj, function(value, index, list) {
+      if (!(result = result && predicate.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if at least one element in the object matches a truth test.
+  // Delegates to **ECMAScript 5**'s native `some` if available.
+  // Aliased as `any`.
+  var any = _.some = _.any = function(obj, predicate, context) {
+    predicate || (predicate = _.identity);
+    var result = false;
+    if (obj == null) return result;
+    if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
+    each(obj, function(value, index, list) {
+      if (result || (result = predicate.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if the array or object contains a given value (using `===`).
+  // Aliased as `include`.
+  _.contains = _.include = function(obj, target) {
+    if (obj == null) return false;
+    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+    return any(obj, function(value) {
+      return value === target;
+    });
+  };
+
+  // Invoke a method (with arguments) on every item in a collection.
+  _.invoke = function(obj, method) {
+    var args = slice.call(arguments, 2);
+    var isFunc = _.isFunction(method);
+    return _.map(obj, function(value) {
+      return (isFunc ? method : value[method]).apply(value, args);
+    });
+  };
+
+  // Convenience version of a common use case of `map`: fetching a property.
+  _.pluck = function(obj, key) {
+    return _.map(obj, _.property(key));
+  };
+
+  // Convenience version of a common use case of `filter`: selecting only objects
+  // containing specific `key:value` pairs.
+  _.where = function(obj, attrs) {
+    return _.filter(obj, _.matches(attrs));
+  };
+
+  // Convenience version of a common use case of `find`: getting the first object
+  // containing specific `key:value` pairs.
+  _.findWhere = function(obj, attrs) {
+    return _.find(obj, _.matches(attrs));
+  };
+
+  // Return the maximum element or (element-based computation).
+  // Can't optimize arrays of integers longer than 65,535 elements.
+  // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)
+  _.max = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+      return Math.max.apply(Math, obj);
+    }
+    var result = -Infinity, lastComputed = -Infinity;
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      if (computed > lastComputed) {
+        result = value;
+        lastComputed = computed;
+      }
+    });
+    return result;
+  };
+
+  // Return the minimum element (or element-based computation).
+  _.min = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+      return Math.min.apply(Math, obj);
+    }
+    var result = Infinity, lastComputed = Infinity;
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      if (computed < lastComputed) {
+        result = value;
+        lastComputed = computed;
+      }
+    });
+    return result;
+  };
+
+  // Shuffle an array, using the modern version of the
+  // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
+  _.shuffle = function(obj) {
+    var rand;
+    var index = 0;
+    var shuffled = [];
+    each(obj, function(value) {
+      rand = _.random(index++);
+      shuffled[index - 1] = shuffled[rand];
+      shuffled[rand] = value;
+    });
+    return shuffled;
+  };
+
+  // Sample **n** random values from a collection.
+  // If **n** is not specified, returns a single random element.
+  // The internal `guard` argument allows it to work with `map`.
+  _.sample = function(obj, n, guard) {
+    if (n == null || guard) {
+      if (obj.length !== +obj.length) obj = _.values(obj);
+      return obj[_.random(obj.length - 1)];
+    }
+    return _.shuffle(obj).slice(0, Math.max(0, n));
+  };
+
+  // An internal function to generate lookup iterators.
+  var lookupIterator = function(value) {
+    if (value == null) return _.identity;
+    if (_.isFunction(value)) return value;
+    return _.property(value);
+  };
+
+  // Sort the object's values by a criterion produced by an iterator.
+  _.sortBy = function(obj, iterator, context) {
+    iterator = lookupIterator(iterator);
+    return _.pluck(_.map(obj, function(value, index, list) {
+      return {
+        value: value,
+        index: index,
+        criteria: iterator.call(context, value, index, list)
+      };
+    }).sort(function(left, right) {
+      var a = left.criteria;
+      var b = right.criteria;
+      if (a !== b) {
+        if (a > b || a === void 0) return 1;
+        if (a < b || b === void 0) return -1;
+      }
+      return left.index - right.index;
+    }), 'value');
+  };
+
+  // An internal function used for aggregate "group by" operations.
+  var group = function(behavior) {
+    return function(obj, iterator, context) {
+      var result = {};
+      iterator = lookupIterator(iterator);
+      each(obj, function(value, index) {
+        var key = iterator.call(context, value, index, obj);
+        behavior(result, key, value);
+      });
+      return result;
+    };
+  };
+
+  // Groups the object's values by a criterion. Pass either a string attribute
+  // to group by, or a function that returns the criterion.
+  _.groupBy = group(function(result, key, value) {
+    _.has(result, key) ? result[key].push(value) : result[key] = [value];
+  });
+
+  // Indexes the object's values by a criterion, similar to `groupBy`, but for
+  // when you know that your index values will be unique.
+  _.indexBy = group(function(result, key, value) {
+    result[key] = value;
+  });
+
+  // Counts instances of an object that group by a certain criterion. Pass
+  // either a string attribute to count by, or a function that returns the
+  // criterion.
+  _.countBy = group(function(result, key) {
+    _.has(result, key) ? result[key]++ : result[key] = 1;
+  });
+
+  // Use a comparator function to figure out the smallest index at which
+  // an object should be inserted so as to maintain order. Uses binary search.
+  _.sortedIndex = function(array, obj, iterator, context) {
+    iterator = lookupIterator(iterator);
+    var value = iterator.call(context, obj);
+    var low = 0, high = array.length;
+    while (low < high) {
+      var mid = (low + high) >>> 1;
+      iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid;
+    }
+    return low;
+  };
+
+  // Safely create a real, live array from anything iterable.
+  _.toArray = function(obj) {
+    if (!obj) return [];
+    if (_.isArray(obj)) return slice.call(obj);
+    if (obj.length === +obj.length) return _.map(obj, _.identity);
+    return _.values(obj);
+  };
+
+  // Return the number of elements in an object.
+  _.size = function(obj) {
+    if (obj == null) return 0;
+    return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;
+  };
+
+  // Array Functions
+  // ---------------
+
+  // Get the first element of an array. Passing **n** will return the first N
+  // values in the array. Aliased as `head` and `take`. The **guard** check
+  // allows it to work with `_.map`.
+  _.first = _.head = _.take = function(array, n, guard) {
+    if (array == null) return void 0;
+    if ((n == null) || guard) return array[0];
+    if (n < 0) return [];
+    return slice.call(array, 0, n);
+  };
+
+  // Returns everything but the last entry of the array. Especially useful on
+  // the arguments object. Passing **n** will return all the values in
+  // the array, excluding the last N. The **guard** check allows it to work with
+  // `_.map`.
+  _.initial = function(array, n, guard) {
+    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+  };
+
+  // Get the last element of an array. Passing **n** will return the last N
+  // values in the array. The **guard** check allows it to work with `_.map`.
+  _.last = function(array, n, guard) {
+    if (array == null) return void 0;
+    if ((n == null) || guard) return array[array.length - 1];
+    return slice.call(array, Math.max(array.length - n, 0));
+  };
+
+  // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
+  // Especially useful on the arguments object. Passing an **n** will return
+  // the rest N values in the array. The **guard**
+  // check allows it to work with `_.map`.
+  _.rest = _.tail = _.drop = function(array, n, guard) {
+    return slice.call(array, (n == null) || guard ? 1 : n);
+  };
+
+  // Trim out all falsy values from an array.
+  _.compact = function(array) {
+    return _.filter(array, _.identity);
+  };
+
+  // Internal implementation of a recursive `flatten` function.
+  var flatten = function(input, shallow, output) {
+    if (shallow && _.every(input, _.isArray)) {
+      return concat.apply(output, input);
+    }
+    each(input, function(value) {
+      if (_.isArray(value) || _.isArguments(value)) {
+        shallow ? push.apply(output, value) : flatten(value, shallow, output);
+      } else {
+        output.push(value);
+      }
+    });
+    return output;
+  };
+
+  // Flatten out an array, either recursively (by default), or just one level.
+  _.flatten = function(array, shallow) {
+    return flatten(array, shallow, []);
+  };
+
+  // Return a version of the array that does not contain the specified value(s).
+  _.without = function(array) {
+    return _.difference(array, slice.call(arguments, 1));
+  };
+
+  // Split an array into two arrays: one whose elements all satisfy the given
+  // predicate, and one whose elements all do not satisfy the predicate.
+  _.partition = function(array, predicate) {
+    var pass = [], fail = [];
+    each(array, function(elem) {
+      (predicate(elem) ? pass : fail).push(elem);
+    });
+    return [pass, fail];
+  };
+
+  // Produce a duplicate-free version of the array. If the array has already
+  // been sorted, you have the option of using a faster algorithm.
+  // Aliased as `unique`.
+  _.uniq = _.unique = function(array, isSorted, iterator, context) {
+    if (_.isFunction(isSorted)) {
+      context = iterator;
+      iterator = isSorted;
+      isSorted = false;
+    }
+    var initial = iterator ? _.map(array, iterator, context) : array;
+    var results = [];
+    var seen = [];
+    each(initial, function(value, index) {
+      if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) {
+        seen.push(value);
+        results.push(array[index]);
+      }
+    });
+    return results;
+  };
+
+  // Produce an array that contains the union: each distinct element from all of
+  // the passed-in arrays.
+  _.union = function() {
+    return _.uniq(_.flatten(arguments, true));
+  };
+
+  // Produce an array that contains every item shared between all the
+  // passed-in arrays.
+  _.intersection = function(array) {
+    var rest = slice.call(arguments, 1);
+    return _.filter(_.uniq(array), function(item) {
+      return _.every(rest, function(other) {
+        return _.contains(other, item);
+      });
+    });
+  };
+
+  // Take the difference between one array and a number of other arrays.
+  // Only the elements present in just the first array will remain.
+  _.difference = function(array) {
+    var rest = concat.apply(ArrayProto, slice.call(arguments, 1));
+    return _.filter(array, function(value){ return !_.contains(rest, value); });
+  };
+
+  // Zip together multiple lists into a single array -- elements that share
+  // an index go together.
+  _.zip = function() {
+    var length = _.max(_.pluck(arguments, 'length').concat(0));
+    var results = new Array(length);
+    for (var i = 0; i < length; i++) {
+      results[i] = _.pluck(arguments, '' + i);
+    }
+    return results;
+  };
+
+  // Converts lists into objects. Pass either a single array of `[key, value]`
+  // pairs, or two parallel arrays of the same length -- one of keys, and one of
+  // the corresponding values.
+  _.object = function(list, values) {
+    if (list == null) return {};
+    var result = {};
+    for (var i = 0, length = list.length; i < length; i++) {
+      if (values) {
+        result[list[i]] = values[i];
+      } else {
+        result[list[i][0]] = list[i][1];
+      }
+    }
+    return result;
+  };
+
+  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+  // we need this function. Return the position of the first occurrence of an
+  // item in an array, or -1 if the item is not included in the array.
+  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+  // If the array is large and already in sort order, pass `true`
+  // for **isSorted** to use binary search.
+  _.indexOf = function(array, item, isSorted) {
+    if (array == null) return -1;
+    var i = 0, length = array.length;
+    if (isSorted) {
+      if (typeof isSorted == 'number') {
+        i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted);
+      } else {
+        i = _.sortedIndex(array, item);
+        return array[i] === item ? i : -1;
+      }
+    }
+    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
+    for (; i < length; i++) if (array[i] === item) return i;
+    return -1;
+  };
+
+  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+  _.lastIndexOf = function(array, item, from) {
+    if (array == null) return -1;
+    var hasIndex = from != null;
+    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) {
+      return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item);
+    }
+    var i = (hasIndex ? from : array.length);
+    while (i--) if (array[i] === item) return i;
+    return -1;
+  };
+
+  // Generate an integer Array containing an arithmetic progression. A port of
+  // the native Python `range()` function. See
+  // [the Python documentation](http://docs.python.org/library/functions.html#range).
+  _.range = function(start, stop, step) {
+    if (arguments.length <= 1) {
+      stop = start || 0;
+      start = 0;
+    }
+    step = arguments[2] || 1;
+
+    var length = Math.max(Math.ceil((stop - start) / step), 0);
+    var idx = 0;
+    var range = new Array(length);
+
+    while(idx < length) {
+      range[idx++] = start;
+      start += step;
+    }
+
+    return range;
+  };
+
+  // Function (ahem) Functions
+  // ------------------
+
+  // Reusable constructor function for prototype setting.
+  var ctor = function(){};
+
+  // Create a function bound to a given object (assigning `this`, and arguments,
+  // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
+  // available.
+  _.bind = function(func, context) {
+    var args, bound;
+    if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+    if (!_.isFunction(func)) throw new TypeError;
+    args = slice.call(arguments, 2);
+    return bound = function() {
+      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+      ctor.prototype = func.prototype;
+      var self = new ctor;
+      ctor.prototype = null;
+      var result = func.apply(self, args.concat(slice.call(arguments)));
+      if (Object(result) === result) return result;
+      return self;
+    };
+  };
+
+  // Partially apply a function by creating a version that has had some of its
+  // arguments pre-filled, without changing its dynamic `this` context. _ acts
+  // as a placeholder, allowing any combination of arguments to be pre-filled.
+  _.partial = function(func) {
+    var boundArgs = slice.call(arguments, 1);
+    return function() {
+      var position = 0;
+      var args = boundArgs.slice();
+      for (var i = 0, length = args.length; i < length; i++) {
+        if (args[i] === _) args[i] = arguments[position++];
+      }
+      while (position < arguments.length) args.push(arguments[position++]);
+      return func.apply(this, args);
+    };
+  };
+
+  // Bind a number of an object's methods to that object. Remaining arguments
+  // are the method names to be bound. Useful for ensuring that all callbacks
+  // defined on an object belong to it.
+  _.bindAll = function(obj) {
+    var funcs = slice.call(arguments, 1);
+    if (funcs.length === 0) throw new Error('bindAll must be passed function names');
+    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+    return obj;
+  };
+
+  // Memoize an expensive function by storing its results.
+  _.memoize = function(func, hasher) {
+    var memo = {};
+    hasher || (hasher = _.identity);
+    return function() {
+      var key = hasher.apply(this, arguments);
+      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+    };
+  };
+
+  // Delays a function for the given number of milliseconds, and then calls
+  // it with the arguments supplied.
+  _.delay = function(func, wait) {
+    var args = slice.call(arguments, 2);
+    return setTimeout(function(){ return func.apply(null, args); }, wait);
+  };
+
+  // Defers a function, scheduling it to run after the current call stack has
+  // cleared.
+  _.defer = function(func) {
+    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+  };
+
+  // Returns a function, that, when invoked, will only be triggered at most once
+  // during a given window of time. Normally, the throttled function will run
+  // as much as it can, without ever going more than once per `wait` duration;
+  // but if you'd like to disable the execution on the leading edge, pass
+  // `{leading: false}`. To disable execution on the trailing edge, ditto.
+  _.throttle = function(func, wait, options) {
+    var context, args, result;
+    var timeout = null;
+    var previous = 0;
+    options || (options = {});
+    var later = function() {
+      previous = options.leading === false ? 0 : _.now();
+      timeout = null;
+      result = func.apply(context, args);
+      context = args = null;
+    };
+    return function() {
+      var now = _.now();
+      if (!previous && options.leading === false) previous = now;
+      var remaining = wait - (now - previous);
+      context = this;
+      args = arguments;
+      if (remaining <= 0) {
+        clearTimeout(timeout);
+        timeout = null;
+        previous = now;
+        result = func.apply(context, args);
+        context = args = null;
+      } else if (!timeout && options.trailing !== false) {
+        timeout = setTimeout(later, remaining);
+      }
+      return result;
+    };
+  };
+
+  // Returns a function, that, as long as it continues to be invoked, will not
+  // be triggered. The function will be called after it stops being called for
+  // N milliseconds. If `immediate` is passed, trigger the function on the
+  // leading edge, instead of the trailing.
+  _.debounce = function(func, wait, immediate) {
+    var timeout, args, context, timestamp, result;
+
+    var later = function() {
+      var last = _.now() - timestamp;
+      if (last < wait) {
+        timeout = setTimeout(later, wait - last);
+      } else {
+        timeout = null;
+        if (!immediate) {
+          result = func.apply(context, args);
+          context = args = null;
+        }
+      }
+    };
+
+    return function() {
+      context = this;
+      args = arguments;
+      timestamp = _.now();
+      var callNow = immediate && !timeout;
+      if (!timeout) {
+        timeout = setTimeout(later, wait);
+      }
+      if (callNow) {
+        result = func.apply(context, args);
+        context = args = null;
+      }
+
+      return result;
+    };
+  };
+
+  // Returns a function that will be executed at most one time, no matter how
+  // often you call it. Useful for lazy initialization.
+  _.once = function(func) {
+    var ran = false, memo;
+    return function() {
+      if (ran) return memo;
+      ran = true;
+      memo = func.apply(this, arguments);
+      func = null;
+      return memo;
+    };
+  };
+
+  // Returns the first function passed as an argument to the second,
+  // allowing you to adjust arguments, run code before and after, and
+  // conditionally execute the original function.
+  _.wrap = function(func, wrapper) {
+    return _.partial(wrapper, func);
+  };
+
+  // Returns a function that is the composition of a list of functions, each
+  // consuming the return value of the function that follows.
+  _.compose = function() {
+    var funcs = arguments;
+    return function() {
+      var args = arguments;
+      for (var i = funcs.length - 1; i >= 0; i--) {
+        args = [funcs[i].apply(this, args)];
+      }
+      return args[0];
+    };
+  };
+
+  // Returns a function that will only be executed after being called N times.
+  _.after = function(times, func) {
+    return function() {
+      if (--times < 1) {
+        return func.apply(this, arguments);
+      }
+    };
+  };
+
+  // Object Functions
+  // ----------------
+
+  // Retrieve the names of an object's properties.
+  // Delegates to **ECMAScript 5**'s native `Object.keys`
+  _.keys = function(obj) {
+    if (!_.isObject(obj)) return [];
+    if (nativeKeys) return nativeKeys(obj);
+    var keys = [];
+    for (var key in obj) if (_.has(obj, key)) keys.push(key);
+    return keys;
+  };
+
+  // Retrieve the values of an object's properties.
+  _.values = function(obj) {
+    var keys = _.keys(obj);
+    var length = keys.length;
+    var values = new Array(length);
+    for (var i = 0; i < length; i++) {
+      values[i] = obj[keys[i]];
+    }
+    return values;
+  };
+
+  // Convert an object into a list of `[key, value]` pairs.
+  _.pairs = function(obj) {
+    var keys = _.keys(obj);
+    var length = keys.length;
+    var pairs = new Array(length);
+    for (var i = 0; i < length; i++) {
+      pairs[i] = [keys[i], obj[keys[i]]];
+    }
+    return pairs;
+  };
+
+  // Invert the keys and values of an object. The values must be serializable.
+  _.invert = function(obj) {
+    var result = {};
+    var keys = _.keys(obj);
+    for (var i = 0, length = keys.length; i < length; i++) {
+      result[obj[keys[i]]] = keys[i];
+    }
+    return result;
+  };
+
+  // Return a sorted list of the function names available on the object.
+  // Aliased as `methods`
+  _.functions = _.methods = function(obj) {
+    var names = [];
+    for (var key in obj) {
+      if (_.isFunction(obj[key])) names.push(key);
+    }
+    return names.sort();
+  };
+
+  // Extend a given object with all the properties in passed-in object(s).
+  _.extend = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      if (source) {
+        for (var prop in source) {
+          obj[prop] = source[prop];
+        }
+      }
+    });
+    return obj;
+  };
+
+  // Return a copy of the object only containing the whitelisted properties.
+  _.pick = function(obj) {
+    var copy = {};
+    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+    each(keys, function(key) {
+      if (key in obj) copy[key] = obj[key];
+    });
+    return copy;
+  };
+
+   // Return a copy of the object without the blacklisted properties.
+  _.omit = function(obj) {
+    var copy = {};
+    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+    for (var key in obj) {
+      if (!_.contains(keys, key)) copy[key] = obj[key];
+    }
+    return copy;
+  };
+
+  // Fill in a given object with default properties.
+  _.defaults = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      if (source) {
+        for (var prop in source) {
+          if (obj[prop] === void 0) obj[prop] = source[prop];
+        }
+      }
+    });
+    return obj;
+  };
+
+  // Create a (shallow-cloned) duplicate of an object.
+  _.clone = function(obj) {
+    if (!_.isObject(obj)) return obj;
+    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+  };
+
+  // Invokes interceptor with the obj, and then returns obj.
+  // The primary purpose of this method is to "tap into" a method chain, in
+  // order to perform operations on intermediate results within the chain.
+  _.tap = function(obj, interceptor) {
+    interceptor(obj);
+    return obj;
+  };
+
+  // Internal recursive comparison function for `isEqual`.
+  var eq = function(a, b, aStack, bStack) {
+    // Identical objects are equal. `0 === -0`, but they aren't identical.
+    // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
+    if (a === b) return a !== 0 || 1 / a == 1 / b;
+    // A strict comparison is necessary because `null == undefined`.
+    if (a == null || b == null) return a === b;
+    // Unwrap any wrapped objects.
+    if (a instanceof _) a = a._wrapped;
+    if (b instanceof _) b = b._wrapped;
+    // Compare `[[Class]]` names.
+    var className = toString.call(a);
+    if (className != toString.call(b)) return false;
+    switch (className) {
+      // Strings, numbers, dates, and booleans are compared by value.
+      case '[object String]':
+        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+        // equivalent to `new String("5")`.
+        return a == String(b);
+      case '[object Number]':
+        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+        // other numeric values.
+        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+      case '[object Date]':
+      case '[object Boolean]':
+        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+        // millisecond representations. Note that invalid dates with millisecond representations
+        // of `NaN` are not equivalent.
+        return +a == +b;
+      // RegExps are compared by their source patterns and flags.
+      case '[object RegExp]':
+        return a.source == b.source &&
+               a.global == b.global &&
+               a.multiline == b.multiline &&
+               a.ignoreCase == b.ignoreCase;
+    }
+    if (typeof a != 'object' || typeof b != 'object') return false;
+    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+    var length = aStack.length;
+    while (length--) {
+      // Linear search. Performance is inversely proportional to the number of
+      // unique nested structures.
+      if (aStack[length] == a) return bStack[length] == b;
+    }
+    // Objects with different constructors are not equivalent, but `Object`s
+    // from different frames are.
+    var aCtor = a.constructor, bCtor = b.constructor;
+    if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
+                             _.isFunction(bCtor) && (bCtor instanceof bCtor))
+                        && ('constructor' in a && 'constructor' in b)) {
+      return false;
+    }
+    // Add the first object to the stack of traversed objects.
+    aStack.push(a);
+    bStack.push(b);
+    var size = 0, result = true;
+    // Recursively compare objects and arrays.
+    if (className == '[object Array]') {
+      // Compare array lengths to determine if a deep comparison is necessary.
+      size = a.length;
+      result = size == b.length;
+      if (result) {
+        // Deep compare the contents, ignoring non-numeric properties.
+        while (size--) {
+          if (!(result = eq(a[size], b[size], aStack, bStack))) break;
+        }
+      }
+    } else {
+      // Deep compare objects.
+      for (var key in a) {
+        if (_.has(a, key)) {
+          // Count the expected number of properties.
+          size++;
+          // Deep compare each member.
+          if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;
+        }
+      }
+      // Ensure that both objects contain the same number of properties.
+      if (result) {
+        for (key in b) {
+          if (_.has(b, key) && !(size--)) break;
+        }
+        result = !size;
+      }
+    }
+    // Remove the first object from the stack of traversed objects.
+    aStack.pop();
+    bStack.pop();
+    return result;
+  };
+
+  // Perform a deep comparison to check if two objects are equal.
+  _.isEqual = function(a, b) {
+    return eq(a, b, [], []);
+  };
+
+  // Is a given array, string, or object empty?
+  // An "empty" object has no enumerable own-properties.
+  _.isEmpty = function(obj) {
+    if (obj == null) return true;
+    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+    for (var key in obj) if (_.has(obj, key)) return false;
+    return true;
+  };
+
+  // Is a given value a DOM element?
+  _.isElement = function(obj) {
+    return !!(obj && obj.nodeType === 1);
+  };
+
+  // Is a given value an array?
+  // Delegates to ECMA5's native Array.isArray
+  _.isArray = nativeIsArray || function(obj) {
+    return toString.call(obj) == '[object Array]';
+  };
+
+  // Is a given variable an object?
+  _.isObject = function(obj) {
+    return obj === Object(obj);
+  };
+
+  // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.
+  each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
+    _['is' + name] = function(obj) {
+      return toString.call(obj) == '[object ' + name + ']';
+    };
+  });
+
+  // Define a fallback version of the method in browsers (ahem, IE), where
+  // there isn't any inspectable "Arguments" type.
+  if (!_.isArguments(arguments)) {
+    _.isArguments = function(obj) {
+      return !!(obj && _.has(obj, 'callee'));
+    };
+  }
+
+  // Optimize `isFunction` if appropriate.
+  if (typeof (/./) !== 'function') {
+    _.isFunction = function(obj) {
+      return typeof obj === 'function';
+    };
+  }
+
+  // Is a given object a finite number?
+  _.isFinite = function(obj) {
+    return isFinite(obj) && !isNaN(parseFloat(obj));
+  };
+
+  // Is the given value `NaN`? (NaN is the only number which does not equal itself).
+  _.isNaN = function(obj) {
+    return _.isNumber(obj) && obj != +obj;
+  };
+
+  // Is a given value a boolean?
+  _.isBoolean = function(obj) {
+    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+  };
+
+  // Is a given value equal to null?
+  _.isNull = function(obj) {
+    return obj === null;
+  };
+
+  // Is a given variable undefined?
+  _.isUndefined = function(obj) {
+    return obj === void 0;
+  };
+
+  // Shortcut function for checking if an object has a given property directly
+  // on itself (in other words, not on a prototype).
+  _.has = function(obj, key) {
+    return hasOwnProperty.call(obj, key);
+  };
+
+  // Utility Functions
+  // -----------------
+
+  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+  // previous owner. Returns a reference to the Underscore object.
+  _.noConflict = function() {
+    root._ = previousUnderscore;
+    return this;
+  };
+
+  // Keep the identity function around for default iterators.
+  _.identity = function(value) {
+    return value;
+  };
+
+  _.constant = function(value) {
+    return function () {
+      return value;
+    };
+  };
+
+  _.property = function(key) {
+    return function(obj) {
+      return obj[key];
+    };
+  };
+
+  // Returns a predicate for checking whether an object has a given set of `key:value` pairs.
+  _.matches = function(attrs) {
+    return function(obj) {
+      if (obj === attrs) return true; //avoid comparing an object to itself.
+      for (var key in attrs) {
+        if (attrs[key] !== obj[key])
+          return false;
+      }
+      return true;
+    }
+  };
+
+  // Run a function **n** times.
+  _.times = function(n, iterator, context) {
+    var accum = Array(Math.max(0, n));
+    for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
+    return accum;
+  };
+
+  // Return a random integer between min and max (inclusive).
+  _.random = function(min, max) {
+    if (max == null) {
+      max = min;
+      min = 0;
+    }
+    return min + Math.floor(Math.random() * (max - min + 1));
+  };
+
+  // A (possibly faster) way to get the current timestamp as an integer.
+  _.now = Date.now || function() { return new Date().getTime(); };
+
+  // List of HTML entities for escaping.
+  var entityMap = {
+    escape: {
+      '&': '&amp;',
+      '<': '&lt;',
+      '>': '&gt;',
+      '"': '&quot;',
+      "'": '&#x27;'
+    }
+  };
+  entityMap.unescape = _.invert(entityMap.escape);
+
+  // Regexes containing the keys and values listed immediately above.
+  var entityRegexes = {
+    escape:   new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'),
+    unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g')
+  };
+
+  // Functions for escaping and unescaping strings to/from HTML interpolation.
+  _.each(['escape', 'unescape'], function(method) {
+    _[method] = function(string) {
+      if (string == null) return '';
+      return ('' + string).replace(entityRegexes[method], function(match) {
+        return entityMap[method][match];
+      });
+    };
+  });
+
+  // If the value of the named `property` is a function then invoke it with the
+  // `object` as context; otherwise, return it.
+  _.result = function(object, property) {
+    if (object == null) return void 0;
+    var value = object[property];
+    return _.isFunction(value) ? value.call(object) : value;
+  };
+
+  // Add your own custom functions to the Underscore object.
+  _.mixin = function(obj) {
+    each(_.functions(obj), function(name) {
+      var func = _[name] = obj[name];
+      _.prototype[name] = function() {
+        var args = [this._wrapped];
+        push.apply(args, arguments);
+        return result.call(this, func.apply(_, args));
+      };
+    });
+  };
+
+  // Generate a unique integer id (unique within the entire client session).
+  // Useful for temporary DOM ids.
+  var idCounter = 0;
+  _.uniqueId = function(prefix) {
+    var id = ++idCounter + '';
+    return prefix ? prefix + id : id;
+  };
+
+  // By default, Underscore uses ERB-style template delimiters, change the
+  // following template settings to use alternative delimiters.
+  _.templateSettings = {
+    evaluate    : /<%([\s\S]+?)%>/g,
+    interpolate : /<%=([\s\S]+?)%>/g,
+    escape      : /<%-([\s\S]+?)%>/g
+  };
+
+  // When customizing `templateSettings`, if you don't want to define an
+  // interpolation, evaluation or escaping regex, we need one that is
+  // guaranteed not to match.
+  var noMatch = /(.)^/;
+
+  // Certain characters need to be escaped so that they can be put into a
+  // string literal.
+  var escapes = {
+    "'":      "'",
+    '\\':     '\\',
+    '\r':     'r',
+    '\n':     'n',
+    '\t':     't',
+    '\u2028': 'u2028',
+    '\u2029': 'u2029'
+  };
+
+  var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
+
+  // JavaScript micro-templating, similar to John Resig's implementation.
+  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+  // and correctly escapes quotes within interpolated code.
+  _.template = function(text, data, settings) {
+    var render;
+    settings = _.defaults({}, settings, _.templateSettings);
+
+    // Combine delimiters into one regular expression via alternation.
+    var matcher = new RegExp([
+      (settings.escape || noMatch).source,
+      (settings.interpolate || noMatch).source,
+      (settings.evaluate || noMatch).source
+    ].join('|') + '|$', 'g');
+
+    // Compile the template source, escaping string literals appropriately.
+    var index = 0;
+    var source = "__p+='";
+    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
+      source += text.slice(index, offset)
+        .replace(escaper, function(match) { return '\\' + escapes[match]; });
+
+      if (escape) {
+        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
+      }
+      if (interpolate) {
+        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
+      }
+      if (evaluate) {
+        source += "';\n" + evaluate + "\n__p+='";
+      }
+      index = offset + match.length;
+      return match;
+    });
+    source += "';\n";
+
+    // If a variable is not specified, place data values in local scope.
+    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
+
+    source = "var __t,__p='',__j=Array.prototype.join," +
+      "print=function(){__p+=__j.call(arguments,'');};\n" +
+      source + "return __p;\n";
+
+    try {
+      render = new Function(settings.variable || 'obj', '_', source);
+    } catch (e) {
+      e.source = source;
+      throw e;
+    }
+
+    if (data) return render(data, _);
+    var template = function(data) {
+      return render.call(this, data, _);
+    };
+
+    // Provide the compiled function source as a convenience for precompilation.
+    template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';
+
+    return template;
+  };
+
+  // Add a "chain" function, which will delegate to the wrapper.
+  _.chain = function(obj) {
+    return _(obj).chain();
+  };
+
+  // OOP
+  // ---------------
+  // If Underscore is called as a function, it returns a wrapped object that
+  // can be used OO-style. This wrapper holds altered versions of all the
+  // underscore functions. Wrapped objects may be chained.
+
+  // Helper function to continue chaining intermediate results.
+  var result = function(obj) {
+    return this._chain ? _(obj).chain() : obj;
+  };
+
+  // Add all of the Underscore functions to the wrapper object.
+  _.mixin(_);
+
+  // Add all mutator Array functions to the wrapper.
+  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      var obj = this._wrapped;
+      method.apply(obj, arguments);
+      if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];
+      return result.call(this, obj);
+    };
+  });
+
+  // Add all accessor Array functions to the wrapper.
+  each(['concat', 'join', 'slice'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      return result.call(this, method.apply(this._wrapped, arguments));
+    };
+  });
+
+  _.extend(_.prototype, {
+
+    // Start chaining a wrapped Underscore object.
+    chain: function() {
+      this._chain = true;
+      return this;
+    },
+
+    // Extracts the result from a wrapped and chained object.
+    value: function() {
+      return this._wrapped;
+    }
+
+  });
+
+  // AMD registration happens at the end for compatibility with AMD loaders
+  // that may not enforce next-turn semantics on modules. Even though general
+  // practice for AMD registration is to be anonymous, underscore registers
+  // as a named module because, like jQuery, it is a base library that is
+  // popular enough to be bundled in a third party lib, but not be part of
+  // an AMD load request. Those cases could generate an error when an
+  // anonymous define() is called outside of a loader request.
+  if (typeof define === 'function' && define.amd) {
+    define('underscore', [], function() {
+      return _;
+    });
+  }
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/underscore-plus/package.json b/atom/packages/vim-mode/node_modules/underscore-plus/package.json
new file mode 100644 (file)
index 0000000..b52af2d
--- /dev/null
@@ -0,0 +1,78 @@
+{
+  "name": "underscore-plus",
+  "version": "1.6.6",
+  "description": "Underscore plus additional utilities",
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/atom/underscore-plus/raw/master/LICENSE.md"
+    }
+  ],
+  "main": "./lib/underscore-plus.js",
+  "scripts": {
+    "prepublish": "grunt clean coffee lint",
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/underscore-plus.git"
+  },
+  "bugs": {
+    "url": "https://github.com/atom/underscore-plus/issues"
+  },
+  "homepage": "http://atom.github.io/underscore-plus",
+  "keywords": [
+    "underscore"
+  ],
+  "dependencies": {
+    "underscore": "~1.6.0"
+  },
+  "devDependencies": {
+    "jasmine-focused": "1.x",
+    "grunt-contrib-coffee": "~0.9.0",
+    "grunt-cli": "~0.1.8",
+    "grunt": "~0.4.1",
+    "grunt-shell": "~0.2.2",
+    "grunt-coffeelint": "0.0.6",
+    "temp": "~0.5.0",
+    "rimraf": "~2.1.4"
+  },
+  "gitHead": "2046d1562896761e3c38b7a647ac30b87b46ea20",
+  "_id": "underscore-plus@1.6.6",
+  "_shasum": "65ecde1bdc441a35d89e650fd70dcf13ae439a7d",
+  "_from": "underscore-plus@>=1.0.0 <2.0.0",
+  "_npmVersion": "2.1.8",
+  "_nodeVersion": "0.10.33",
+  "_npmUser": {
+    "name": "maxbrunsfeld",
+    "email": "maxbrunsfeld@gmail.com"
+  },
+  "maintainers": [
+    {
+      "name": "kevinsawicki",
+      "email": "kevinsawicki@gmail.com"
+    },
+    {
+      "name": "mcolyer",
+      "email": "matt@colyer.name"
+    },
+    {
+      "name": "benogle",
+      "email": "ogle.ben@gmail.com"
+    },
+    {
+      "name": "nathansobo",
+      "email": "nathansobo@gmail.com"
+    },
+    {
+      "name": "maxbrunsfeld",
+      "email": "maxbrunsfeld@gmail.com"
+    }
+  ],
+  "dist": {
+    "shasum": "65ecde1bdc441a35d89e650fd70dcf13ae439a7d",
+    "tarball": "http://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.6.tgz"
+  },
+  "directories": {},
+  "_resolved": "https://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.6.tgz"
+}
diff --git a/atom/packages/vim-mode/package.json b/atom/packages/vim-mode/package.json
new file mode 100644 (file)
index 0000000..6843024
--- /dev/null
@@ -0,0 +1,846 @@
+{
+  "name": "vim-mode",
+  "main": "./lib/vim-mode",
+  "version": "0.54.0",
+  "description": "Add vim modal control",
+  "license": "MIT",
+  "private": true,
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/atom/vim-mode"
+  },
+  "engines": {
+    "atom": ">0.151.0"
+  },
+  "dependencies": {
+    "underscore-plus": "1.x",
+    "event-kit": "^0.7.2"
+  },
+  "consumedServices": {
+    "status-bar": {
+      "versions": {
+        "^1.0.0": "consumeStatusBar"
+      }
+    }
+  },
+  "providedServices": {
+    "vim-mode": {
+      "description": "",
+      "versions": {
+        "0.1.0": "provideVimMode"
+      }
+    }
+  },
+  "devDependencies": {
+    "coffeelint": "^1.10.1"
+  },
+  "readme": "## Vim Mode package [![Build Status](https://travis-ci.org/atom/vim-mode.svg?branch=master)](https://travis-ci.org/atom/vim-mode)\n\nProvides vim modal control for Atom, ideally blending the best of vim\nand Atom.\n\n### Installing\n\nUse the Atom package manager, which can be found in the Settings view or\nrun `apm install vim-mode` from the command line.\n\n### Current Status\n\nSizable portions of Vim's command mode work as you'd expect, including\nmany complex combinations. Even so, this package is far from finished (Vim\nwasn't built in a day).\n\nIf you want the vim ex line (for `:w`, `:s`, etc.), you can try [ex-mode](https://atom.io/packages/ex-mode)\nwhich works in conjuction with this plugin.\n\nCurrently, vim-mode requires soft line wraps to be disabled, and has some issues\nwith international keyboard layouts.\n\nIf there's a feature of Vim you're missing, it might just be that you use it\nmore often than other developers. Adding a feature can be quick and easy. Check\nout the [closed pull requests](https://github.com/atom/vim-mode/pulls?direction=desc&page=1&sort=created&state=closed)\nto see examples of community contributions. We're looking forward to yours, too.\n\n### Documentation\n\n* [Overview](https://github.com/atom/vim-mode/blob/master/docs/overview.md)\n* [Motions](https://github.com/atom/vim-mode/blob/master/docs/motions.md)\n* [Operators](https://github.com/atom/vim-mode/blob/master/docs/operators.md)\n* [Windows](https://github.com/atom/vim-mode/blob/master/docs/windows.md)\n* [Scrolling](https://github.com/atom/vim-mode/blob/master/docs/scrolling.md)\n\n### Development\n\n* Create a branch with your feature/fix.\n* Add a spec (take inspiration from the ones that are already there).\n* If you're adding a command be sure to update the appropriate file in\n  `docs/`\n* Create a PR.\n\nWhen in doubt, open a PR earlier rather than later so that you can receive\nfeedback from the community. We want to get your fix or feature included as much\nas you do.\n\nSee [the contribution guide](https://github.com/atom/vim-mode/blob/master/CONTRIBUTING.md).\n",
+  "readmeFilename": "README.md",
+  "bugs": {
+    "url": "https://github.com/atom/vim-mode/issues"
+  },
+  "homepage": "https://github.com/atom/vim-mode",
+  "_id": "vim-mode@0.54.0",
+  "_shasum": "619db8e3fab094d98ed3082c1ae8fe38c3659157",
+  "_resolved": "file:../d-11562-87009-1vvfmad/package.tgz",
+  "_from": "../d-11562-87009-1vvfmad/package.tgz",
+  "_atomModuleCache": {
+    "version": 1,
+    "dependencies": [
+      {
+        "name": "event-kit",
+        "version": "0.7.2",
+        "path": "node_modules/event-kit/lib/event-kit.js"
+      },
+      {
+        "name": "grim",
+        "version": "0.12.0",
+        "path": "node_modules/event-kit/node_modules/grim/lib/grim.js"
+      },
+      {
+        "name": "emissary",
+        "version": "1.3.3",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emissary.js"
+      },
+      {
+        "name": "es6-weak-map",
+        "version": "0.1.4",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js"
+      },
+      {
+        "name": "d",
+        "version": "0.1.1",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js"
+      },
+      {
+        "name": "es5-ext",
+        "version": "0.10.7",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js"
+      },
+      {
+        "name": "es6-iterator",
+        "version": "0.1.3",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js"
+      },
+      {
+        "name": "es6-symbol",
+        "version": "2.0.1",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js"
+      },
+      {
+        "name": "mixto",
+        "version": "1.0.0",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js"
+      },
+      {
+        "name": "property-accessors",
+        "version": "1.1.3",
+        "path": "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js"
+      },
+      {
+        "name": "underscore-plus",
+        "version": "1.6.6",
+        "path": "node_modules/underscore-plus/lib/underscore-plus.js"
+      },
+      {
+        "name": "underscore",
+        "version": "1.6.0",
+        "path": "node_modules/underscore-plus/node_modules/underscore/underscore.js"
+      }
+    ],
+    "extensions": {
+      ".json": [
+        "coffeelint.json",
+        "node_modules/event-kit/api.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/package.json",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/package.json",
+        "node_modules/event-kit/node_modules/grim/package.json",
+        "node_modules/event-kit/package.json",
+        "node_modules/underscore-plus/node_modules/underscore/package.json",
+        "node_modules/underscore-plus/package.json",
+        "package.json"
+      ],
+      ".coffee": [
+        "lib/global-vim-state.coffee",
+        "lib/motions/find-motion.coffee",
+        "lib/motions/general-motions.coffee",
+        "lib/motions/index.coffee",
+        "lib/motions/move-to-mark-motion.coffee",
+        "lib/motions/search-motion.coffee",
+        "lib/operators/general-operators.coffee",
+        "lib/operators/increase-operators.coffee",
+        "lib/operators/indent-operators.coffee",
+        "lib/operators/index.coffee",
+        "lib/operators/input.coffee",
+        "lib/operators/put-operator.coffee",
+        "lib/operators/replace-operator.coffee",
+        "lib/prefixes.coffee",
+        "lib/scroll.coffee",
+        "lib/settings.coffee",
+        "lib/status-bar-manager.coffee",
+        "lib/text-objects.coffee",
+        "lib/utils.coffee",
+        "lib/view-models/search-view-model.coffee",
+        "lib/view-models/view-model.coffee",
+        "lib/view-models/vim-command-mode-input-element.coffee",
+        "lib/vim-mode.coffee",
+        "lib/vim-state.coffee"
+      ],
+      ".js": [
+        "node_modules/event-kit/lib/composite-disposable.js",
+        "node_modules/event-kit/lib/disposable.js",
+        "node_modules/event-kit/lib/emitter.js",
+        "node_modules/event-kit/lib/event-kit.js",
+        "node_modules/event-kit/node_modules/grim/lib/deprecation.js",
+        "node_modules/event-kit/node_modules/grim/lib/grim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/behavior.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emissary.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/emitter.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/helpers.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/signal.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscriber.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib/subscription.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-native-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/is-weak-map.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/auto-bind.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/lazy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/_compare-by-length.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/binary-search.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/clear.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/compact.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/contains.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/diff.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-index-of.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/e-last-index-of.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/exclusion.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first-index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/first.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/flatten.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/for-each-right.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/group.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/indexes-of.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/intersection.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-copy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/is-uniq.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last-index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/last.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/remove.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/separate.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/some-right.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/uniq.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_is-extensible.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy-safe.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/_sub-array-dummy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/generate.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/is-plain-array.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/to-array.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/valid-array.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean/is-boolean.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/copy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/days-in-month.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-day.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-month.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/floor-year.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/format.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/is-date.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/valid-date.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#/throw.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/custom.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/is-error.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/valid-error.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/compose.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/copy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/curry.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/lock.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/not.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/partial.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/spread.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#/to-string-tokens.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/_define-length.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/constant.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/identity.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/invoke.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-arguments.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/is-function.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/noop.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/pluck.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/valid-function.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/global.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/for-each.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/is.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate-object.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable/validate.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_pack-ieee754.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/_unpack-ieee754.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#/pad.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-number.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-integer.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-pos-integer.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/to-uint32.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/_iterate.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/clear.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compact.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/compare.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy-deep.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/copy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/count.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/create.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/eq.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/every.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/filter.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/first-key.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/flatten.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/for-each.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/get-property-names.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-array-like.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-callable.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy-deep.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-copy.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-empty.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-object.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is-plain-object.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/is.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/key-of.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map-keys.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/map.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin-prototypes.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/mixin.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/normalize-options.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/primitive-set.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/safe-traverse.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/serialize.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/some.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/to-array.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/unserialize.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-callable.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-object.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/valid-value.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like-object.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-array-like.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable-value.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/validate-stringifiable.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-sticky.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/is-unicode.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/escape.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/is-reg-exp.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/valid-reg-exp.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/at.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/camel-to-hyphen.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/capitalize.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/case-insensitive-compare.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/hyphen-to-camel.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/indent.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/last.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/_data.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/pad.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace-all.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/plain-replace.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/format-method.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/is-string.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/random-uniq.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw/shim.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#/chain.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/array.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/for-of.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/get.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/is-iterable.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/string.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/valid-iterable.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/implement.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/index.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-native-implemented.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/is-symbol.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/polyfill.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/validate-symbol.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/polyfill.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/valid-weak-map.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/mixto/lib/mixin.js",
+        "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib/property-accessors.js",
+        "node_modules/underscore-plus/lib/underscore-plus.js",
+        "node_modules/underscore-plus/node_modules/underscore/underscore-min.js",
+        "node_modules/underscore-plus/node_modules/underscore/underscore.js"
+      ]
+    },
+    "folders": [
+      {
+        "paths": [
+          "",
+          "lib",
+          "lib/motions",
+          "lib/operators",
+          "lib/view-models",
+          "spec"
+        ],
+        "dependencies": {
+          "underscore-plus": "1.x",
+          "event-kit": "^0.7.2"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit",
+          "node_modules/event-kit/lib"
+        ],
+        "dependencies": {
+          "grim": "^0.12.0"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/lib",
+          "node_modules/event-kit/node_modules/grim"
+        ],
+        "dependencies": {
+          "underscore-plus": "^1.0.0",
+          "emissary": "^1.2.0"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/lib",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary"
+        ],
+        "dependencies": {
+          "underscore-plus": "1.x",
+          "mixto": "1.x",
+          "property-accessors": "^1.1",
+          "es6-weak-map": "^0.1.2"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/test"
+        ],
+        "dependencies": {
+          "d": "~0.1.1",
+          "es5-ext": "~0.10.6",
+          "es6-iterator": "~0.1.3",
+          "es6-symbol": "~2.0.1"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/d/test"
+        ],
+        "dependencies": {
+          "es5-ext": "~0.10.2"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/@@iterator",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/concat",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/copy-within",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/entries",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/fill",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/filter",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/find-index",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/keys",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/map",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/slice",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/splice",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/#/values",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/from",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/array/of",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/boolean",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/date",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/error",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/function",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/iterable",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/acosh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/asinh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/atanh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cbrt",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/clz32",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/cosh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/expm1",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/fround",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/hypot",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log10",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log1p",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/log2",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sign",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/sinh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/tanh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/trunc",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/epsilon",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-finite",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-nan",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/is-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/max-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/number/min-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/assign",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/keys",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/object/set-prototype-of",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/match",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/replace",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/search",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/split",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/sticky",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp/#/unicode",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/reg-exp",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/@@iterator",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/code-point-at",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/contains",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/ends-with",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/normalize",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/repeat",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/#/starts-with",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/from-code-point",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/string/raw",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/@@iterator",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/concat",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/copy-within",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/entries",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/fill",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/filter",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/find-index",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/keys",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/map",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/slice",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/splice",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/#/values",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/from",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/array/of",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/boolean",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/date",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/error",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/function",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/iterable",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/acosh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/asinh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/atanh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cbrt",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/clz32",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/cosh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/expm1",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/fround",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/hypot",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/imul",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log10",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log1p",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/log2",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sign",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/sinh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/tanh",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/math/trunc",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/epsilon",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-finite",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-nan",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/is-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/max-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/number/min-safe-integer",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/assign",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/keys",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/object/set-prototype-of",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/match",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/replace",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/search",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/split",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/sticky",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp/#/unicode",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/reg-exp",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/@@iterator",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/code-point-at",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/contains",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/ends-with",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/normalize",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/repeat",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/#/starts-with",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/from-code-point",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/test/string/raw"
+        ],
+        "dependencies": {
+          "es6-iterator": "~0.1.3",
+          "es6-symbol": "~2.0.1"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test/#",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-iterator/test"
+        ],
+        "dependencies": {
+          "d": "~0.1.1",
+          "es5-ext": "~0.10.5",
+          "es6-symbol": "~2.0.1"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es6-symbol/test"
+        ],
+        "dependencies": {
+          "d": "~0.1.1",
+          "es5-ext": "~0.10.5"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors/lib",
+          "node_modules/event-kit/node_modules/grim/node_modules/emissary/node_modules/property-accessors"
+        ],
+        "dependencies": {
+          "mixto": "1.x",
+          "es6-weak-map": "^0.1.2"
+        }
+      },
+      {
+        "paths": [
+          "node_modules/underscore-plus/lib",
+          "node_modules/underscore-plus"
+        ],
+        "dependencies": {
+          "underscore": "~1.6.0"
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/atom/packages/vim-mode/spec/motions-spec.coffee b/atom/packages/vim-mode/spec/motions-spec.coffee
new file mode 100644 (file)
index 0000000..f7114ed
--- /dev/null
@@ -0,0 +1,1865 @@
+helpers = require './spec-helper'
+
+describe "Motions", ->
+  [editor, editorElement, vimState] = []
+
+  beforeEach ->
+    vimMode = atom.packages.loadPackage('vim-mode')
+    vimMode.activateResources()
+
+    helpers.getEditorElement (element) ->
+      editorElement = element
+      editor = editorElement.getModel()
+      vimState = editorElement.vimState
+      vimState.activateCommandMode()
+      vimState.resetCommandMode()
+
+  keydown = (key, options={}) ->
+    options.element ?= editorElement
+    helpers.keydown(key, options)
+
+  commandModeInputKeydown = (key, opts = {}) ->
+    editor.commandModeInputView.editorElement.getModel().setText(key)
+
+  submitCommandModeInputText = (text) ->
+    commandEditor = editor.commandModeInputView.editorElement
+    commandEditor.getModel().setText(text)
+    atom.commands.dispatch(commandEditor, "core:confirm")
+
+  describe "simple motions", ->
+    beforeEach ->
+      editor.setText("12345\nabcd\nABCDE")
+      editor.setCursorScreenPosition([1, 1])
+
+    describe "the h keybinding", ->
+      describe "as a motion", ->
+        it "moves the cursor left, but not to the previous line", ->
+          keydown('h')
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+          keydown('h')
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+        it "moves the cursor to the previous line if wrapLeftRightMotion is true", ->
+          atom.config.set('vim-mode.wrapLeftRightMotion', true)
+          keydown('h')
+          keydown('h')
+          expect(editor.getCursorScreenPosition()).toEqual [0, 4]
+
+      describe "as a selection", ->
+        it "selects the character to the left", ->
+          keydown('y')
+          keydown('h')
+
+          expect(vimState.getRegister('"').text).toBe 'a'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+    describe "the j keybinding", ->
+      it "moves the cursor down, but not to the end of the last line", ->
+        keydown('j')
+        expect(editor.getCursorScreenPosition()).toEqual [2, 1]
+
+        keydown('j')
+        expect(editor.getCursorScreenPosition()).toEqual [2, 1]
+
+      it "moves the cursor to the end of the line, not past it", ->
+        editor.setCursorScreenPosition([0, 4])
+
+        keydown('j')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 3]
+
+      it "remembers the position it column it was in after moving to shorter line", ->
+        editor.setCursorScreenPosition([0, 4])
+
+        keydown('j')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 3]
+
+        keydown('j')
+        expect(editor.getCursorScreenPosition()).toEqual [2, 4]
+
+      describe "when visual mode", ->
+        beforeEach ->
+          keydown('v')
+          expect(editor.getCursorScreenPosition()).toEqual [1, 2]
+
+        it "moves the cursor down", ->
+          keydown('j')
+          expect(editor.getCursorScreenPosition()).toEqual [2, 2]
+
+        it "doesn't go over after the last line", ->
+          keydown('j')
+          expect(editor.getCursorScreenPosition()).toEqual [2, 2]
+
+        it "selects the text while moving", ->
+          keydown('j')
+          expect(editor.getSelectedText()).toBe "bcd\nAB"
+
+    describe "the k keybinding", ->
+      it "moves the cursor up, but not to the beginning of the first line", ->
+        keydown('k')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+
+        keydown('k')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+
+    describe "the l keybinding", ->
+      beforeEach -> editor.setCursorScreenPosition([1, 2])
+
+      it "moves the cursor right, but not to the next line", ->
+        keydown('l')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 3]
+
+        keydown('l')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 3]
+
+      it "moves the cursor to the next line if wrapLeftRightMotion is true", ->
+        atom.config.set('vim-mode.wrapLeftRightMotion', true)
+        keydown('l')
+        keydown('l')
+        expect(editor.getCursorScreenPosition()).toEqual [2, 0]
+
+      describe "on a blank line", ->
+        it "doesn't move the cursor", ->
+          editor.setText("\n\n\n")
+          editor.setCursorBufferPosition([1, 0])
+          keydown('l')
+          expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+
+  describe "the w keybinding", ->
+    beforeEach -> editor.setText("ab cde1+- \n xyz\n\nzip")
+
+    describe "as a motion", ->
+      beforeEach -> editor.setCursorScreenPosition([0, 0])
+
+      it "moves the cursor to the beginning of the next word", ->
+        keydown('w')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 3]
+
+        keydown('w')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 7]
+
+        keydown('w')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 1]
+
+        keydown('w')
+        expect(editor.getCursorScreenPosition()).toEqual [2, 0]
+
+        # FIXME: The definition of Cursor#getEndOfCurrentWordBufferPosition,
+        # means that the end of the word can't be the current cursor
+        # position (even though it is when your cursor is on a new line).
+        #
+        # Therefore it picks the end of the next word here (which is [3,3])
+        # to start looking for the next word, which is also the end of the
+        # buffer so the cursor never advances.
+        #
+        # See atom/vim-mode#3
+        keydown('w')
+        expect(editor.getCursorScreenPosition()).toEqual [3, 0]
+
+        keydown('w')
+        expect(editor.getCursorScreenPosition()).toEqual [3, 3]
+
+        # After cursor gets to the EOF, it should stay there.
+        keydown('w')
+        expect(editor.getCursorScreenPosition()).toEqual [3, 3]
+
+      it "moves the cursor to the end of the word if last word in file", ->
+        editor.setText("abc")
+        editor.setCursorScreenPosition([0, 0])
+        keydown('w')
+        expect(editor.getCursorScreenPosition()).toEqual([0, 3])
+
+    describe "as a selection", ->
+      describe "within a word", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([0, 0])
+          keydown('y')
+          keydown('w')
+
+        it "selects to the end of the word", ->
+          expect(vimState.getRegister('"').text).toBe 'ab '
+
+      describe "between words", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([0, 2])
+          keydown('y')
+          keydown('w')
+
+        it "selects the whitespace", ->
+          expect(vimState.getRegister('"').text).toBe ' '
+
+  describe "the W keybinding", ->
+    beforeEach -> editor.setText("cde1+- ab \n xyz\n\nzip")
+
+    describe "as a motion", ->
+      beforeEach -> editor.setCursorScreenPosition([0, 0])
+
+      it "moves the cursor to the beginning of the next word", ->
+        keydown('W', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [0, 7]
+
+        keydown('W', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [1, 1]
+
+        keydown('W', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [2, 0]
+
+        keydown('W', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [3, 0]
+
+    describe "as a selection", ->
+      describe "within a word", ->
+        it "selects to the end of the whole word", ->
+          editor.setCursorScreenPosition([0, 0])
+          keydown('y')
+          keydown('W', shift: true)
+          expect(vimState.getRegister('"').text).toBe 'cde1+- '
+
+      it "continues past blank lines", ->
+        editor.setCursorScreenPosition([2, 0])
+
+        keydown('d')
+        keydown('W', shift: true)
+        expect(editor.getText()).toBe "cde1+- ab \n xyz\nzip"
+        expect(vimState.getRegister('"').text).toBe '\n'
+
+      it "doesn't go past the end of the file", ->
+        editor.setCursorScreenPosition([3, 0])
+
+        keydown('d')
+        keydown('W', shift: true)
+        expect(editor.getText()).toBe "cde1+- ab \n xyz\n\n"
+        expect(vimState.getRegister('"').text).toBe 'zip'
+
+  describe "the e keybinding", ->
+    beforeEach -> editor.setText("ab cde1+- \n xyz\n\nzip")
+
+    describe "as a motion", ->
+      beforeEach -> editor.setCursorScreenPosition([0, 0])
+
+      it "moves the cursor to the end of the current word", ->
+        keydown('e')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+
+        keydown('e')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+
+        keydown('e')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 8]
+
+        keydown('e')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 3]
+
+        keydown('e')
+        expect(editor.getCursorScreenPosition()).toEqual [3, 2]
+
+    describe "as selection", ->
+      describe "within a word", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([0, 0])
+          keydown('y')
+          keydown('e')
+
+        it "selects to the end of the current word", ->
+          expect(vimState.getRegister('"').text).toBe 'ab'
+
+      describe "between words", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([0, 2])
+          keydown('y')
+          keydown('e')
+
+        it "selects to the end of the next word", ->
+          expect(vimState.getRegister('"').text).toBe ' cde1'
+
+  describe "the E keybinding", ->
+    beforeEach -> editor.setText("ab  cde1+- \n xyz \n\nzip\n")
+
+    describe "as a motion", ->
+      beforeEach -> editor.setCursorScreenPosition([0, 0])
+
+      it "moves the cursor to the end of the current word", ->
+        keydown('E', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+
+        keydown('E', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [0, 9]
+
+        keydown('E', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [1, 3]
+
+        keydown('E', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [3, 2]
+
+        keydown('E', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [4, 0]
+
+    describe "as selection", ->
+      describe "within a word", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([0, 0])
+          keydown('y')
+          keydown('E', shift: true)
+
+        it "selects to the end of the current word", ->
+          expect(vimState.getRegister('"').text).toBe 'ab'
+
+      describe "between words", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([0, 2])
+          keydown('y')
+          keydown('E', shift: true)
+
+        it "selects to the end of the next word", ->
+          expect(vimState.getRegister('"').text).toBe '  cde1+-'
+
+      describe "press more than once", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([0, 0])
+          keydown('v')
+          keydown('E', shift: true)
+          keydown('E', shift: true)
+          keydown('y')
+
+        it "selects to the end of the current word", ->
+          expect(vimState.getRegister('"').text).toBe 'ab  cde1+-'
+
+  describe "the } keybinding", ->
+    beforeEach ->
+      editor.setText("abcde\n\nfghij\nhijk\n  xyz  \n\nzip\n\n  \nthe end")
+      editor.setCursorScreenPosition([0, 0])
+
+    describe "as a motion", ->
+      it "moves the cursor to the end of the paragraph", ->
+        keydown('}')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+        keydown('}')
+        expect(editor.getCursorScreenPosition()).toEqual [5, 0]
+
+        keydown('}')
+        expect(editor.getCursorScreenPosition()).toEqual [7, 0]
+
+        keydown('}')
+        expect(editor.getCursorScreenPosition()).toEqual [9, 6]
+
+    describe "as a selection", ->
+      beforeEach ->
+        keydown('y')
+        keydown('}')
+
+      it 'selects to the end of the current paragraph', ->
+        expect(vimState.getRegister('"').text).toBe "abcde\n"
+
+  describe "the { keybinding", ->
+    beforeEach ->
+      editor.setText("abcde\n\nfghij\nhijk\n  xyz  \n\nzip\n\n  \nthe end")
+      editor.setCursorScreenPosition([9, 0])
+
+    describe "as a motion", ->
+      it "moves the cursor to the beginning of the paragraph", ->
+        keydown('{')
+        expect(editor.getCursorScreenPosition()).toEqual [7, 0]
+
+        keydown('{')
+        expect(editor.getCursorScreenPosition()).toEqual [5, 0]
+
+        keydown('{')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+        keydown('{')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    describe "as a selection", ->
+      beforeEach ->
+        editor.setCursorScreenPosition([7, 0])
+        keydown('y')
+        keydown('{')
+
+      it 'selects to the beginning of the current paragraph', ->
+        expect(vimState.getRegister('"').text).toBe "\nzip\n"
+
+  describe "the b keybinding", ->
+    beforeEach -> editor.setText(" ab cde1+- \n xyz\n\nzip }\n last")
+
+    describe "as a motion", ->
+      beforeEach -> editor.setCursorScreenPosition([4, 1])
+
+      it "moves the cursor to the beginning of the previous word", ->
+        keydown('b')
+        expect(editor.getCursorScreenPosition()).toEqual [3, 4]
+
+        keydown('b')
+        expect(editor.getCursorScreenPosition()).toEqual [3, 0]
+
+        keydown('b')
+        expect(editor.getCursorScreenPosition()).toEqual [2, 0]
+
+        keydown('b')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 1]
+
+        keydown('b')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 8]
+
+        keydown('b')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 4]
+
+        keydown('b')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+
+        # Go to start of the file, after moving past the first word
+        keydown('b')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+        # Stay at the start of the file
+        keydown('b')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    describe "as a selection", ->
+      describe "within a word", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([0, 2])
+          keydown('y')
+          keydown('b')
+
+        it "selects to the beginning of the current word", ->
+          expect(vimState.getRegister('"').text).toBe 'a'
+          expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+
+      describe "between words", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([0, 4])
+          keydown('y')
+          keydown('b')
+
+        it "selects to the beginning of the last word", ->
+          expect(vimState.getRegister('"').text).toBe 'ab '
+          expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+
+  describe "the B keybinding", ->
+    beforeEach -> editor.setText("cde1+- ab \n\t xyz-123\n\n zip")
+
+    describe "as a motion", ->
+      beforeEach -> editor.setCursorScreenPosition([4, 1])
+
+      it "moves the cursor to the beginning of the previous word", ->
+        keydown('B', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [3, 1]
+
+        keydown('B', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [2, 0]
+
+        keydown('B', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [1, 3]
+
+        keydown('B', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [0, 7]
+
+        keydown('B', shift: true)
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    describe "as a selection", ->
+      it "selects to the beginning of the whole word", ->
+        editor.setCursorScreenPosition([1, 10])
+        keydown('y')
+        keydown('B', shift: true)
+        expect(vimState.getRegister('"').text).toBe 'xyz-123'
+
+      it "doesn't go past the beginning of the file", ->
+        editor.setCursorScreenPosition([0, 0])
+        vimState.setRegister('"', text: 'abc')
+        keydown('y')
+        keydown('B', shift: true)
+        expect(vimState.getRegister('"').text).toBe 'abc'
+
+  describe "the ^ keybinding", ->
+    beforeEach ->
+      editor.setText("  abcde")
+
+    describe "from the beginning of the line", ->
+      beforeEach -> editor.setCursorScreenPosition([0, 0])
+
+      describe "as a motion", ->
+        beforeEach -> keydown('^')
+
+        it "moves the cursor to the first character of the line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('^')
+
+        it 'selects to the first character of the line', ->
+          expect(editor.getText()).toBe 'abcde'
+          expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    describe "from the first character of the line", ->
+      beforeEach -> editor.setCursorScreenPosition([0, 2])
+
+      describe "as a motion", ->
+        beforeEach -> keydown('^')
+
+        it "stays put", ->
+          expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('^')
+
+        it "does nothing", ->
+          expect(editor.getText()).toBe '  abcde'
+          expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+    describe "from the middle of a word", ->
+      beforeEach -> editor.setCursorScreenPosition([0, 4])
+
+      describe "as a motion", ->
+        beforeEach -> keydown('^')
+
+        it "moves the cursor to the first character of the line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('^')
+
+        it 'selects to the first character of the line', ->
+          expect(editor.getText()).toBe '  cde'
+          expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+  describe "the 0 keybinding", ->
+    beforeEach ->
+      editor.setText("  abcde")
+      editor.setCursorScreenPosition([0, 4])
+
+    describe "as a motion", ->
+      beforeEach -> keydown('0')
+
+      it "moves the cursor to the first column", ->
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    describe "as a selection", ->
+      beforeEach ->
+        keydown('d')
+        keydown('0')
+
+      it 'selects to the first column of the line', ->
+        expect(editor.getText()).toBe 'cde'
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+  describe "the $ keybinding", ->
+    beforeEach ->
+      editor.setText("  abcde\n\n1234567890")
+      editor.setCursorScreenPosition([0, 4])
+
+    describe "as a motion from empty line", ->
+      beforeEach -> editor.setCursorScreenPosition([1, 0])
+
+      it "moves the cursor to the end of the line", ->
+        expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+    describe "as a motion", ->
+      beforeEach -> keydown('$')
+
+      # FIXME: See atom/vim-mode#2
+      it "moves the cursor to the end of the line", ->
+        expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+
+      it "should remain in the last column when moving down", ->
+        keydown('j')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+        keydown('j')
+        expect(editor.getCursorScreenPosition()).toEqual [2, 9]
+
+    describe "as a selection", ->
+      beforeEach ->
+        keydown('d')
+        keydown('$')
+
+      it "selects to the beginning of the lines", ->
+        expect(editor.getText()).toBe "  ab\n\n1234567890"
+        expect(editor.getCursorScreenPosition()).toEqual [0, 3]
+
+  describe "the 0 keybinding", ->
+    beforeEach ->
+      editor.setText("  a\n")
+      editor.setCursorScreenPosition([0, 2])
+
+    describe "as a motion", ->
+      beforeEach -> keydown('0')
+
+      it "moves the cursor to the beginning of the line", ->
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+  describe "the - keybinding", ->
+    beforeEach ->
+      editor.setText("abcdefg\n  abc\n  abc\n")
+
+    describe "from the middle of a line", ->
+      beforeEach -> editor.setCursorScreenPosition([1, 3])
+
+      describe "as a motion", ->
+        beforeEach -> keydown('-')
+
+        it "moves the cursor to the first character of the previous line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('-')
+
+        it "deletes the current and previous line", ->
+          expect(editor.getText()).toBe "  abc\n"
+          # commented out because the column is wrong due to a bug in `k`; re-enable when `k` is fixed
+          #expect(editor.getCursorScreenPosition()).toEqual [0, 3]
+
+    describe "from the first character of a line indented the same as the previous one", ->
+      beforeEach -> editor.setCursorScreenPosition([2, 2])
+
+      describe "as a motion", ->
+        beforeEach -> keydown('-')
+
+        it "moves to the first character of the previous line (directly above)", ->
+          expect(editor.getCursorScreenPosition()).toEqual [1, 2]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('-')
+
+        it "selects to the first character of the previous line (directly above)", ->
+          expect(editor.getText()).toBe "abcdefg\n"
+          # commented out because the column is wrong due to a bug in `k`; re-enable when `k` is fixed
+          #expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+    describe "from the beginning of a line preceded by an indented line", ->
+      beforeEach -> editor.setCursorScreenPosition([2, 0])
+
+      describe "as a motion", ->
+        beforeEach -> keydown('-')
+
+        it "moves the cursor to the first character of the previous line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [1, 2]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('-')
+
+        it "selects to the first character of the previous line", ->
+          expect(editor.getText()).toBe "abcdefg\n"
+          # commented out because the column is wrong due to a bug in `k`; re-enable when `k` is fixed
+          #expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    describe "with a count", ->
+      beforeEach ->
+        editor.setText("1\n2\n3\n4\n5\n6\n")
+        editor.setCursorScreenPosition([4, 0])
+
+      describe "as a motion", ->
+        beforeEach ->
+          keydown('3')
+          keydown('-')
+
+        it "moves the cursor to the first character of that many lines previous", ->
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('3')
+          keydown('-')
+
+        it "deletes the current line plus that many previous lines", ->
+          expect(editor.getText()).toBe "1\n6\n"
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+  describe "the + keybinding", ->
+    beforeEach ->
+      editor.setText("  abc\n  abc\nabcdefg\n")
+
+    describe "from the middle of a line", ->
+      beforeEach -> editor.setCursorScreenPosition([1, 3])
+
+      describe "as a motion", ->
+        beforeEach -> keydown('+')
+
+        it "moves the cursor to the first character of the next line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [2, 0]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('+')
+
+        it "deletes the current and next line", ->
+          expect(editor.getText()).toBe "  abc\n"
+          # commented out because the column is wrong due to a bug in `j`; re-enable when `j` is fixed
+          #expect(editor.getCursorScreenPosition()).toEqual [0, 3]
+
+    describe "from the first character of a line indented the same as the next one", ->
+      beforeEach -> editor.setCursorScreenPosition([0, 2])
+
+      describe "as a motion", ->
+        beforeEach -> keydown('+')
+
+        it "moves to the first character of the next line (directly below)", ->
+          expect(editor.getCursorScreenPosition()).toEqual [1, 2]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('+')
+
+        it "selects to the first character of the next line (directly below)", ->
+          expect(editor.getText()).toBe "abcdefg\n"
+          # commented out because the column is wrong due to a bug in `j`; re-enable when `j` is fixed
+          #expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+    describe "from the beginning of a line followed by an indented line", ->
+      beforeEach -> editor.setCursorScreenPosition([0, 0])
+
+      describe "as a motion", ->
+        beforeEach -> keydown('+')
+
+        it "moves the cursor to the first character of the next line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [1, 2]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('+')
+
+        it "selects to the first character of the next line", ->
+          expect(editor.getText()).toBe "abcdefg\n"
+          expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    describe "with a count", ->
+      beforeEach ->
+        editor.setText("1\n2\n3\n4\n5\n6\n")
+        editor.setCursorScreenPosition([1, 0])
+
+      describe "as a motion", ->
+        beforeEach ->
+          keydown('3')
+          keydown('+')
+
+        it "moves the cursor to the first character of that many lines following", ->
+          expect(editor.getCursorScreenPosition()).toEqual [4, 0]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('3')
+          keydown('+')
+
+        it "deletes the current line plus that many following lines", ->
+          expect(editor.getText()).toBe "1\n6\n"
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+  describe "the _ keybinding", ->
+    beforeEach ->
+      editor.setText("  abc\n  abc\nabcdefg\n")
+
+    describe "from the middle of a line", ->
+      beforeEach -> editor.setCursorScreenPosition([1, 3])
+
+      describe "as a motion", ->
+        beforeEach -> keydown('_')
+
+        it "moves the cursor to the first character of the current line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [1, 2]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('_')
+
+        it "deletes the current line", ->
+          expect(editor.getText()).toBe "  abc\nabcdefg\n"
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+    describe "with a count", ->
+      beforeEach ->
+        editor.setText("1\n2\n3\n4\n5\n6\n")
+        editor.setCursorScreenPosition([1, 0])
+
+      describe "as a motion", ->
+        beforeEach ->
+          keydown('3')
+          keydown('_')
+
+        it "moves the cursor to the first character of that many lines following", ->
+          expect(editor.getCursorScreenPosition()).toEqual [3, 0]
+
+      describe "as a selection", ->
+        beforeEach ->
+          keydown('d')
+          keydown('3')
+          keydown('_')
+
+        it "deletes the current line plus that many following lines", ->
+          expect(editor.getText()).toBe "1\n5\n6\n"
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+  describe "the enter keybinding", ->
+    keydownCodeForEnter = '\r' # 'enter' does not work
+    startingText = "  abc\n  abc\nabcdefg\n"
+
+    describe "from the middle of a line", ->
+      startingCursorPosition = [1, 3]
+
+      describe "as a motion", ->
+        it "acts the same as the + keybinding", ->
+          # do it with + and save the results
+          editor.setText(startingText)
+          editor.setCursorScreenPosition(startingCursorPosition)
+          keydown('+')
+          referenceCursorPosition = editor.getCursorScreenPosition()
+          # do it again with enter and compare the results
+          editor.setText(startingText)
+          editor.setCursorScreenPosition(startingCursorPosition)
+          keydown(keydownCodeForEnter)
+          expect(editor.getCursorScreenPosition()).toEqual referenceCursorPosition
+
+      describe "as a selection", ->
+        it "acts the same as the + keybinding", ->
+          # do it with + and save the results
+          editor.setText(startingText)
+          editor.setCursorScreenPosition(startingCursorPosition)
+          keydown('d')
+          keydown('+')
+          referenceText = editor.getText()
+          referenceCursorPosition = editor.getCursorScreenPosition()
+          # do it again with enter and compare the results
+          editor.setText(startingText)
+          editor.setCursorScreenPosition(startingCursorPosition)
+          keydown('d')
+          keydown(keydownCodeForEnter)
+          expect(editor.getText()).toEqual referenceText
+          expect(editor.getCursorScreenPosition()).toEqual referenceCursorPosition
+
+  describe "the gg keybinding", ->
+    beforeEach ->
+      editor.setText(" 1abc\n 2\n3\n")
+      editor.setCursorScreenPosition([0, 2])
+
+    describe "as a motion", ->
+      describe "in command mode", ->
+        beforeEach ->
+          keydown('g')
+          keydown('g')
+
+        it "moves the cursor to the beginning of the first line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+      describe "in linewise visual mode", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([1, 0])
+          vimState.activateVisualMode('linewise')
+          keydown('g')
+          keydown('g')
+
+        it "selects to the first line in the file", ->
+          expect(editor.getSelectedText()).toBe " 1abc\n 2\n"
+
+        it "moves the cursor to a specified line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+      describe "in characterwise visual mode", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([1, 1])
+          vimState.activateVisualMode()
+          keydown('g')
+          keydown('g')
+
+        it "selects to the first line in the file", ->
+          expect(editor.getSelectedText()).toBe "1abc\n 2"
+
+        it "moves the cursor to a specified line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+
+    describe "as a repeated motion", ->
+      describe "in command mode", ->
+        beforeEach ->
+          keydown('2')
+          keydown('g')
+          keydown('g')
+
+        it "moves the cursor to a specified line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+      describe "in linewise visual motion", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([2, 0])
+          vimState.activateVisualMode('linewise')
+          keydown('2')
+          keydown('g')
+          keydown('g')
+
+        it "selects to a specified line", ->
+          expect(editor.getSelectedText()).toBe " 2\n3\n"
+
+        it "moves the cursor to a specified line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+      describe "in characterwise visual motion", ->
+        beforeEach ->
+          editor.setCursorScreenPosition([2, 0])
+          vimState.activateVisualMode()
+          keydown('2')
+          keydown('g')
+          keydown('g')
+
+        it "selects to a first character of specified line", ->
+          expect(editor.getSelectedText()).toBe "2\n3"
+
+        it "moves the cursor to a specified line", ->
+          expect(editor.getCursorScreenPosition()).toEqual [1, 1]
+
+  describe "the g_ keybinding", ->
+    beforeEach ->
+      editor.setText("1  \n    2  \n 3abc\n ")
+
+    describe "as a motion", ->
+      it "moves the cursor to the last nonblank character", ->
+        editor.setCursorScreenPosition([1, 0])
+        keydown('g')
+        keydown('_')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 4]
+
+      it "will move the cursor to the beginning of the line if necessary", ->
+        editor.setCursorScreenPosition([0, 2])
+        keydown('g')
+        keydown('_')
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    describe "as a repeated motion", ->
+      it "moves the cursor downward and outward", ->
+        editor.setCursorScreenPosition([0, 0])
+        keydown('2')
+        keydown('g')
+        keydown('_')
+        expect(editor.getCursorScreenPosition()).toEqual [1, 4]
+
+    describe "as a selection", ->
+      it "selects the current line excluding whitespace", ->
+        editor.setCursorScreenPosition([1, 2])
+        vimState.activateVisualMode()
+        keydown('2')
+        keydown('g')
+        keydown('_')
+        expect(editor.getSelectedText()).toEqual "  2  \n 3abc"
+
+  describe "the G keybinding", ->
+    beforeEach ->
+      editor.setText("1\n    2\n 3abc\n ")
+      editor.setCursorScreenPosition([0, 2])
+
+    describe "as a motion", ->
+      beforeEach -> keydown('G', shift: true)
+
+      it "moves the cursor to the last line after whitespace", ->
+        expect(editor.getCursorScreenPosition()).toEqual [3, 1]
+
+    describe "as a repeated motion", ->
+      beforeEach ->
+        keydown('2')
+        keydown('G', shift: true)
+
+      it "moves the cursor to a specified line", ->
+        expect(editor.getCursorScreenPosition()).toEqual [1, 4]
+
+    describe "as a selection", ->
+      beforeEach ->
+        editor.setCursorScreenPosition([1, 0])
+        vimState.activateVisualMode()
+        keydown('G', shift: true)
+
+      it "selects to the last line in the file", ->
+        expect(editor.getSelectedText()).toBe "    2\n 3abc\n "
+
+      it "moves the cursor to the last line after whitespace", ->
+        expect(editor.getCursorScreenPosition()).toEqual [3, 1]
+
+  describe "the / keybinding", ->
+    pane = null
+
+    beforeEach ->
+      pane = {activate: jasmine.createSpy("activate")}
+      spyOn(atom.workspace, 'getActivePane').andReturn(pane)
+
+      editor.setText("abc\ndef\nabc\ndef\n")
+      editor.setCursorBufferPosition([0, 0])
+
+    describe "as a motion", ->
+      it "moves the cursor to the specified search pattern", ->
+        keydown('/')
+
+        submitCommandModeInputText 'def'
+
+        expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+        expect(pane.activate).toHaveBeenCalled()
+
+      it "loops back around", ->
+        editor.setCursorBufferPosition([3, 0])
+        keydown('/')
+        submitCommandModeInputText 'def'
+
+        expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+
+      it "uses a valid regex as a regex", ->
+        keydown('/')
+        # Cycle through the 'abc' on the first line with a character pattern
+        submitCommandModeInputText '[abc]'
+        expect(editor.getCursorBufferPosition()).toEqual [0, 1]
+        keydown('n')
+        expect(editor.getCursorBufferPosition()).toEqual [0, 2]
+
+      it "uses an invalid regex as a literal string", ->
+        # Go straight to the literal [abc
+        editor.setText("abc\n[abc]\n")
+        keydown('/')
+        submitCommandModeInputText '[abc'
+        expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+        keydown('n')
+        expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+
+      it "uses ? as a literal string", ->
+        editor.setText("abc\n[a?c?\n")
+        keydown('/')
+        submitCommandModeInputText '?'
+        expect(editor.getCursorBufferPosition()).toEqual [1, 2]
+        keydown('n')
+        expect(editor.getCursorBufferPosition()).toEqual [1, 4]
+
+      it 'works with selection in visual mode', ->
+        editor.setText('one two three')
+        keydown('v')
+        keydown('/')
+        submitCommandModeInputText 'th'
+        expect(editor.getCursorBufferPosition()).toEqual [0, 9]
+        keydown('d')
+        expect(editor.getText()).toBe 'hree'
+
+      it 'extends selection when repeating search in visual mode', ->
+        editor.setText('line1\nline2\nline3')
+        keydown('v')
+        keydown('/')
+        submitCommandModeInputText 'line'
+        {start, end} = editor.getSelectedBufferRange()
+        expect(start.row).toEqual 0
+        expect(end.row).toEqual 1
+        keydown('n')
+        {start, end} = editor.getSelectedBufferRange()
+        expect(start.row).toEqual 0
+        expect(end.row).toEqual 2
+
+      describe "case sensitivity", ->
+        beforeEach ->
+          editor.setText("\nabc\nABC\n")
+          editor.setCursorBufferPosition([0, 0])
+          keydown('/')
+
+        it "works in case sensitive mode", ->
+          submitCommandModeInputText 'ABC'
+          expect(editor.getCursorBufferPosition()).toEqual [2, 0]
+          keydown('n')
+          expect(editor.getCursorBufferPosition()).toEqual [2, 0]
+
+        it "works in case insensitive mode", ->
+          submitCommandModeInputText '\\cAbC'
+          expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+          keydown('n')
+          expect(editor.getCursorBufferPosition()).toEqual [2, 0]
+
+        it "works in case insensitive mode wherever \\c is", ->
+          submitCommandModeInputText 'AbC\\c'
+          expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+          keydown('n')
+          expect(editor.getCursorBufferPosition()).toEqual [2, 0]
+
+        it "uses case insensitive search if useSmartcaseForSearch is true and searching lowercase", ->
+          atom.config.set 'vim-mode.useSmartcaseForSearch', true
+          submitCommandModeInputText 'abc'
+          expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+          keydown('n')
+          expect(editor.getCursorBufferPosition()).toEqual [2, 0]
+
+        it "uses case sensitive search if useSmartcaseForSearch is true and searching uppercase", ->
+          atom.config.set 'vim-mode.useSmartcaseForSearch', true
+          submitCommandModeInputText 'ABC'
+          expect(editor.getCursorBufferPosition()).toEqual [2, 0]
+          keydown('n')
+          expect(editor.getCursorBufferPosition()).toEqual [2, 0]
+
+      describe "repeating", ->
+        it "does nothing with no search history", ->
+          # This tests that no exception is raised
+          keydown('n')
+
+        beforeEach ->
+          keydown('/')
+          submitCommandModeInputText 'def'
+
+        it "repeats previous search with /<enter>", ->
+          keydown('/')
+          submitCommandModeInputText('')
+          expect(editor.getCursorBufferPosition()).toEqual [3, 0]
+
+        it "repeats previous search with //", ->
+          keydown('/')
+          submitCommandModeInputText('/')
+          expect(editor.getCursorBufferPosition()).toEqual [3, 0]
+
+        describe "the n keybinding", ->
+          it "repeats the last search", ->
+            keydown('n')
+            expect(editor.getCursorBufferPosition()).toEqual [3, 0]
+
+        describe "the N keybinding", ->
+          it "repeats the last search backwards", ->
+            editor.setCursorBufferPosition([0, 0])
+            keydown('N', shift: true)
+            expect(editor.getCursorBufferPosition()).toEqual [3, 0]
+            keydown('N', shift: true)
+            expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+
+      describe "composing", ->
+        it "composes with operators", ->
+          keydown('d')
+          keydown('/')
+          submitCommandModeInputText('def')
+          expect(editor.getText()).toEqual "def\nabc\ndef\n"
+
+        it "repeats correctly with operators", ->
+          keydown('d')
+          keydown('/')
+          submitCommandModeInputText('def')
+
+          keydown('.')
+          expect(editor.getText()).toEqual "def\n"
+
+    describe "when reversed as ?", ->
+      it "moves the cursor backwards to the specified search pattern", ->
+        keydown('?')
+        submitCommandModeInputText('def')
+        expect(editor.getCursorBufferPosition()).toEqual [3, 0]
+
+      it "accepts / as a literal search pattern", ->
+        editor.setText("abc\nd/f\nabc\nd/f\n")
+        editor.setCursorBufferPosition([0, 0])
+        keydown('?')
+        submitCommandModeInputText('/')
+        expect(editor.getCursorBufferPosition()).toEqual [3, 1]
+        keydown('?')
+        submitCommandModeInputText('/')
+        expect(editor.getCursorBufferPosition()).toEqual [1, 1]
+
+      describe "repeating", ->
+        beforeEach ->
+          keydown('?')
+          submitCommandModeInputText('def')
+
+        it "repeats previous search as reversed with ?<enter>", ->
+          keydown('?')
+          submitCommandModeInputText('')
+          expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+
+        it "repeats previous search as reversed with ??", ->
+          keydown('?')
+          submitCommandModeInputText('?')
+          expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+
+        describe 'the n keybinding', ->
+          it "repeats the last search backwards", ->
+            editor.setCursorBufferPosition([0, 0])
+            keydown('n')
+            expect(editor.getCursorBufferPosition()).toEqual [3, 0]
+
+        describe 'the N keybinding', ->
+          it "repeats the last search forwards", ->
+            editor.setCursorBufferPosition([0, 0])
+            keydown('N', shift: true)
+            expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+
+    describe "using search history", ->
+      commandEditor = null
+
+      beforeEach ->
+        keydown('/')
+        submitCommandModeInputText('def')
+        expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+
+        keydown('/')
+        submitCommandModeInputText('abc')
+        expect(editor.getCursorBufferPosition()).toEqual [2, 0]
+
+        commandEditor = editor.commandModeInputView.editorElement
+
+      it "allows searching history in the search field", ->
+        keydown('/')
+        atom.commands.dispatch(commandEditor, 'core:move-up')
+        expect(commandEditor.getModel().getText()).toEqual('abc')
+        atom.commands.dispatch(commandEditor, 'core:move-up')
+        expect(commandEditor.getModel().getText()).toEqual('def')
+        atom.commands.dispatch(commandEditor, 'core:move-up')
+        expect(commandEditor.getModel().getText()).toEqual('def')
+
+      it "resets the search field to empty when scrolling back", ->
+        keydown('/')
+        atom.commands.dispatch(commandEditor, 'core:move-up')
+        expect(commandEditor.getModel().getText()).toEqual('abc')
+        atom.commands.dispatch(commandEditor, 'core:move-up')
+        expect(commandEditor.getModel().getText()).toEqual('def')
+        atom.commands.dispatch(commandEditor, 'core:move-down')
+        expect(commandEditor.getModel().getText()).toEqual('abc')
+        atom.commands.dispatch(commandEditor, 'core:move-down')
+        expect(commandEditor.getModel().getText()).toEqual ''
+
+  describe "the * keybinding", ->
+    beforeEach ->
+      editor.setText("abd\n@def\nabd\ndef\n")
+      editor.setCursorBufferPosition([0, 0])
+
+    describe "as a motion", ->
+      it "moves cursor to next occurence of word under cursor", ->
+        keydown("*")
+        expect(editor.getCursorBufferPosition()).toEqual [2, 0]
+
+      it "repeats with the n key", ->
+        keydown("*")
+        expect(editor.getCursorBufferPosition()).toEqual [2, 0]
+        keydown("n")
+        expect(editor.getCursorBufferPosition()).toEqual [0, 0]
+
+      it "doesn't move cursor unless next occurence is the exact word (no partial matches)", ->
+        editor.setText("abc\ndef\nghiabc\njkl\nabcdef")
+        editor.setCursorBufferPosition([0, 0])
+        keydown("*")
+        expect(editor.getCursorBufferPosition()).toEqual [0, 0]
+
+      describe "with words that contain 'non-word' characters", ->
+        it "moves cursor to next occurence of word under cursor", ->
+          editor.setText("abc\n@def\nabc\n@def\n")
+          editor.setCursorBufferPosition([1, 0])
+          keydown("*")
+          expect(editor.getCursorBufferPosition()).toEqual [3, 0]
+
+        it "doesn't move cursor unless next match has exact word ending", ->
+          editor.setText("abc\n@def\nabc\n@def1\n")
+          # FIXME: I suspect there is a bug laying around
+          # Cursor#getEndOfCurrentWordBufferPosition, this function
+          # is returning '@' as a word, instead of returning the whole
+          # word '@def', this behavior is avoided in this test, when we
+          # execute the '*' command when cursor is on character after '@'
+          # (in this particular example, the 'd' char)
+          editor.setCursorBufferPosition([1, 1])
+          keydown("*")
+          expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+
+        # FIXME: This behavior is different from the one found in
+        # vim. This is because the word boundary match in Javascript
+        # ignores starting 'non-word' characters.
+        # e.g.
+        # in Vim:        /\<def\>/.test("@def") => false
+        # in Javascript: /\bdef\b/.test("@def") => true
+        it "moves cursor to the start of valid word char", ->
+          editor.setText("abc\ndef\nabc\n@def\n")
+          editor.setCursorBufferPosition([1, 0])
+          keydown("*")
+          expect(editor.getCursorBufferPosition()).toEqual [3, 1]
+
+      describe "when cursor is on non-word char column", ->
+        it "matches only the non-word char", ->
+          editor.setText("abc\n@def\nabc\n@def\n")
+          editor.setCursorBufferPosition([1, 0])
+          keydown("*")
+          expect(editor.getCursorBufferPosition()).toEqual [3, 0]
+
+      describe "when cursor is not on a word", ->
+        it "does a match with the next word", ->
+          editor.setText("abc\na  @def\n abc\n @def")
+          editor.setCursorBufferPosition([1, 1])
+          keydown("*")
+          expect(editor.getCursorBufferPosition()).toEqual [3, 1]
+
+      describe "when cursor is at EOF", ->
+        it "doesn't try to do any match", ->
+          editor.setText("abc\n@def\nabc\n ")
+          editor.setCursorBufferPosition([3, 0])
+          keydown("*")
+          expect(editor.getCursorBufferPosition()).toEqual [3, 0]
+
+  describe "the hash keybinding", ->
+    describe "as a motion", ->
+      it "moves cursor to previous occurence of word under cursor", ->
+        editor.setText("abc\n@def\nabc\ndef\n")
+        editor.setCursorBufferPosition([2, 1])
+        keydown("#")
+        expect(editor.getCursorBufferPosition()).toEqual [0, 0]
+
+      it "repeats with n", ->
+        editor.setText("abc\n@def\nabc\ndef\nabc\n")
+        editor.setCursorBufferPosition([2, 1])
+        keydown("#")
+        expect(editor.getCursorBufferPosition()).toEqual [0, 0]
+        keydown("n")
+        expect(editor.getCursorBufferPosition()).toEqual [4, 0]
+        keydown("n")
+        expect(editor.getCursorBufferPosition()).toEqual [2, 0]
+
+      it "doesn't move cursor unless next occurence is the exact word (no partial matches)", ->
+        editor.setText("abc\ndef\nghiabc\njkl\nabcdef")
+        editor.setCursorBufferPosition([0, 0])
+        keydown("#")
+        expect(editor.getCursorBufferPosition()).toEqual [0, 0]
+
+      describe "with words that containt 'non-word' characters", ->
+        it "moves cursor to next occurence of word under cursor", ->
+          editor.setText("abc\n@def\nabc\n@def\n")
+          editor.setCursorBufferPosition([3, 0])
+          keydown("#")
+          expect(editor.getCursorBufferPosition()).toEqual [1, 0]
+
+        it "moves cursor to the start of valid word char", ->
+          editor.setText("abc\n@def\nabc\ndef\n")
+          editor.setCursorBufferPosition([3, 0])
+          keydown("#")
+          expect(editor.getCursorBufferPosition()).toEqual [1, 1]
+
+      describe "when cursor is on non-word char column", ->
+        it "matches only the non-word char", ->
+          editor.setText("abc\n@def\nabc\n@def\n")
+          editor.setCursorBufferPosition([1, 0])
+          keydown("*")
+          expect(editor.getCursorBufferPosition()).toEqual [3, 0]
+
+  describe "the H keybinding", ->
+    beforeEach ->
+      editor.setText("1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n")
+      editor.setCursorScreenPosition([8, 0])
+      spyOn(editor.getLastCursor(), 'setScreenPosition')
+
+    it "moves the cursor to the first row if visible", ->
+      spyOn(editor, 'getFirstVisibleScreenRow').andReturn(0)
+      keydown('H', shift: true)
+      expect(editor.getLastCursor().setScreenPosition).toHaveBeenCalledWith([0, 0])
+
+    it "moves the cursor to the first visible row plus offset", ->
+      spyOn(editor, 'getFirstVisibleScreenRow').andReturn(2)
+      keydown('H', shift: true)
+      expect(editor.getLastCursor().setScreenPosition).toHaveBeenCalledWith([4, 0])
+
+    it "respects counts", ->
+      spyOn(editor, 'getFirstVisibleScreenRow').andReturn(0)
+      keydown('3')
+      keydown('H', shift: true)
+      expect(editor.getLastCursor().setScreenPosition).toHaveBeenCalledWith([2, 0])
+
+  describe "the L keybinding", ->
+    beforeEach ->
+      editor.setText("1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n")
+      editor.setCursorScreenPosition([8, 0])
+      spyOn(editor.getLastCursor(), 'setScreenPosition')
+
+    it "moves the cursor to the first row if visible", ->
+      spyOn(editor, 'getLastVisibleScreenRow').andReturn(10)
+      keydown('L', shift: true)
+      expect(editor.getLastCursor().setScreenPosition).toHaveBeenCalledWith([10, 0])
+
+    it "moves the cursor to the first visible row plus offset", ->
+      spyOn(editor, 'getLastVisibleScreenRow').andReturn(6)
+      keydown('L', shift: true)
+      expect(editor.getLastCursor().setScreenPosition).toHaveBeenCalledWith([4, 0])
+
+    it "respects counts", ->
+      spyOn(editor, 'getLastVisibleScreenRow').andReturn(10)
+      keydown('3')
+      keydown('L', shift: true)
+      expect(editor.getLastCursor().setScreenPosition).toHaveBeenCalledWith([8, 0])
+
+  describe "the M keybinding", ->
+    beforeEach ->
+      editor.setText("1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n")
+      editor.setCursorScreenPosition([8, 0])
+      spyOn(editor.getLastCursor(), 'setScreenPosition')
+      spyOn(editor, 'getLastVisibleScreenRow').andReturn(10)
+      spyOn(editor, 'getFirstVisibleScreenRow').andReturn(0)
+
+    it "moves the cursor to the first row if visible", ->
+      keydown('M', shift: true)
+      expect(editor.getLastCursor().setScreenPosition).toHaveBeenCalledWith([5, 0])
+
+  describe 'the mark keybindings', ->
+    beforeEach ->
+      editor.setText('  12\n    34\n56\n')
+      editor.setCursorBufferPosition([0, 1])
+
+    it 'moves to the beginning of the line of a mark', ->
+      editor.setCursorBufferPosition([1, 1])
+      keydown('m')
+      commandModeInputKeydown('a')
+      editor.setCursorBufferPosition([0, 0])
+      keydown('\'')
+      commandModeInputKeydown('a')
+      expect(editor.getCursorBufferPosition()).toEqual [1, 4]
+
+    it 'moves literally to a mark', ->
+      editor.setCursorBufferPosition([1, 1])
+      keydown('m')
+      commandModeInputKeydown('a')
+      editor.setCursorBufferPosition([0, 0])
+      keydown('`')
+      commandModeInputKeydown('a')
+      expect(editor.getCursorBufferPosition()).toEqual [1, 1]
+
+    it 'deletes to a mark by line', ->
+      editor.setCursorBufferPosition([1, 5])
+      keydown('m')
+      commandModeInputKeydown('a')
+      editor.setCursorBufferPosition([0, 0])
+      keydown('d')
+      keydown('\'')
+      commandModeInputKeydown('a')
+      expect(editor.getText()).toEqual '56\n'
+
+    it 'deletes before to a mark literally', ->
+      editor.setCursorBufferPosition([1, 5])
+      keydown('m')
+      commandModeInputKeydown('a')
+      editor.setCursorBufferPosition([0, 1])
+      keydown('d')
+      keydown('`')
+      commandModeInputKeydown('a')
+      expect(editor.getText()).toEqual ' 4\n56\n'
+
+    it 'deletes after to a mark literally', ->
+      editor.setCursorBufferPosition([1, 5])
+      keydown('m')
+      commandModeInputKeydown('a')
+      editor.setCursorBufferPosition([2, 1])
+      keydown('d')
+      keydown('`')
+      commandModeInputKeydown('a')
+      expect(editor.getText()).toEqual '  12\n    36\n'
+
+    it 'moves back to previous', ->
+      editor.setCursorBufferPosition([1, 5])
+      keydown('`')
+      commandModeInputKeydown('`')
+      editor.setCursorBufferPosition([2, 1])
+      keydown('`')
+      commandModeInputKeydown('`')
+      expect(editor.getCursorBufferPosition()).toEqual [1, 5]
+
+  describe 'the f/F keybindings', ->
+    beforeEach ->
+      editor.setText("abcabcabcabc\n")
+      editor.setCursorScreenPosition([0, 0])
+
+    it 'moves to the first specified character it finds', ->
+      keydown('f')
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+    it 'moves backwards to the first specified character it finds', ->
+      editor.setCursorScreenPosition([0, 2])
+      keydown('F', shift: true)
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    it 'respects count forward', ->
+      keydown('2')
+      keydown('f')
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+
+    it 'respects count backward', ->
+      editor.setCursorScreenPosition([0, 6])
+      keydown('2')
+      keydown('F', shift: true)
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    it "doesn't move if the character specified isn't found", ->
+      keydown('f')
+      commandModeInputKeydown('d')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    it "doesn't move if there aren't the specified count of the specified character", ->
+      keydown('1')
+      keydown('0')
+      keydown('f')
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+      # a bug was making this behaviour depend on the count
+      keydown('1')
+      keydown('1')
+      keydown('f')
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+      # and backwards now
+      editor.setCursorScreenPosition([0, 6])
+      keydown('1')
+      keydown('0')
+      keydown('F', shift: true)
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+      keydown('1')
+      keydown('1')
+      keydown('F', shift: true)
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+
+    it "composes with d", ->
+      editor.setCursorScreenPosition([0, 3])
+      keydown('d')
+      keydown('2')
+      keydown('f')
+      commandModeInputKeydown('a')
+      expect(editor.getText()).toEqual 'abcbc\n'
+
+  describe 'the t/T keybindings', ->
+    beforeEach ->
+      editor.setText("abcabcabcabc\n")
+      editor.setCursorScreenPosition([0, 0])
+
+    it 'moves to the character previous to the first specified character it finds', ->
+      keydown('t')
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+      # or stays put when it's already there
+      keydown('t')
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+    it 'moves backwards to the character after the first specified character it finds', ->
+      editor.setCursorScreenPosition([0, 2])
+      keydown('T', shift: true)
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+
+    it 'respects count forward', ->
+      keydown('2')
+      keydown('t')
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+
+    it 'respects count backward', ->
+      editor.setCursorScreenPosition([0, 6])
+      keydown('2')
+      keydown('T', shift: true)
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+
+    it "doesn't move if the character specified isn't found", ->
+      keydown('t')
+      commandModeInputKeydown('d')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    it "doesn't move if there aren't the specified count of the specified character", ->
+      keydown('1')
+      keydown('0')
+      keydown('t')
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+      # a bug was making this behaviour depend on the count
+      keydown('1')
+      keydown('1')
+      keydown('t')
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+      # and backwards now
+      editor.setCursorScreenPosition([0, 6])
+      keydown('1')
+      keydown('0')
+      keydown('T', shift: true)
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+      keydown('1')
+      keydown('1')
+      keydown('T', shift: true)
+      commandModeInputKeydown('a')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+
+    it "composes with d", ->
+      editor.setCursorScreenPosition([0, 3])
+      keydown('d')
+      keydown('2')
+      keydown('t')
+      commandModeInputKeydown('b')
+      expect(editor.getText()).toBe 'abcbcabc\n'
+
+  describe 'the V keybinding', ->
+    beforeEach ->
+      editor.setText("01\n002\n0003\n00004\n000005\n")
+      editor.setCursorScreenPosition([1, 1])
+
+    it "selects down a line", ->
+      keydown('V', shift: true)
+      keydown('j')
+      keydown('j')
+      expect(editor.getSelectedText()).toBe "002\n0003\n00004\n"
+
+    it "selects up a line", ->
+      keydown('V', shift: true)
+      keydown('k')
+      expect(editor.getSelectedText()).toBe "01\n002\n"
+
+  describe 'the ; and , keybindings', ->
+    beforeEach ->
+      editor.setText("abcabcabcabc\n")
+      editor.setCursorScreenPosition([0, 0])
+
+    it "repeat f in same direction", ->
+      keydown('f')
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+      keydown(';')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+      keydown(';')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 8]
+
+    it "repeat F in same direction", ->
+      editor.setCursorScreenPosition([0, 10])
+      keydown('F', shift: true)
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 8]
+      keydown(';')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+      keydown(';')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+    it "repeat f in opposite direction", ->
+      editor.setCursorScreenPosition([0, 6])
+      keydown('f')
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 8]
+      keydown(',')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+      keydown(',')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+    it "repeat F in opposite direction", ->
+      editor.setCursorScreenPosition([0, 4])
+      keydown('F', shift: true)
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+      keydown(',')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+      keydown(',')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 8]
+
+    it "alternate repeat f in same direction and reverse", ->
+      keydown('f')
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+      keydown(';')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+      keydown(',')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+    it "alternate repeat F in same direction and reverse", ->
+      editor.setCursorScreenPosition([0, 10])
+      keydown('F', shift: true)
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 8]
+      keydown(';')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+      keydown(',')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 8]
+
+    it "repeat t in same direction", ->
+      keydown('t')
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+      keydown(';')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 4]
+
+    it "repeat T in same direction", ->
+      editor.setCursorScreenPosition([0, 10])
+      keydown('T', shift: true)
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 9]
+      keydown(';')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+
+    it "repeat t in opposite direction first, and then reverse", ->
+      editor.setCursorScreenPosition([0, 3])
+      keydown('t')
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 4]
+      keydown(',')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 3]
+      keydown(';')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 4]
+
+    it "repeat T in opposite direction first, and then reverse", ->
+      editor.setCursorScreenPosition([0, 4])
+      keydown('T', shift: true)
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 3]
+      keydown(',')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 4]
+      keydown(';')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 3]
+
+    it "repeat with count in same direction", ->
+      editor.setCursorScreenPosition([0, 0])
+      keydown('f')
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+      keydown('2')
+      keydown(';')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 8]
+
+    it "repeat with count in reverse direction", ->
+      editor.setCursorScreenPosition([0, 6])
+      keydown('f')
+      commandModeInputKeydown('c')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 8]
+      keydown('2')
+      keydown(',')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+  describe 'the % motion', ->
+    beforeEach ->
+      editor.setText("( ( ) )--{ text in here; and a function call(with parameters) }\n")
+      editor.setCursorScreenPosition([0, 0])
+
+    it 'matches the correct parenthesis', ->
+      keydown('%')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+
+    it 'matches the correct brace', ->
+      editor.setCursorScreenPosition([0, 9])
+      keydown('%')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 62]
+
+    it 'composes correctly with d', ->
+      editor.setCursorScreenPosition([0, 9])
+      keydown('d')
+      keydown('%')
+      expect(editor.getText()).toEqual  "( ( ) )--\n"
+
+    it 'moves correctly when composed with v going forward', ->
+      keydown('v')
+      keydown('h')
+      keydown('%')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 7]
+
+    it 'moves correctly when composed with v going backward', ->
+      editor.setCursorScreenPosition([0, 5])
+      keydown('v')
+      keydown('%')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    it 'it moves appropriately to find the nearest matching action', ->
+      editor.setCursorScreenPosition([0, 3])
+      keydown('%')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+      expect(editor.getText()).toEqual  "( ( ) )--{ text in here; and a function call(with parameters) }\n"
+
+    it 'it moves appropriately to find the nearest matching action', ->
+      editor.setCursorScreenPosition([0, 26])
+      keydown('%')
+      expect(editor.getCursorScreenPosition()).toEqual [0, 60]
+      expect(editor.getText()).toEqual  "( ( ) )--{ text in here; and a function call(with parameters) }\n"
+
+    it "finds matches across multiple lines", ->
+      editor.setText("...(\n...)")
+      editor.setCursorScreenPosition([0, 0])
+      keydown("%")
+      expect(editor.getCursorScreenPosition()).toEqual([1, 3])
+
+    it "does not affect search history", ->
+      keydown('/')
+      submitCommandModeInputText 'func'
+      expect(editor.getCursorBufferPosition()).toEqual [0, 31]
+      keydown('%')
+      expect(editor.getCursorBufferPosition()).toEqual [0, 60]
+      keydown('n')
+      expect(editor.getCursorBufferPosition()).toEqual [0, 31]
+
+  describe "scrolling screen and keeping cursor in the same screen position", ->
+    beforeEach ->
+      editor.setText([0...80].join("\n"))
+      editor.setHeight(20 * 10)
+      editor.setLineHeightInPixels(10)
+      editor.setScrollTop(40 * 10)
+      editor.setCursorBufferPosition([42, 0])
+
+    describe "the ctrl-u keybinding", ->
+      it "moves the screen down by half screen size and keeps cursor onscreen", ->
+        keydown('u', ctrl: true)
+        expect(editor.getScrollTop()).toEqual 300
+        expect(editor.getCursorBufferPosition()).toEqual [32, 0]
+
+      it "selects on visual mode", ->
+        editor.setCursorBufferPosition([42, 1])
+        vimState.activateVisualMode()
+        keydown('u', ctrl: true)
+        expect(editor.getSelectedText()).toEqual [32..42].join("\n")
+
+      it "selects on linewise mode", ->
+        vimState.activateVisualMode('linewise')
+        keydown('u', ctrl: true)
+        expect(editor.getSelectedText()).toEqual [32..42].join("\n").concat("\n")
+
+    describe "the ctrl-b keybinding", ->
+      it "moves screen up one page", ->
+        keydown('b', ctrl: true)
+        expect(editor.getScrollTop()).toEqual 200
+        expect(editor.getCursorScreenPosition()).toEqual [22, 0]
+
+      it "selects on visual mode", ->
+        editor.setCursorBufferPosition([42, 1])
+        vimState.activateVisualMode()
+        keydown('b', ctrl: true)
+        expect(editor.getSelectedText()).toEqual [22..42].join("\n")
+
+      it "selects on linewise mode", ->
+        vimState.activateVisualMode('linewise')
+        keydown('b', ctrl: true)
+        expect(editor.getSelectedText()).toEqual [22..42].join("\n").concat("\n")
+
+
+    describe "the ctrl-d keybinding", ->
+      it "moves the screen down by half screen size and keeps cursor onscreen", ->
+        keydown('d', ctrl: true)
+        expect(editor.getScrollTop()).toEqual 500
+        expect(editor.getCursorBufferPosition()).toEqual [52, 0]
+
+      it "selects on visual mode", ->
+        editor.setCursorBufferPosition([42, 1])
+        vimState.activateVisualMode()
+        keydown('d', ctrl: true)
+        expect(editor.getSelectedText()).toEqual [42..52].join("\n").slice(1, -1)
+
+      it "selects on linewise mode", ->
+        vimState.activateVisualMode('linewise')
+        keydown('d', ctrl: true)
+        expect(editor.getSelectedText()).toEqual [42..52].join("\n").concat("\n")
+
+    describe "the ctrl-f keybinding", ->
+      it "moves screen down one page", ->
+        keydown('f', ctrl: true)
+        expect(editor.getScrollTop()).toEqual 600
+        expect(editor.getCursorScreenPosition()).toEqual [62, 0]
+
+      it "selects on visual mode", ->
+        editor.setCursorBufferPosition([42, 1])
+        vimState.activateVisualMode()
+        keydown('f', ctrl: true)
+        expect(editor.getSelectedText()).toEqual [42..62].join("\n").slice(1, -1)
+
+      it "selects on linewise mode", ->
+        vimState.activateVisualMode('linewise')
+        keydown('f', ctrl: true)
+        expect(editor.getSelectedText()).toEqual [42..62].join("\n").concat("\n")
diff --git a/atom/packages/vim-mode/spec/operators-spec.coffee b/atom/packages/vim-mode/spec/operators-spec.coffee
new file mode 100644 (file)
index 0000000..a41edb3
--- /dev/null
@@ -0,0 +1,1748 @@
+helpers = require './spec-helper'
+settings = require '../lib/settings'
+
+describe "Operators", ->
+  [editor, editorElement, vimState] = []
+
+  beforeEach ->
+    vimMode = atom.packages.loadPackage('vim-mode')
+    vimMode.activateResources()
+
+    helpers.getEditorElement (element) ->
+      editorElement = element
+      editor = editorElement.getModel()
+      vimState = editorElement.vimState
+      vimState.activateCommandMode()
+      vimState.resetCommandMode()
+
+  keydown = (key, options={}) ->
+    options.element ?= editorElement
+    helpers.keydown(key, options)
+
+  commandModeInputKeydown = (key, opts = {}) ->
+    editor.commandModeInputView.editorElement.getModel().setText(key)
+
+  describe "cancelling operations", ->
+    it "does not throw an error even if no operation is pending", ->
+      # cancel operation pushes an empty input operation
+      # doing this without a pending operation throws an exception
+      expect(-> vimState.pushOperations(new Input(''))).toThrow()
+
+      # make sure commandModeInputView is created
+      keydown('/')
+      expect(vimState.isOperatorPending()).toBe true
+      editor.commandModeInputView.viewModel.cancel()
+
+      expect(vimState.isOperatorPending()).toBe false
+      expect(-> editor.commandModeInputView.viewModel.cancel()).not.toThrow()
+
+  describe "the x keybinding", ->
+    describe "on a line with content", ->
+      describe "without vim-mode.wrapLeftRightMotion", ->
+        beforeEach ->
+          editor.setText("abc\n012345\n\nxyz")
+          editor.setCursorScreenPosition([1, 4])
+
+        it "deletes a character", ->
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n01235\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 4]
+          expect(vimState.getRegister('"').text).toBe '4'
+
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n0123\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 3]
+          expect(vimState.getRegister('"').text).toBe '5'
+
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n012\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 2]
+          expect(vimState.getRegister('"').text).toBe '3'
+
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n01\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 1]
+          expect(vimState.getRegister('"').text).toBe '2'
+
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n0\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+          expect(vimState.getRegister('"').text).toBe '1'
+
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+          expect(vimState.getRegister('"').text).toBe '0'
+
+        it "deletes multiple characters with a count", ->
+          keydown('2')
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n0123\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 3]
+          expect(vimState.getRegister('"').text).toBe '45'
+
+          editor.setCursorScreenPosition([0, 1])
+          keydown('3')
+          keydown('x')
+          expect(editor.getText()).toBe 'a\n0123\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+          expect(vimState.getRegister('"').text).toBe 'bc'
+
+      describe "with vim-mode.wrapLeftRightMotion", ->
+        beforeEach ->
+          editor.setText("abc\n012345\n\nxyz")
+          editor.setCursorScreenPosition([1, 4])
+          atom.config.set('vim-mode.wrapLeftRightMotion', true)
+
+        it "deletes a character", ->
+          # copy of the earlier test because wrapLeftRightMotion should not affect it
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n01235\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 4]
+          expect(vimState.getRegister('"').text).toBe '4'
+
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n0123\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 3]
+          expect(vimState.getRegister('"').text).toBe '5'
+
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n012\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 2]
+          expect(vimState.getRegister('"').text).toBe '3'
+
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n01\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 1]
+          expect(vimState.getRegister('"').text).toBe '2'
+
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n0\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+          expect(vimState.getRegister('"').text).toBe '1'
+
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+          expect(vimState.getRegister('"').text).toBe '0'
+
+        it "deletes multiple characters and newlines with a count", ->
+          atom.config.set('vim-mode.wrapLeftRightMotion', true)
+          keydown('2')
+          keydown('x')
+          expect(editor.getText()).toBe 'abc\n0123\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [1, 3]
+          expect(vimState.getRegister('"').text).toBe '45'
+
+          editor.setCursorScreenPosition([0, 1])
+          keydown('3')
+          keydown('x')
+          expect(editor.getText()).toBe 'a0123\n\nxyz'
+          expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+          expect(vimState.getRegister('"').text).toBe 'bc\n'
+
+          keydown('7')
+          keydown('x')
+          expect(editor.getText()).toBe 'ayz'
+          expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+          expect(vimState.getRegister('"').text).toBe '0123\n\nx'
+
+
+    describe "on an empty line", ->
+      beforeEach ->
+        editor.setText("abc\n012345\n\nxyz")
+        editor.setCursorScreenPosition([2, 0])
+
+      it "deletes nothing on an empty line when vim-mode.wrapLeftRightMotion is false", ->
+        atom.config.set('vim-mode.wrapLeftRightMotion', false)
+        keydown('x')
+        expect(editor.getText()).toBe "abc\n012345\n\nxyz"
+        expect(editor.getCursorScreenPosition()).toEqual [2, 0]
+
+      it "deletes an empty line when vim-mode.wrapLeftRightMotion is true", ->
+        atom.config.set('vim-mode.wrapLeftRightMotion', true)
+        keydown('x')
+        expect(editor.getText()).toBe "abc\n012345\nxyz"
+        expect(editor.getCursorScreenPosition()).toEqual [2, 0]
+
+
+  describe "the X keybinding", ->
+    describe "on a line with content", ->
+      beforeEach ->
+        editor.setText("ab\n012345")
+        editor.setCursorScreenPosition([1, 2])
+
+      it "deletes a character", ->
+        keydown('X', shift: true)
+        expect(editor.getText()).toBe 'ab\n02345'
+        expect(editor.getCursorScreenPosition()).toEqual [1, 1]
+        expect(vimState.getRegister('"').text).toBe '1'
+
+        keydown('X', shift: true)
+        expect(editor.getText()).toBe 'ab\n2345'
+        expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+        expect(vimState.getRegister('"').text).toBe '0'
+
+        keydown('X', shift: true)
+        expect(editor.getText()).toBe 'ab\n2345'
+        expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+        expect(vimState.getRegister('"').text).toBe '0'
+
+        atom.config.set('vim-mode.wrapLeftRightMotion', true)
+        keydown('X', shift: true)
+        expect(editor.getText()).toBe 'ab2345'
+        expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+        expect(vimState.getRegister('"').text).toBe '\n'
+
+
+    describe "on an empty line", ->
+      beforeEach ->
+        editor.setText("012345\n\nabcdef")
+        editor.setCursorScreenPosition([1, 0])
+
+      it "deletes nothing when vim-mode.wrapLeftRightMotion is false", ->
+        atom.config.set('vim-mode.wrapLeftRightMotion', false)
+        keydown('X', shift: true)
+        expect(editor.getText()).toBe "012345\n\nabcdef"
+        expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+      it "deletes the newline when wrapLeftRightMotion is true", ->
+        atom.config.set('vim-mode.wrapLeftRightMotion', true)
+        keydown('X', shift: true)
+        expect(editor.getText()).toBe "012345\nabcdef"
+        expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+
+  describe "the s keybinding", ->
+    beforeEach ->
+      editor.setText('012345')
+      editor.setCursorScreenPosition([0, 1])
+
+    it "deletes the character to the right and enters insert mode", ->
+      keydown('s')
+      expect(editorElement.classList.contains('insert-mode')).toBe(true)
+      expect(editor.getText()).toBe '02345'
+      expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+      expect(vimState.getRegister('"').text).toBe '1'
+
+    it "is repeatable", ->
+      editor.setCursorScreenPosition([0, 0])
+      keydown('3')
+      keydown('s')
+      editor.insertText("ab")
+      keydown('escape')
+      expect(editor.getText()).toBe 'ab345'
+      editor.setCursorScreenPosition([0, 2])
+      keydown('.')
+      expect(editor.getText()).toBe 'abab'
+
+    it "is undoable", ->
+      editor.setCursorScreenPosition([0, 0])
+      keydown('3')
+      keydown('s')
+      editor.insertText("ab")
+      keydown('escape')
+      expect(editor.getText()).toBe 'ab345'
+      keydown('u')
+      expect(editor.getText()).toBe '012345'
+      expect(editor.getSelectedText()).toBe ''
+
+    describe "in visual mode", ->
+      beforeEach ->
+        keydown('v')
+        editor.selectRight()
+        keydown('s')
+
+      it "deletes the selected characters and enters insert mode", ->
+        expect(editorElement.classList.contains('insert-mode')).toBe(true)
+        expect(editor.getText()).toBe '0345'
+        expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+        expect(vimState.getRegister('"').text).toBe '12'
+
+  describe "the S keybinding", ->
+    beforeEach ->
+      editor.setText("12345\nabcde\nABCDE")
+      editor.setCursorScreenPosition([1, 3])
+
+    it "deletes the entire line and enters insert mode", ->
+      keydown('S', shift: true)
+      expect(editorElement.classList.contains('insert-mode')).toBe(true)
+      expect(editor.getText()).toBe "12345\n\nABCDE"
+      expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+      expect(vimState.getRegister('"').text).toBe "abcde\n"
+      expect(vimState.getRegister('"').type).toBe 'linewise'
+
+    it "is repeatable", ->
+      keydown('S', shift: true)
+      editor.insertText("abc")
+      keydown 'escape'
+      expect(editor.getText()).toBe "12345\nabc\nABCDE"
+      editor.setCursorScreenPosition([2, 3])
+      keydown '.'
+      expect(editor.getText()).toBe "12345\nabc\nabc\n"
+
+    it "is undoable", ->
+      keydown('S', shift: true)
+      editor.insertText("abc")
+      keydown 'escape'
+      expect(editor.getText()).toBe "12345\nabc\nABCDE"
+      keydown 'u'
+      expect(editor.getText()).toBe "12345\nabcde\nABCDE"
+      expect(editor.getSelectedText()).toBe ''
+
+    it "works when the cursor's goal column is greater than its current column", ->
+      editor.setText("\n12345")
+      editor.setCursorBufferPosition([1, Infinity])
+      editor.moveUp()
+      keydown("S", shift: true)
+      expect(editor.getText()).toBe("\n12345")
+
+    # Can't be tested without setting grammar of test buffer
+    xit "respects indentation", ->
+
+  describe "the d keybinding", ->
+    it "enters operator-pending mode", ->
+      keydown('d')
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(true)
+      expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+    describe "when followed by a d", ->
+      it "deletes the current line and exits operator-pending mode", ->
+        editor.setText("12345\nabcde\n\nABCDE")
+        editor.setCursorScreenPosition([1, 1])
+
+        keydown('d')
+        keydown('d')
+
+        expect(editor.getText()).toBe "12345\n\nABCDE"
+        expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+        expect(vimState.getRegister('"').text).toBe "abcde\n"
+        expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+        expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+      it "deletes the last line", ->
+        editor.setText("12345\nabcde\nABCDE")
+        editor.setCursorScreenPosition([2, 1])
+
+        keydown('d')
+        keydown('d')
+
+        expect(editor.getText()).toBe "12345\nabcde\n"
+        expect(editor.getCursorScreenPosition()).toEqual [2, 0]
+
+      it "leaves the cursor on the first nonblank character", ->
+        editor.setText("12345\n  abcde\n")
+        editor.setCursorScreenPosition([0, 4])
+
+        keydown('d')
+        keydown('d')
+
+        expect(editor.getText()).toBe "  abcde\n"
+        expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+    describe "undo behavior", ->
+      beforeEach ->
+        editor.setText("12345\nabcde\nABCDE\nQWERT")
+        editor.setCursorScreenPosition([1, 1])
+
+        keydown('d')
+        keydown('2')
+        keydown('d')
+
+        keydown('u')
+
+      it "undoes both lines", ->
+        expect(editor.getText()).toBe "12345\nabcde\nABCDE\nQWERT"
+        expect(editor.getSelectedText()).toBe ''
+
+    describe "when followed by a w", ->
+      it "deletes the next word until the end of the line and exits operator-pending mode", ->
+        editor.setText("abcd efg\nabc")
+        editor.setCursorScreenPosition([0, 5])
+
+        keydown('d')
+        keydown('w')
+
+        # Incompatibility with VIM. In vim, `w` behaves differently as an
+        # operator than as a motion; it stops at the end of a line.expect(editor.getText()).toBe "abcd abc"
+        expect(editor.getText()).toBe "abcd abc"
+        expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+
+        expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+        expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+      it "deletes to the beginning of the next word", ->
+        editor.setText('abcd efg')
+        editor.setCursorScreenPosition([0, 2])
+
+        keydown('d')
+        keydown('w')
+
+        expect(editor.getText()).toBe 'abefg'
+        expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+        editor.setText('one two three four')
+        editor.setCursorScreenPosition([0, 0])
+
+        keydown('d')
+        keydown('3')
+        keydown('w')
+
+        expect(editor.getText()).toBe 'four'
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    describe "when followed by an iw", ->
+      it "deletes the containing word", ->
+        editor.setText("12345 abcde ABCDE")
+        editor.setCursorScreenPosition([0, 9])
+
+        keydown('d')
+        expect(editorElement.classList.contains('operator-pending-mode')).toBe(true)
+        keydown('i')
+        keydown('w')
+
+        expect(editor.getText()).toBe "12345  ABCDE"
+        expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+        expect(vimState.getRegister('"').text).toBe "abcde"
+        expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+        expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    describe "when followed by an j", ->
+      beforeEach ->
+        originalText = "12345\nabcde\nABCDE"
+        editor.setText(originalText)
+
+        describe "on the beginning of the file", ->
+          editor.setCursorScreenPosition([0, 0])
+          it "deletes the next two lines", ->
+            keydown('d')
+            keydown('j')
+            expect(editor.getText()).toBe("ABCDE")
+
+        describe "on the end of the file", ->
+          editor.setCursorScreenPosition([4, 2])
+          it "deletes nothing", ->
+            keydown('d')
+            keydown('j')
+            expect(editor.getText()).toBe(originalText)
+
+        describe "on the middle of second line", ->
+          editor.setCursorScreenPosition([2, 1])
+          it "deletes the last two lines", ->
+            keydown('d')
+            keydown('j')
+            expect(editor.getText()).toBe("12345")
+
+    describe "when followed by an k", ->
+      beforeEach ->
+        originalText = "12345\nabcde\nABCDE"
+        editor.setText(originalText)
+
+        describe "on the end of the file", ->
+          editor.setCursorScreenPosition([4, 2])
+          it "deletes the bottom two lines", ->
+            keydown('d')
+            keydown('k')
+            expect(editor.getText()).toBe("ABCDE")
+
+        describe "on the beginning of the file", ->
+          editor.setCursorScreenPosition([0, 0])
+          it "deletes nothing", ->
+            keydown('d')
+            keydown('k')
+            expect(editor.getText()).toBe(originalText)
+
+        describe "when on the middle of second line", ->
+          editor.setCursorScreenPosition([2, 1])
+          it "deletes the first two lines", ->
+            keydown('d')
+            keydown('k')
+            expect(editor.getText()).toBe("12345")
+
+    describe "when followed by a G", ->
+      beforeEach ->
+        originalText = "12345\nabcde\nABCDE"
+        editor.setText(originalText)
+
+      describe "on the beginning of the second line", ->
+        it "deletes the bottom two lines", ->
+          editor.setCursorScreenPosition([1, 0])
+          keydown('d')
+          keydown('G', shift: true)
+          expect(editor.getText()).toBe("12345\n")
+
+      describe "on the middle of the second line", ->
+        it "deletes the bottom two lines", ->
+          editor.setCursorScreenPosition([1, 2])
+          keydown('d')
+          keydown('G', shift: true)
+          expect(editor.getText()).toBe("12345\n")
+
+    describe "when followed by a goto line G", ->
+      beforeEach ->
+        originalText = "12345\nabcde\nABCDE"
+        editor.setText(originalText)
+
+      describe "on the beginning of the second line", ->
+        it "deletes the bottom two lines", ->
+          editor.setCursorScreenPosition([1, 0])
+          keydown('d')
+          keydown('2')
+          keydown('G', shift: true)
+          expect(editor.getText()).toBe("12345\nABCDE")
+
+      describe "on the middle of the second line", ->
+        it "deletes the bottom two lines", ->
+          editor.setCursorScreenPosition([1, 2])
+          keydown('d')
+          keydown('2')
+          keydown('G', shift: true)
+          expect(editor.getText()).toBe("12345\nABCDE")
+
+    describe "when followed by a t)", ->
+      describe "with the entire line yanked before", ->
+        beforeEach ->
+          editor.setText("test (xyz)")
+          editor.setCursorScreenPosition([0, 6])
+
+        it "deletes until the closing parenthesis", ->
+          keydown('y')
+          keydown('y')
+          keydown('d')
+          keydown('t')
+          commandModeInputKeydown(')')
+          expect(editor.getText()).toBe("test ()")
+          expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+
+    describe "with multiple cursors", ->
+      it "deletes each selection", ->
+        editor.setText("abcd\n1234\nABCD\n")
+        editor.setCursorBufferPosition([0, 1])
+        editor.addCursorAtBufferPosition([1, 2])
+        editor.addCursorAtBufferPosition([2, 3])
+
+        keydown('d')
+        keydown('e')
+
+        expect(editor.getText()).toBe "a\n12\nABC"
+        expect(editor.getCursorBufferPositions()).toEqual [
+          [0, 0],
+          [1, 1],
+          [2, 2],
+        ]
+
+      it "doesn't delete empty selections", ->
+        editor.setText("abcd\nabc\nabd")
+        editor.setCursorBufferPosition([0, 0])
+        editor.addCursorAtBufferPosition([1, 0])
+        editor.addCursorAtBufferPosition([2, 0])
+
+        keydown('d')
+        keydown('t')
+        commandModeInputKeydown('d')
+
+        expect(editor.getText()).toBe "d\nabc\nd"
+        expect(editor.getCursorBufferPositions()).toEqual [
+          [0, 0],
+          [1, 0],
+          [2, 0],
+        ]
+
+  describe "the D keybinding", ->
+    beforeEach ->
+      editor.getBuffer().setText("012\n")
+      editor.setCursorScreenPosition([0, 1])
+      keydown('D', shift: true)
+
+    it "deletes the contents until the end of the line", ->
+      expect(editor.getText()).toBe "0\n"
+
+  describe "the c keybinding", ->
+    beforeEach ->
+      editor.setText("12345\nabcde\nABCDE")
+
+    describe "when followed by a c", ->
+      it "deletes the current line and enters insert mode", ->
+        editor.setCursorScreenPosition([1, 1])
+
+        keydown('c')
+        keydown('c')
+
+        expect(editor.getText()).toBe "12345\n\nABCDE"
+        expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+        expect(editorElement.classList.contains('command-mode')).toBe(false)
+        expect(editorElement.classList.contains('insert-mode')).toBe(true)
+
+      describe "when the cursor is on the last line", ->
+        it "deletes the line's content and enters insert mode on the last line", ->
+          editor.setCursorScreenPosition([2, 1])
+
+          keydown('c')
+          keydown('c')
+
+          expect(editor.getText()).toBe "12345\nabcde\n\n"
+          expect(editor.getCursorScreenPosition()).toEqual [2, 0]
+          expect(editorElement.classList.contains('command-mode')).toBe(false)
+          expect(editorElement.classList.contains('insert-mode')).toBe(true)
+
+      describe "when the cursor is on the only line", ->
+        it "deletes the line's content and enters insert mode", ->
+          editor.setText("12345")
+          editor.setCursorScreenPosition([0, 2])
+
+          keydown('c')
+          keydown('c')
+
+          expect(editor.getText()).toBe "\n"
+          expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+          expect(editorElement.classList.contains('command-mode')).toBe(false)
+          expect(editorElement.classList.contains('insert-mode')).toBe(true)
+
+    describe "when followed by i w", ->
+      it "undo's and redo's completely", ->
+        editor.setCursorScreenPosition([1, 1])
+
+        keydown('c')
+        keydown('i')
+        keydown('w')
+        expect(editor.getText()).toBe "12345\n\nABCDE"
+        expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+        expect(editorElement.classList.contains('insert-mode')).toBe(true)
+
+        # Just cannot get "typing" to work correctly in test.
+        editor.setText("12345\nfg\nABCDE")
+        keydown('escape')
+        expect(editorElement.classList.contains('command-mode')).toBe(true)
+        expect(editor.getText()).toBe "12345\nfg\nABCDE"
+
+        keydown('u')
+        expect(editor.getText()).toBe "12345\nabcde\nABCDE"
+        keydown('r', ctrl: true)
+        expect(editor.getText()).toBe "12345\nfg\nABCDE"
+
+    describe "when followed by a w", ->
+      it "changes the word", ->
+        editor.setText("word1 word2 word3")
+        editor.setCursorBufferPosition([0, "word1 w".length])
+
+        keydown("c")
+        keydown("w")
+        keydown("escape")
+
+        expect(editor.getText()).toBe "word1 w word3"
+
+    describe "when followed by a G", ->
+      beforeEach ->
+        originalText = "12345\nabcde\nABCDE"
+        editor.setText(originalText)
+
+      describe "on the beginning of the second line", ->
+        it "deletes the bottom two lines", ->
+          editor.setCursorScreenPosition([1, 0])
+          keydown('c')
+          keydown('G', shift: true)
+          keydown('escape')
+          expect(editor.getText()).toBe("12345\n\n")
+
+      describe "on the middle of the second line", ->
+        it "deletes the bottom two lines", ->
+          editor.setCursorScreenPosition([1, 2])
+          keydown('c')
+          keydown('G', shift: true)
+          keydown('escape')
+          expect(editor.getText()).toBe("12345\n\n")
+
+    describe "when followed by a goto line G", ->
+      beforeEach ->
+        editor.setText "12345\nabcde\nABCDE"
+
+      describe "on the beginning of the second line", ->
+        it "deletes all the text on the line", ->
+          editor.setCursorScreenPosition([1, 0])
+          keydown('c')
+          keydown('2')
+          keydown('G', shift: true)
+          keydown('escape')
+          expect(editor.getText()).toBe("12345\n\nABCDE")
+
+      describe "on the middle of the second line", ->
+        it "deletes all the text on the line", ->
+          editor.setCursorScreenPosition([1, 2])
+          keydown('c')
+          keydown('2')
+          keydown('G', shift: true)
+          keydown('escape')
+          expect(editor.getText()).toBe("12345\n\nABCDE")
+
+  describe "the C keybinding", ->
+    beforeEach ->
+      editor.getBuffer().setText("012\n")
+      editor.setCursorScreenPosition([0, 1])
+      keydown('C', shift: true)
+
+    it "deletes the contents until the end of the line and enters insert mode", ->
+      expect(editor.getText()).toBe "0\n"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+      expect(editorElement.classList.contains('command-mode')).toBe(false)
+      expect(editorElement.classList.contains('insert-mode')).toBe(true)
+
+  describe "the y keybinding", ->
+    beforeEach ->
+      editor.getBuffer().setText("012 345\nabc\n")
+      editor.setCursorScreenPosition([0, 4])
+
+    describe "when selected lines in visual linewise mode", ->
+      beforeEach ->
+        keydown('V', shift: true)
+        keydown('j')
+        keydown('y')
+
+      it "is in linewise motion", ->
+        expect(vimState.getRegister('"').type).toEqual "linewise"
+
+      it "saves the lines to the default register", ->
+        expect(vimState.getRegister('"').text).toBe "012 345\nabc\n"
+
+      it "places the cursor at the beginning of the selection", ->
+        expect(editor.getCursorBufferPositions()).toEqual([[0, 0]])
+
+    describe "when followed by a second y ", ->
+      beforeEach ->
+        keydown('y')
+        keydown('y')
+
+      it "saves the line to the default register", ->
+        expect(vimState.getRegister('"').text).toBe "012 345\n"
+
+      it "leaves the cursor at the starting position", ->
+        expect(editor.getCursorScreenPosition()).toEqual [0, 4]
+
+    describe "when useClipboardAsDefaultRegister enabled", ->
+      it "writes to clipboard", ->
+        atom.config.set 'vim-mode.useClipboardAsDefaultRegister', true
+        keydown('y')
+        keydown('y')
+        expect(atom.clipboard.read()).toBe '012 345\n'
+
+    describe "when followed with a repeated y", ->
+      beforeEach ->
+        keydown('y')
+        keydown('2')
+        keydown('y')
+
+      it "copies n lines, starting from the current", ->
+        expect(vimState.getRegister('"').text).toBe "012 345\nabc\n"
+
+      it "leaves the cursor at the starting position", ->
+        expect(editor.getCursorScreenPosition()).toEqual [0, 4]
+
+    describe "with a register", ->
+      beforeEach ->
+        keydown('"')
+        keydown('a')
+        keydown('y')
+        keydown('y')
+
+      it "saves the line to the a register", ->
+        expect(vimState.getRegister('a').text).toBe "012 345\n"
+
+      it "appends the line to the A register", ->
+        keydown('"')
+        keydown('A', shift: true)
+        keydown('y')
+        keydown('y')
+        expect(vimState.getRegister('a').text).toBe "012 345\n012 345\n"
+
+    describe "with a forward motion", ->
+      beforeEach ->
+        keydown('y')
+        keydown('e')
+
+      it "saves the selected text to the default register", ->
+        expect(vimState.getRegister('"').text).toBe '345'
+
+      it "leaves the cursor at the starting position", ->
+        expect(editor.getCursorScreenPosition()).toEqual [0, 4]
+
+      it "does not yank when motion fails", ->
+        keydown('y')
+        keydown('t')
+        commandModeInputKeydown('x')
+        expect(vimState.getRegister('"').text).toBe '345'
+
+    describe "with a text object", ->
+      it "moves the cursor to the beginning of the text object", ->
+        editor.setCursorBufferPosition([0, 5])
+        keydown("y")
+        keydown("i")
+        keydown("w")
+        expect(editor.getCursorBufferPositions()).toEqual([[0, 4]])
+
+    describe "with a left motion", ->
+      beforeEach ->
+        keydown('y')
+        keydown('h')
+
+        it "saves the left letter to the default register", ->
+          expect(vimState.getRegister('"').text).toBe " "
+
+        it "moves the cursor position to the left", ->
+          expect(editor.getCursorScreenPosition()).toEqual [0, 3]
+
+    describe "with a down motion", ->
+      beforeEach ->
+        keydown 'y'
+        keydown 'j'
+
+      it "saves both full lines to the default register", ->
+        expect(vimState.getRegister('"').text).toBe "012 345\nabc\n"
+
+      it "leaves the cursor at the starting position", ->
+        expect(editor.getCursorScreenPosition()).toEqual [0, 4]
+
+    describe "when followed by a G", ->
+      beforeEach ->
+        originalText = "12345\nabcde\nABCDE"
+        editor.setText(originalText)
+
+      describe "on the beginning of the second line", ->
+        it "deletes the bottom two lines", ->
+          editor.setCursorScreenPosition([1, 0])
+          keydown('y')
+          keydown('G', shift: true)
+          keydown('P', shift: true)
+          expect(editor.getText()).toBe("12345\nabcde\nABCDE\nabcde\nABCDE")
+
+      describe "on the middle of the second line", ->
+        it "deletes the bottom two lines", ->
+          editor.setCursorScreenPosition([1, 2])
+          keydown('y')
+          keydown('G', shift: true)
+          keydown('P', shift: true)
+          expect(editor.getText()).toBe("12345\nabcde\nABCDE\nabcde\nABCDE")
+
+    describe "when followed by a goto line G", ->
+      beforeEach ->
+        originalText = "12345\nabcde\nABCDE"
+        editor.setText(originalText)
+
+      describe "on the beginning of the second line", ->
+        it "deletes the bottom two lines", ->
+          editor.setCursorScreenPosition([1, 0])
+          keydown('y')
+          keydown('2')
+          keydown('G', shift: true)
+          keydown('P', shift: true)
+          expect(editor.getText()).toBe("12345\nabcde\nabcde\nABCDE")
+
+      describe "on the middle of the second line", ->
+        it "deletes the bottom two lines", ->
+          editor.setCursorScreenPosition([1, 2])
+          keydown('y')
+          keydown('2')
+          keydown('G', shift: true)
+          keydown('P', shift: true)
+          expect(editor.getText()).toBe("12345\nabcde\nabcde\nABCDE")
+
+    describe "with multiple cursors", ->
+      it "moves each cursor and copies the last selection's text", ->
+        editor.setText "  abcd\n  1234"
+        editor.setCursorBufferPosition([0, 0])
+        editor.addCursorAtBufferPosition([1, 5])
+
+        keydown("y")
+        keydown("^")
+
+        expect(vimState.getRegister('"').text).toBe '123'
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 0], [1, 2]]
+
+  describe "the yy keybinding", ->
+    describe "on a single line file", ->
+      beforeEach ->
+        editor.getBuffer().setText "exclamation!\n"
+        editor.setCursorScreenPosition [0, 0]
+
+      it "copies the entire line and pastes it correctly", ->
+        keydown('y')
+        keydown('y')
+        keydown('p')
+
+        expect(vimState.getRegister('"').text).toBe "exclamation!\n"
+        expect(editor.getText()).toBe "exclamation!\nexclamation!\n"
+
+    describe "on a single line file with no newline", ->
+      beforeEach ->
+        editor.getBuffer().setText "no newline!"
+        editor.setCursorScreenPosition [0, 0]
+
+      it "copies the entire line and pastes it correctly", ->
+        keydown('y')
+        keydown('y')
+        keydown('p')
+
+        expect(vimState.getRegister('"').text).toBe "no newline!\n"
+        expect(editor.getText()).toBe "no newline!\nno newline!"
+
+      it "copies the entire line and pastes it respecting count and new lines", ->
+        keydown('y')
+        keydown('y')
+        keydown('2')
+        keydown('p')
+
+        expect(vimState.getRegister('"').text).toBe "no newline!\n"
+        expect(editor.getText()).toBe "no newline!\nno newline!\nno newline!"
+
+  describe "the Y keybinding", ->
+    beforeEach ->
+      editor.getBuffer().setText "012 345\nabc\n"
+      editor.setCursorScreenPosition [0, 4]
+
+    it "saves the line to the default register", ->
+      keydown('Y', shift: true)
+
+      expect(vimState.getRegister('"').text).toBe "012 345\n"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 4]
+
+  describe "the p keybinding", ->
+    describe "with character contents", ->
+      beforeEach ->
+        editor.getBuffer().setText "012\n"
+        editor.setCursorScreenPosition [0, 0]
+        vimState.setRegister('"', text: '345')
+        vimState.setRegister('a', text: 'a')
+        atom.clipboard.write "clip"
+
+      describe "from the default register", ->
+        beforeEach -> keydown('p')
+
+        it "inserts the contents", ->
+          expect(editor.getText()).toBe "034512\n"
+          expect(editor.getCursorScreenPosition()).toEqual [0, 3]
+
+      describe "when useClipboardAsDefaultRegister enabled", ->
+        it "inserts contents from clipboard", ->
+          atom.config.set 'vim-mode.useClipboardAsDefaultRegister', true
+          keydown('p')
+          expect(editor.getText()).toBe "0clip12\n"
+
+      describe "from a specified register", ->
+        beforeEach ->
+          keydown('"')
+          keydown('a')
+          keydown('p')
+
+        it "inserts the contents of the 'a' register", ->
+          expect(editor.getText()).toBe "0a12\n"
+          expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+
+      describe "at the end of a line", ->
+        it "inserts before the current line's newline", ->
+          editor.setText("abcde\none two three")
+          editor.setCursorScreenPosition([1, 4])
+
+          keydown 'd'
+          keydown '$'
+          keydown 'k'
+          keydown '$'
+          keydown 'p'
+
+          expect(editor.getText()).toBe "abcdetwo three\none "
+
+      describe "with a selection", ->
+        beforeEach ->
+          editor.selectRight()
+          keydown('p')
+
+        it "replaces the current selection", ->
+          expect(editor.getText()).toBe "34512\n"
+          expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+    describe "with linewise contents", ->
+      describe "on a single line", ->
+        beforeEach ->
+          editor.getBuffer().setText("012")
+          editor.setCursorScreenPosition([0, 1])
+          vimState.setRegister('"', text: " 345\n", type: 'linewise')
+
+        it "inserts the contents of the default register", ->
+          keydown('p')
+
+          expect(editor.getText()).toBe "012\n 345"
+          expect(editor.getCursorScreenPosition()).toEqual [1, 1]
+
+        it "replaces the current selection", ->
+          editor.selectRight()
+          keydown('p')
+
+          expect(editor.getText()).toBe "0 345\n2"
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+      describe "on multiple lines", ->
+        beforeEach ->
+          editor.getBuffer().setText("012\n 345")
+          vimState.setRegister('"', text: " 456\n", type: 'linewise')
+
+        it "inserts the contents of the default register at middle line", ->
+          editor.setCursorScreenPosition([0, 1])
+          keydown('p')
+
+          expect(editor.getText()).toBe "012\n 456\n 345"
+          expect(editor.getCursorScreenPosition()).toEqual [1, 1]
+
+        it "inserts the contents of the default register at end of line", ->
+          editor.setCursorScreenPosition([1, 1])
+          keydown('p')
+
+          expect(editor.getText()).toBe "012\n 345\n 456"
+          expect(editor.getCursorScreenPosition()).toEqual [2, 1]
+
+    describe "with multiple linewise contents", ->
+      beforeEach ->
+        editor.getBuffer().setText("012\nabc")
+        editor.setCursorScreenPosition([1, 0])
+        vimState.setRegister('"', text: " 345\n 678\n", type: 'linewise')
+        keydown('p')
+
+      it "inserts the contents of the default register", ->
+        expect(editor.getText()).toBe "012\nabc\n 345\n 678"
+        expect(editor.getCursorScreenPosition()).toEqual [2, 1]
+
+    describe "pasting twice", ->
+      beforeEach ->
+        editor.setText("12345\nabcde\nABCDE\nQWERT")
+        editor.setCursorScreenPosition([1, 1])
+        vimState.setRegister('"', text: '123')
+        keydown('2')
+        keydown('p')
+
+      it "inserts the same line twice", ->
+        expect(editor.getText()).toBe "12345\nab123123cde\nABCDE\nQWERT"
+
+      describe "when undone", ->
+        beforeEach ->
+          keydown('u')
+
+        it "removes both lines", ->
+          expect(editor.getText()).toBe "12345\nabcde\nABCDE\nQWERT"
+
+  describe "the P keybinding", ->
+    describe "with character contents", ->
+      beforeEach ->
+        editor.getBuffer().setText("012\n")
+        editor.setCursorScreenPosition([0, 0])
+        vimState.setRegister('"', text: '345')
+        vimState.setRegister('a', text: 'a')
+        keydown('P', shift: true)
+
+      it "inserts the contents of the default register above", ->
+        expect(editor.getText()).toBe "345012\n"
+        expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+  describe "the O keybinding", ->
+    beforeEach ->
+      spyOn(editor, 'shouldAutoIndent').andReturn(true)
+      spyOn(editor, 'autoIndentBufferRow').andCallFake (line) ->
+        editor.indent()
+
+      editor.getBuffer().setText("  abc\n  012\n")
+      editor.setCursorScreenPosition([1, 1])
+
+    it "switches to insert and adds a newline above the current one", ->
+      keydown('O', shift: true)
+      expect(editor.getText()).toBe "  abc\n  \n  012\n"
+      expect(editor.getCursorScreenPosition()).toEqual [1, 2]
+      expect(editorElement.classList.contains('insert-mode')).toBe(true)
+
+    it "is repeatable", ->
+      editor.getBuffer().setText("  abc\n  012\n    4spaces\n")
+      editor.setCursorScreenPosition([1, 1])
+      keydown('O', shift: true)
+      editor.insertText "def"
+      keydown 'escape'
+      expect(editor.getText()).toBe "  abc\n  def\n  012\n    4spaces\n"
+      editor.setCursorScreenPosition([1, 1])
+      keydown '.'
+      expect(editor.getText()).toBe "  abc\n  def\n  def\n  012\n    4spaces\n"
+      editor.setCursorScreenPosition([4, 1])
+      keydown '.'
+      expect(editor.getText()).toBe "  abc\n  def\n  def\n  012\n    def\n    4spaces\n"
+
+    it "is undoable", ->
+      keydown('O', shift: true)
+      editor.insertText "def"
+      keydown 'escape'
+      expect(editor.getText()).toBe "  abc\n  def\n  012\n"
+      keydown 'u'
+      expect(editor.getText()).toBe "  abc\n  012\n"
+
+  describe "the o keybinding", ->
+    beforeEach ->
+      spyOn(editor, 'shouldAutoIndent').andReturn(true)
+      spyOn(editor, 'autoIndentBufferRow').andCallFake (line) ->
+        editor.indent()
+
+      editor.getBuffer().setText("abc\n  012\n")
+      editor.setCursorScreenPosition([1, 2])
+
+    it "switches to insert and adds a newline above the current one", ->
+      keydown('o')
+      expect(editor.getText()).toBe "abc\n  012\n  \n"
+      expect(editorElement.classList.contains('insert-mode')).toBe(true)
+      expect(editor.getCursorScreenPosition()).toEqual [2, 2]
+
+    # This works in practice, but the editor doesn't respect the indentation
+    # rules without a syntax grammar. Need to set the editor's grammar
+    # to fix it.
+    xit "is repeatable", ->
+      editor.getBuffer().setText("  abc\n  012\n    4spaces\n")
+      editor.setCursorScreenPosition([1, 1])
+      keydown('o')
+      editor.insertText "def"
+      keydown 'escape'
+      expect(editor.getText()).toBe "  abc\n  012\n  def\n    4spaces\n"
+      keydown '.'
+      expect(editor.getText()).toBe "  abc\n  012\n  def\n  def\n    4spaces\n"
+      editor.setCursorScreenPosition([4, 1])
+      keydown '.'
+      expect(editor.getText()).toBe "  abc\n  def\n  def\n  012\n    4spaces\n    def\n"
+
+    it "is undoable", ->
+      keydown('o')
+      editor.insertText "def"
+      keydown 'escape'
+      expect(editor.getText()).toBe "abc\n  012\n  def\n"
+      keydown 'u'
+      expect(editor.getText()).toBe "abc\n  012\n"
+
+  describe "the a keybinding", ->
+    beforeEach ->
+      editor.getBuffer().setText("012\n")
+
+    describe "at the beginning of the line", ->
+      beforeEach ->
+        editor.setCursorScreenPosition([0, 0])
+        keydown('a')
+
+      it "switches to insert mode and shifts to the right", ->
+        expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+        expect(editorElement.classList.contains('insert-mode')).toBe(true)
+
+    describe "at the end of the line", ->
+      beforeEach ->
+        editor.setCursorScreenPosition([0, 3])
+        keydown('a')
+
+      it "doesn't linewrap", ->
+        expect(editor.getCursorScreenPosition()).toEqual [0, 3]
+
+  describe "the A keybinding", ->
+    beforeEach ->
+      editor.getBuffer().setText("11\n22\n")
+
+    describe "at the beginning of a line", ->
+      it "switches to insert mode at the end of the line", ->
+        editor.setCursorScreenPosition([0, 0])
+        keydown('A', shift: true)
+
+        expect(editorElement.classList.contains('insert-mode')).toBe(true)
+        expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+      it "repeats always as insert at the end of the line", ->
+        editor.setCursorScreenPosition([0, 0])
+        keydown('A', shift: true)
+        editor.insertText("abc")
+        keydown 'escape'
+        editor.setCursorScreenPosition([1, 0])
+        keydown '.'
+
+        expect(editor.getText()).toBe "11abc\n22abc\n"
+        expect(editorElement.classList.contains('insert-mode')).toBe(false)
+        expect(editor.getCursorScreenPosition()).toEqual [1, 4]
+
+  describe "the I keybinding", ->
+    beforeEach ->
+      editor.getBuffer().setText("11\n  22\n")
+
+    describe "at the end of a line", ->
+      it "switches to insert mode at the beginning of the line", ->
+        editor.setCursorScreenPosition([0, 2])
+        keydown('I', shift: true)
+
+        expect(editorElement.classList.contains('insert-mode')).toBe(true)
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+      it "switches to insert mode after leading whitespace", ->
+        editor.setCursorScreenPosition([1, 4])
+        keydown('I', shift: true)
+
+        expect(editorElement.classList.contains('insert-mode')).toBe(true)
+        expect(editor.getCursorScreenPosition()).toEqual [1, 2]
+
+      it "repeats always as insert at the first character of the line", ->
+        editor.setCursorScreenPosition([0, 2])
+        keydown('I', shift: true)
+        editor.insertText("abc")
+        keydown 'escape'
+        expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+        editor.setCursorScreenPosition([1, 4])
+        keydown '.'
+
+        expect(editor.getText()).toBe "abc11\n  abc22\n"
+        expect(editorElement.classList.contains('insert-mode')).toBe(false)
+        expect(editor.getCursorScreenPosition()).toEqual [1, 4]
+
+  describe "the J keybinding", ->
+    beforeEach ->
+      editor.getBuffer().setText("012\n    456\n")
+      editor.setCursorScreenPosition([0, 1])
+
+    describe "without repeating", ->
+      beforeEach -> keydown('J', shift: true)
+
+      it "joins the contents of the current line with the one below it", ->
+        expect(editor.getText()).toBe "012 456\n"
+
+    describe "with repeating", ->
+      beforeEach ->
+        editor.setText("12345\nabcde\nABCDE\nQWERT")
+        editor.setCursorScreenPosition([1, 1])
+        keydown('2')
+        keydown('J', shift: true)
+
+      describe "undo behavior", ->
+        beforeEach -> keydown('u')
+
+        it "handles repeats", ->
+          expect(editor.getText()).toBe "12345\nabcde\nABCDE\nQWERT"
+
+  describe "the > keybinding", ->
+    beforeEach ->
+      editor.setText("12345\nabcde\nABCDE")
+
+    describe "on the last line", ->
+      beforeEach ->
+        editor.setCursorScreenPosition([2, 0])
+
+      describe "when followed by a >", ->
+        beforeEach ->
+          keydown('>')
+          keydown('>')
+
+        it "indents the current line", ->
+          expect(editor.getText()).toBe "12345\nabcde\n  ABCDE"
+          expect(editor.getCursorScreenPosition()).toEqual [2, 2]
+
+    describe "on the first line", ->
+      beforeEach ->
+        editor.setCursorScreenPosition([0, 0])
+
+      describe "when followed by a >", ->
+        beforeEach ->
+          keydown('>')
+          keydown('>')
+
+        it "indents the current line", ->
+          expect(editor.getText()).toBe "  12345\nabcde\nABCDE"
+          expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+      describe "when followed by a repeating >", ->
+        beforeEach ->
+          keydown('3')
+          keydown('>')
+          keydown('>')
+
+        it "indents multiple lines at once", ->
+          expect(editor.getText()).toBe "  12345\n  abcde\n  ABCDE"
+          expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+        describe "undo behavior", ->
+          beforeEach -> keydown('u')
+
+          it "outdents all three lines", ->
+            expect(editor.getText()).toBe "12345\nabcde\nABCDE"
+
+    describe "in visual mode", ->
+      beforeEach ->
+        editor.setCursorScreenPosition([0, 0])
+        keydown('v', shift: true)
+        keydown('>')
+
+      it "indents the current line and remains in visual mode", ->
+        expect(editorElement.classList.contains('visual-mode')).toBe(true)
+        expect(editor.getText()).toBe "  12345\nabcde\nABCDE"
+        expect(editor.getSelectedText()).toBe "  12345\n"
+
+      it "allows repeating the operation", ->
+        keydown("escape")
+        keydown(".")
+        expect(editorElement.classList.contains('command-mode')).toBe(true)
+        expect(editor.getText()).toBe "    12345\nabcde\nABCDE"
+
+  describe "the < keybinding", ->
+    beforeEach ->
+      editor.setText("  12345\n  abcde\nABCDE")
+      editor.setCursorScreenPosition([0, 0])
+
+    describe "when followed by a <", ->
+      beforeEach ->
+        keydown('<')
+        keydown('<')
+
+      it "indents the current line", ->
+        expect(editor.getText()).toBe "12345\n  abcde\nABCDE"
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+    describe "when followed by a repeating <", ->
+      beforeEach ->
+        keydown('2')
+        keydown('<')
+        keydown('<')
+
+      it "indents multiple lines at once", ->
+        expect(editor.getText()).toBe "12345\nabcde\nABCDE"
+        expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+
+      describe "undo behavior", ->
+        beforeEach -> keydown('u')
+
+        it "indents both lines", ->
+          expect(editor.getText()).toBe "  12345\n  abcde\nABCDE"
+
+    describe "in visual mode", ->
+      beforeEach ->
+        keydown('v', shift: true)
+        keydown('<')
+
+      it "indents the current line and remains in visual mode", ->
+        expect(editorElement.classList.contains('visual-mode')).toBe(true)
+        expect(editor.getText()).toBe "12345\n  abcde\nABCDE"
+        expect(editor.getSelectedText()).toBe "12345\n"
+
+  describe "the = keybinding", ->
+    oldGrammar = []
+
+    beforeEach ->
+      waitsForPromise ->
+        atom.packages.activatePackage('language-javascript')
+
+      oldGrammar = editor.getGrammar()
+      editor.setText("foo\n  bar\n  baz")
+      editor.setCursorScreenPosition([1, 0])
+
+    describe "when used in a scope that supports auto-indent", ->
+      beforeEach ->
+        jsGrammar = atom.grammars.grammarForScopeName('source.js')
+        editor.setGrammar(jsGrammar)
+
+      afterEach ->
+        editor.setGrammar(oldGrammar)
+
+      describe "when followed by a =", ->
+        beforeEach ->
+          keydown('=')
+          keydown('=')
+
+        it "indents the current line", ->
+          expect(editor.indentationForBufferRow(1)).toBe 0
+
+      describe "when followed by a repeating =", ->
+        beforeEach ->
+          keydown('2')
+          keydown('=')
+          keydown('=')
+
+        it "autoindents multiple lines at once", ->
+          expect(editor.getText()).toBe "foo\nbar\nbaz"
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+        describe "undo behavior", ->
+          beforeEach -> keydown('u')
+
+          it "indents both lines", ->
+            expect(editor.getText()).toBe "foo\n  bar\n  baz"
+
+  describe "the . keybinding", ->
+    beforeEach ->
+      editor.setText("12\n34\n56\n78")
+      editor.setCursorScreenPosition([0, 0])
+
+    it "repeats the last operation", ->
+      keydown '2'
+      keydown 'd'
+      keydown 'd'
+      keydown '.'
+
+      expect(editor.getText()).toBe ""
+
+    it "composes with motions", ->
+      keydown 'd'
+      keydown 'd'
+      keydown '2'
+      keydown '.'
+
+      expect(editor.getText()).toBe "78"
+
+  describe "the r keybinding", ->
+    beforeEach ->
+      editor.setText("12\n34\n\n")
+      editor.setCursorBufferPosition([0, 0])
+      editor.addCursorAtBufferPosition([1, 0])
+
+    it "replaces a single character", ->
+      keydown('r')
+      commandModeInputKeydown('x')
+      expect(editor.getText()).toBe 'x2\nx4\n\n'
+
+    it "does nothing when cancelled", ->
+      keydown('r')
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(true)
+      keydown('escape')
+      expect(editor.getText()).toBe '12\n34\n\n'
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "replaces a single character with a line break", ->
+      keydown('r')
+      atom.commands.dispatch(editor.commandModeInputView.editorElement, 'core:confirm')
+      expect(editor.getText()).toBe '\n2\n\n4\n\n'
+      expect(editor.getCursorBufferPositions()).toEqual [[1, 0], [3, 0]]
+
+    it "composes properly with motions", ->
+      keydown('2')
+      keydown('r')
+      commandModeInputKeydown('x')
+      expect(editor.getText()).toBe 'xx\nxx\n\n'
+
+    it "does nothing on an empty line", ->
+      editor.setCursorBufferPosition([2, 0])
+      keydown('r')
+      commandModeInputKeydown('x')
+      expect(editor.getText()).toBe '12\n34\n\n'
+
+    it "does nothing if asked to replace more characters than there are on a line", ->
+      keydown('3')
+      keydown('r')
+      commandModeInputKeydown('x')
+      expect(editor.getText()).toBe '12\n34\n\n'
+
+    describe "when in visual mode", ->
+      beforeEach ->
+        keydown('v')
+        keydown('e')
+
+      it "replaces the entire selection with the given character", ->
+        keydown('r')
+        commandModeInputKeydown('x')
+        expect(editor.getText()).toBe 'xx\nxx\n\n'
+
+      it "leaves the cursor at the beginning of the selection", ->
+        keydown('r')
+        commandModeInputKeydown('x')
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 0], [1, 0]]
+
+  describe 'the m keybinding', ->
+    beforeEach ->
+      editor.setText('12\n34\n56\n')
+      editor.setCursorBufferPosition([0, 1])
+
+    it 'marks a position', ->
+      keydown('m')
+      commandModeInputKeydown('a')
+      expect(vimState.getMark('a')).toEqual [0, 1]
+
+  describe 'the ~ keybinding', ->
+    beforeEach ->
+      editor.setText('aBc\nXyZ')
+      editor.setCursorBufferPosition([0, 0])
+      editor.addCursorAtBufferPosition([1, 0])
+
+    it 'toggles the case and moves right', ->
+      keydown('~')
+      expect(editor.getText()).toBe 'ABc\nxyZ'
+      expect(editor.getCursorScreenPositions()).toEqual [[0, 1], [1, 1]]
+
+      keydown('~')
+      expect(editor.getText()).toBe 'Abc\nxYZ'
+      expect(editor.getCursorScreenPositions()).toEqual [[0, 2], [1, 2]]
+
+      keydown('~')
+      expect(editor.getText()).toBe 'AbC\nxYz'
+      expect(editor.getCursorScreenPositions()).toEqual [[0, 2], [1, 2]]
+
+    it 'takes a count', ->
+      keydown('4')
+      keydown('~')
+
+      expect(editor.getText()).toBe 'AbC\nxYz'
+      expect(editor.getCursorScreenPositions()).toEqual [[0, 2], [1, 2]]
+
+    describe "in visual mode", ->
+      it "toggles the case of the selected text", ->
+        editor.setCursorBufferPosition([0, 0])
+        keydown("V", shift: true)
+        keydown("~")
+        expect(editor.getText()).toBe 'AbC\nXyZ'
+
+    describe "with g and motion", ->
+      it "toggles the case of text", ->
+        editor.setCursorBufferPosition([0, 0])
+        keydown("g")
+        keydown("~")
+        keydown("2")
+        keydown("l")
+        expect(editor.getText()).toBe 'Abc\nXyZ'
+
+  describe 'the U keybinding', ->
+    beforeEach ->
+      editor.setText('aBc\nXyZ')
+      editor.setCursorBufferPosition([0, 0])
+
+    it "makes text uppercase with g and motion", ->
+      keydown("g")
+      keydown("U", shift: true)
+      keydown("l")
+      expect(editor.getText()).toBe 'ABc\nXyZ'
+
+      keydown("g")
+      keydown("U", shift: true)
+      keydown("e")
+      expect(editor.getText()).toBe 'ABC\nXyZ'
+
+      editor.setCursorBufferPosition([1, 0])
+      keydown("g")
+      keydown("U", shift: true)
+      keydown("$")
+      expect(editor.getText()).toBe 'ABC\nXYZ'
+      expect(editor.getCursorScreenPosition()).toEqual [1, 2]
+
+    it "makes the selected text uppercase in visual mode", ->
+      keydown("V", shift: true)
+      keydown("U", shift: true)
+      expect(editor.getText()).toBe 'ABC\nXyZ'
+
+  describe 'the u keybinding', ->
+    beforeEach ->
+      editor.setText('aBc\nXyZ')
+      editor.setCursorBufferPosition([0, 0])
+
+    it "makes text lowercase with g and motion", ->
+      keydown("g")
+      keydown("u")
+      keydown("$")
+      expect(editor.getText()).toBe 'abc\nXyZ'
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+    it "makes the selected text lowercase in visual mode", ->
+      keydown("V", shift: true)
+      keydown("u")
+      expect(editor.getText()).toBe 'abc\nXyZ'
+
+  describe "the i keybinding", ->
+    beforeEach ->
+      editor.setText('123\n4567')
+      editor.setCursorBufferPosition([0, 0])
+      editor.addCursorAtBufferPosition([1, 0])
+
+    it "allows undoing an entire batch of typing", ->
+      keydown 'i'
+      editor.insertText("abcXX")
+      editor.backspace()
+      editor.backspace()
+      keydown 'escape'
+      expect(editor.getText()).toBe "abc123\nabc4567"
+
+      keydown 'i'
+      editor.insertText "d"
+      editor.insertText "e"
+      editor.insertText "f"
+      keydown 'escape'
+      expect(editor.getText()).toBe "abdefc123\nabdefc4567"
+
+      keydown 'u'
+      expect(editor.getText()).toBe "abc123\nabc4567"
+
+      keydown 'u'
+      expect(editor.getText()).toBe "123\n4567"
+
+    it "allows repeating typing", ->
+      keydown 'i'
+      editor.insertText("abcXX")
+      editor.backspace()
+      editor.backspace()
+      keydown 'escape'
+      expect(editor.getText()).toBe "abc123\nabc4567"
+
+      keydown '.'
+      expect(editor.getText()).toBe "ababcc123\nababcc4567"
+
+      keydown '.'
+      expect(editor.getText()).toBe "abababccc123\nabababccc4567"
+
+    describe 'with nonlinear input', ->
+      beforeEach ->
+        editor.setText ''
+        editor.setCursorBufferPosition [0, 0]
+
+      it 'deals with auto-matched brackets', ->
+        keydown 'i'
+        # this sequence simulates what the bracket-matcher package does
+        # when the user types (a)b<enter>
+        editor.insertText '()'
+        editor.moveLeft()
+        editor.insertText 'a'
+        editor.moveRight()
+        editor.insertText 'b\n'
+        keydown 'escape'
+        expect(editor.getCursorScreenPosition()).toEqual [1,  0]
+
+        keydown '.'
+        expect(editor.getText()).toBe '(a)b\n(a)b\n'
+        expect(editor.getCursorScreenPosition()).toEqual [2,  0]
+
+      it 'deals with autocomplete', ->
+        keydown 'i'
+        # this sequence simulates autocompletion of 'add' to 'addFoo'
+        editor.insertText 'a'
+        editor.insertText 'd'
+        editor.insertText 'd'
+        editor.setTextInBufferRange [[0, 0], [0, 3]], 'addFoo'
+        keydown 'escape'
+        expect(editor.getCursorScreenPosition()).toEqual [0,  5]
+        expect(editor.getText()).toBe 'addFoo'
+
+        keydown '.'
+        expect(editor.getText()).toBe 'addFoaddFooo'
+        expect(editor.getCursorScreenPosition()).toEqual [0,  10]
+
+  describe 'the a keybinding', ->
+    beforeEach ->
+      editor.setText('')
+      editor.setCursorBufferPosition([0, 0])
+
+    it "can be undone in one go", ->
+      keydown 'a'
+      editor.insertText("abc")
+      keydown 'escape'
+      expect(editor.getText()).toBe "abc"
+      keydown 'u'
+      expect(editor.getText()).toBe ""
+
+    it "repeats correctly", ->
+      keydown 'a'
+      editor.insertText("abc")
+      keydown 'escape'
+      expect(editor.getText()).toBe "abc"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+      keydown '.'
+      expect(editor.getText()).toBe "abcabc"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+
+  describe "the ctrl-a/ctrl-x keybindings", ->
+    beforeEach ->
+      atom.config.set 'vim-mode.numberRegex', settings.config.numberRegex.default
+      editor.setText('123\nab45\ncd-67ef\nab-5\na-bcdef')
+      editor.setCursorBufferPosition [0, 0]
+      editor.addCursorAtBufferPosition [1, 0]
+      editor.addCursorAtBufferPosition [2, 0]
+      editor.addCursorAtBufferPosition [3, 3]
+      editor.addCursorAtBufferPosition [4, 0]
+
+    describe "increasing numbers", ->
+      it "increases the next number", ->
+        keydown('a', ctrl: true)
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 2], [1, 3], [2, 4], [3, 3], [4, 0]]
+        expect(editor.getText()).toBe '124\nab46\ncd-66ef\nab-4\na-bcdef'
+
+      it "repeats with .", ->
+        keydown 'a', ctrl: true
+        keydown '.'
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 2], [1, 3], [2, 4], [3, 3], [4, 0]]
+        expect(editor.getText()).toBe '125\nab47\ncd-65ef\nab-3\na-bcdef'
+
+      it "can have a count", ->
+        keydown '5'
+        keydown 'a', ctrl: true
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 2], [1, 3], [2, 4], [3, 2], [4, 0]]
+        expect(editor.getText()).toBe '128\nab50\ncd-62ef\nab0\na-bcdef'
+
+      it "can make a negative number positive, change number of digits", ->
+        keydown '9'
+        keydown '9'
+        keydown 'a', ctrl: true
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 2], [1, 4], [2, 3], [3, 3], [4, 0]]
+        expect(editor.getText()).toBe '222\nab144\ncd32ef\nab94\na-bcdef'
+
+      it "does nothing when cursor is after the number", ->
+        editor.setCursorBufferPosition [2, 5]
+        keydown 'a', ctrl: true
+        expect(editor.getCursorBufferPositions()).toEqual [[2, 5]]
+        expect(editor.getText()).toBe '123\nab45\ncd-67ef\nab-5\na-bcdef'
+
+      it "does nothing on an empty line", ->
+        editor.setText('\n')
+        editor.setCursorBufferPosition [0, 0]
+        editor.addCursorAtBufferPosition [1, 0]
+        keydown 'a', ctrl: true
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 0], [1, 0]]
+        expect(editor.getText()).toBe '\n'
+
+      it "honours the vim-mode:numberRegex setting", ->
+        editor.setText('123\nab45\ncd -67ef\nab-5\na-bcdef')
+        editor.setCursorBufferPosition [0, 0]
+        editor.addCursorAtBufferPosition [1, 0]
+        editor.addCursorAtBufferPosition [2, 0]
+        editor.addCursorAtBufferPosition [3, 3]
+        editor.addCursorAtBufferPosition [4, 0]
+        atom.config.set('vim-mode.numberRegex', '(?:\\B-)?[0-9]+')
+        keydown('a', ctrl: true)
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 2], [1, 3], [2, 5], [3, 3], [4, 0]]
+        expect(editor.getText()).toBe '124\nab46\ncd -66ef\nab-6\na-bcdef'
+
+    describe "decreasing numbers", ->
+      it "decreases the next number", ->
+        keydown('x', ctrl: true)
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 2], [1, 3], [2, 4], [3, 3], [4, 0]]
+        expect(editor.getText()).toBe '122\nab44\ncd-68ef\nab-6\na-bcdef'
+
+      it "repeats with .", ->
+        keydown 'x', ctrl: true
+        keydown '.'
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 2], [1, 3], [2, 4], [3, 3], [4, 0]]
+        expect(editor.getText()).toBe '121\nab43\ncd-69ef\nab-7\na-bcdef'
+
+      it "can have a count", ->
+        keydown '5'
+        keydown 'x', ctrl: true
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 2], [1, 3], [2, 4], [3, 4], [4, 0]]
+        expect(editor.getText()).toBe '118\nab40\ncd-72ef\nab-10\na-bcdef'
+
+      it "can make a positive number negative, change number of digits", ->
+        keydown '9'
+        keydown '9'
+        keydown 'x', ctrl: true
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 1], [1, 4], [2, 5], [3, 5], [4, 0]]
+        expect(editor.getText()).toBe '24\nab-54\ncd-166ef\nab-104\na-bcdef'
+
+      it "does nothing when cursor is after the number", ->
+        editor.setCursorBufferPosition [2, 5]
+        keydown 'x', ctrl: true
+        expect(editor.getCursorBufferPositions()).toEqual [[2, 5]]
+        expect(editor.getText()).toBe '123\nab45\ncd-67ef\nab-5\na-bcdef'
+
+      it "does nothing on an empty line", ->
+        editor.setText('\n')
+        editor.setCursorBufferPosition [0, 0]
+        editor.addCursorAtBufferPosition [1, 0]
+        keydown 'x', ctrl: true
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 0], [1, 0]]
+        expect(editor.getText()).toBe '\n'
+
+      it "honours the vim-mode:numberRegex setting", ->
+        editor.setText('123\nab45\ncd -67ef\nab-5\na-bcdef')
+        editor.setCursorBufferPosition [0, 0]
+        editor.addCursorAtBufferPosition [1, 0]
+        editor.addCursorAtBufferPosition [2, 0]
+        editor.addCursorAtBufferPosition [3, 3]
+        editor.addCursorAtBufferPosition [4, 0]
+        atom.config.set('vim-mode.numberRegex', '(?:\\B-)?[0-9]+')
+        keydown('x', ctrl: true)
+        expect(editor.getCursorBufferPositions()).toEqual [[0, 2], [1, 3], [2, 5], [3, 3], [4, 0]]
+        expect(editor.getText()).toBe '122\nab44\ncd -68ef\nab-4\na-bcdef'
diff --git a/atom/packages/vim-mode/spec/prefixes-spec.coffee b/atom/packages/vim-mode/spec/prefixes-spec.coffee
new file mode 100644 (file)
index 0000000..e782d20
--- /dev/null
@@ -0,0 +1,148 @@
+helpers = require './spec-helper'
+
+describe "Prefixes", ->
+  [editor, editorElement, vimState] = []
+
+  beforeEach ->
+    vimMode = atom.packages.loadPackage('vim-mode')
+    vimMode.activateResources()
+
+    helpers.getEditorElement (element) ->
+      editorElement = element
+      editor = editorElement.getModel()
+      vimState = editorElement.vimState
+      vimState.activateCommandMode()
+      vimState.resetCommandMode()
+
+  keydown = (key, options={}) ->
+    options.element ?= editorElement
+    helpers.keydown(key, options)
+
+  describe "Repeat", ->
+    describe "with operations", ->
+      beforeEach ->
+        editor.setText("123456789abc")
+        editor.setCursorScreenPosition([0, 0])
+
+      it "repeats N times", ->
+        keydown('3')
+        keydown('x')
+
+        expect(editor.getText()).toBe '456789abc'
+
+      it "repeats NN times", ->
+        keydown('1')
+        keydown('0')
+        keydown('x')
+
+        expect(editor.getText()).toBe 'bc'
+
+    describe "with motions", ->
+      beforeEach ->
+        editor.setText('one two three')
+        editor.setCursorScreenPosition([0, 0])
+
+      it "repeats N times", ->
+        keydown('d')
+        keydown('2')
+        keydown('w')
+
+        expect(editor.getText()).toBe 'three'
+
+    describe "in visual mode", ->
+      beforeEach ->
+        editor.setText('one two three')
+        editor.setCursorScreenPosition([0, 0])
+
+      it "repeats movements in visual mode", ->
+        keydown("v")
+        keydown("2")
+        keydown("w")
+
+        expect(editor.getCursorScreenPosition()).toEqual [0, 9]
+
+  describe "Register", ->
+    describe "the a register", ->
+      it "saves a value for future reading", ->
+        vimState.setRegister('a', text: 'new content')
+        expect(vimState.getRegister("a").text).toEqual 'new content'
+
+      it "overwrites a value previously in the register", ->
+        vimState.setRegister('a', text: 'content')
+        vimState.setRegister('a', text: 'new content')
+        expect(vimState.getRegister("a").text).toEqual 'new content'
+
+    describe "the B register", ->
+      it "saves a value for future reading", ->
+        vimState.setRegister('B', text: 'new content')
+        expect(vimState.getRegister("b").text).toEqual 'new content'
+        expect(vimState.getRegister("B").text).toEqual 'new content'
+
+      it "appends to a value previously in the register", ->
+        vimState.setRegister('b', text: 'content')
+        vimState.setRegister('B', text: 'new content')
+        expect(vimState.getRegister("b").text).toEqual 'contentnew content'
+
+      it "appends linewise to a linewise value previously in the register", ->
+        vimState.setRegister('b', {type: 'linewise', text: 'content\n'})
+        vimState.setRegister('B', text: 'new content')
+        expect(vimState.getRegister("b").text).toEqual 'content\nnew content\n'
+
+      it "appends linewise to a character value previously in the register", ->
+        vimState.setRegister('b', text: 'content')
+        vimState.setRegister('B', {type: 'linewise', text: 'new content\n'})
+        expect(vimState.getRegister("b").text).toEqual 'content\nnew content\n'
+
+
+    describe "the * register", ->
+      describe "reading", ->
+        it "is the same the system clipboard", ->
+          expect(vimState.getRegister('*').text).toEqual 'initial clipboard content'
+          expect(vimState.getRegister('*').type).toEqual 'character'
+
+      describe "writing", ->
+        beforeEach ->
+          vimState.setRegister('*', text: 'new content')
+
+        it "overwrites the contents of the system clipboard", ->
+          expect(atom.clipboard.read()).toEqual 'new content'
+
+    # FIXME: once linux support comes out, this needs to read from
+    # the correct clipboard. For now it behaves just like the * register
+    # See :help x11-cut-buffer and :help registers for more details on how these
+    # registers work on an X11 based system.
+    describe "the + register", ->
+      describe "reading", ->
+        it "is the same the system clipboard", ->
+          expect(vimState.getRegister('*').text).toEqual 'initial clipboard content'
+          expect(vimState.getRegister('*').type).toEqual 'character'
+
+      describe "writing", ->
+        beforeEach ->
+          vimState.setRegister('*', text: 'new content')
+
+        it "overwrites the contents of the system clipboard", ->
+          expect(atom.clipboard.read()).toEqual 'new content'
+
+    describe "the _ register", ->
+      describe "reading", ->
+        it "is always the empty string", ->
+          expect(vimState.getRegister("_").text).toEqual ''
+
+      describe "writing", ->
+        it "throws away anything written to it", ->
+          vimState.setRegister('_', text: 'new content')
+          expect(vimState.getRegister("_").text).toEqual ''
+
+    describe "the % register", ->
+      beforeEach ->
+        spyOn(editor, 'getURI').andReturn('/Users/atom/known_value.txt')
+
+      describe "reading", ->
+        it "returns the filename of the current editor", ->
+          expect(vimState.getRegister('%').text).toEqual '/Users/atom/known_value.txt'
+
+      describe "writing", ->
+        it "throws away anything written to it", ->
+          vimState.setRegister('%', "new content")
+          expect(vimState.getRegister('%').text).toEqual '/Users/atom/known_value.txt'
diff --git a/atom/packages/vim-mode/spec/scroll-spec.coffee b/atom/packages/vim-mode/spec/scroll-spec.coffee
new file mode 100644 (file)
index 0000000..9473193
--- /dev/null
@@ -0,0 +1,122 @@
+helpers = require './spec-helper'
+
+describe "Scrolling", ->
+  [editor, editorElement, vimState] = []
+
+  beforeEach ->
+    vimMode = atom.packages.loadPackage('vim-mode')
+    vimMode.activateResources()
+
+    helpers.getEditorElement (element) ->
+      editorElement = element
+      editor = editorElement.getModel()
+      vimState = editorElement.vimState
+      vimState.activateCommandMode()
+      vimState.resetCommandMode()
+
+  keydown = (key, options={}) ->
+    options.element ?= editorElement
+    helpers.keydown(key, options)
+
+  describe "scrolling keybindings", ->
+    beforeEach ->
+      editor.setText("1\n2\n3\n4\n5\n6\n7\n8\n9\n10")
+      spyOn(editor, 'getFirstVisibleScreenRow').andReturn(2)
+      spyOn(editor, 'getLastVisibleScreenRow').andReturn(8)
+      spyOn(editor, 'scrollToScreenPosition')
+
+    describe "the ctrl-e keybinding", ->
+      beforeEach ->
+        spyOn(editor, 'getCursorScreenPosition').andReturn({row: 4, column: 0})
+        spyOn(editor, 'setCursorScreenPosition')
+
+      it "moves the screen down by one and keeps cursor onscreen", ->
+        keydown('e', ctrl: true)
+        expect(editor.scrollToScreenPosition).toHaveBeenCalledWith([7, 0])
+        expect(editor.setCursorScreenPosition).toHaveBeenCalledWith([6, 0])
+
+    describe "the ctrl-y keybinding", ->
+      beforeEach ->
+        spyOn(editor, 'getCursorScreenPosition').andReturn({row: 6, column: 0})
+        spyOn(editor, 'setCursorScreenPosition')
+
+      it "moves the screen up by one and keeps the cursor onscreen", ->
+        keydown('y', ctrl: true)
+        expect(editor.scrollToScreenPosition).toHaveBeenCalledWith([3, 0])
+        expect(editor.setCursorScreenPosition).toHaveBeenCalledWith([4, 0])
+
+  describe "scroll cursor keybindings", ->
+    beforeEach ->
+      text = ""
+      for i in [1..200]
+        text += "#{i}\n"
+      editor.setText(text)
+
+      spyOn(editor, 'moveToFirstCharacterOfLine')
+      spyOn(editor, 'getLineHeightInPixels').andReturn(20)
+      spyOn(editor, 'setScrollTop')
+      spyOn(editor, 'getHeight').andReturn(200)
+      spyOn(editor, 'getFirstVisibleScreenRow').andReturn(90)
+      spyOn(editor, 'getLastVisibleScreenRow').andReturn(110)
+
+    describe "the z<CR> keybinding", ->
+      keydownCodeForEnter = '\r'
+
+      beforeEach ->
+        spyOn(editor, 'pixelPositionForScreenPosition').andReturn({top: 1000, left: 0})
+
+      it "moves the screen to position cursor at the top of the window and moves cursor to first non-blank in the line", ->
+        keydown('z')
+        keydown(keydownCodeForEnter)
+        expect(editor.setScrollTop).toHaveBeenCalledWith(960)
+        expect(editor.moveToFirstCharacterOfLine).toHaveBeenCalled()
+
+    describe "the zt keybinding", ->
+      beforeEach ->
+        spyOn(editor, 'pixelPositionForScreenPosition').andReturn({top: 1000, left: 0})
+
+      it "moves the screen to position cursor at the top of the window and leave cursor in the same column", ->
+        keydown('z')
+        keydown('t')
+        expect(editor.setScrollTop).toHaveBeenCalledWith(960)
+        expect(editor.moveToFirstCharacterOfLine).not.toHaveBeenCalled()
+
+    describe "the z. keybinding", ->
+      beforeEach ->
+        spyOn(editor, 'pixelPositionForScreenPosition').andReturn({top: 1000, left: 0})
+
+      it "moves the screen to position cursor at the center of the window and moves cursor to first non-blank in the line", ->
+        keydown('z')
+        keydown('.')
+        expect(editor.setScrollTop).toHaveBeenCalledWith(900)
+        expect(editor.moveToFirstCharacterOfLine).toHaveBeenCalled()
+
+    describe "the zz keybinding", ->
+      beforeEach ->
+        spyOn(editor, 'pixelPositionForScreenPosition').andReturn({top: 1000, left: 0})
+
+      it "moves the screen to position cursor at the center of the window and leave cursor in the same column", ->
+        keydown('z')
+        keydown('z')
+        expect(editor.setScrollTop).toHaveBeenCalledWith(900)
+        expect(editor.moveToFirstCharacterOfLine).not.toHaveBeenCalled()
+
+    describe "the z- keybinding", ->
+      beforeEach ->
+        spyOn(editor, 'pixelPositionForScreenPosition').andReturn({top: 1000, left: 0})
+
+      it "moves the screen to position cursor at the bottom of the window and moves cursor to first non-blank in the line", ->
+        keydown('z')
+        keydown('-')
+        expect(editor.setScrollTop).toHaveBeenCalledWith(860)
+        expect(editor.moveToFirstCharacterOfLine).toHaveBeenCalled()
+
+    describe "the zb keybinding", ->
+      beforeEach ->
+        spyOn(editor, 'pixelPositionForScreenPosition').andReturn({top: 1000, left: 0})
+
+      it "moves the screen to position cursor at the bottom of the window and leave cursor in the same column", ->
+        keydown('z')
+        keydown('b')
+        expect(editor.setScrollTop).toHaveBeenCalledWith(860)
+        expect(editor.moveToFirstCharacterOfLine).not.toHaveBeenCalled()
diff --git a/atom/packages/vim-mode/spec/spec-helper.coffee b/atom/packages/vim-mode/spec/spec-helper.coffee
new file mode 100644 (file)
index 0000000..88ba4b2
--- /dev/null
@@ -0,0 +1,66 @@
+VimState = require '../lib/vim-state'
+GlobalVimState = require '../lib/global-vim-state'
+VimMode  = require '../lib/vim-mode'
+StatusBarManager = require '../lib/status-bar-manager'
+
+beforeEach ->
+  atom.workspace ||= {}
+
+getEditorElement = (callback) ->
+  textEditor = null
+
+  waitsForPromise ->
+    atom.project.open().then (e) ->
+      textEditor = e
+
+  runs ->
+    element = document.createElement("atom-text-editor")
+    element.setModel(textEditor)
+    element.classList.add('vim-mode')
+    element.vimState = new VimState(element, new StatusBarManager, new GlobalVimState)
+
+    element.addEventListener "keydown", (e) ->
+      atom.keymaps.handleKeyboardEvent(e)
+
+    callback(element)
+
+mockPlatform = (editorElement, platform) ->
+  wrapper = document.createElement('div')
+  wrapper.className = platform
+  wrapper.appendChild(editorElement)
+
+unmockPlatform = (editorElement) ->
+  editorElement.parentNode.removeChild(editorElement)
+
+dispatchKeyboardEvent = (target, eventArgs...) ->
+  e = document.createEvent('KeyboardEvent')
+  e.initKeyboardEvent(eventArgs...)
+  # 0 is the default, and it's valid ASCII, but it's wrong.
+  Object.defineProperty(e, 'keyCode', get: -> undefined) if e.keyCode is 0
+  target.dispatchEvent e
+
+dispatchTextEvent = (target, eventArgs...) ->
+  e = document.createEvent('TextEvent')
+  e.initTextEvent(eventArgs...)
+  target.dispatchEvent e
+
+keydown = (key, {element, ctrl, shift, alt, meta, raw}={}) ->
+  key = "U+#{key.charCodeAt(0).toString(16)}" unless key is 'escape' or raw?
+  element ||= document.activeElement
+  eventArgs = [
+    true, # bubbles
+    true, # cancelable
+    null, # view
+    key,  # key
+    0,    # location
+    ctrl, alt, shift, meta
+  ]
+
+  canceled = not dispatchKeyboardEvent(element, 'keydown', eventArgs...)
+  dispatchKeyboardEvent(element, 'keypress', eventArgs...)
+  if not canceled
+    if dispatchTextEvent(element, 'textInput', eventArgs...)
+      element.value += key
+  dispatchKeyboardEvent(element, 'keyup', eventArgs...)
+
+module.exports = {keydown, getEditorElement, mockPlatform, unmockPlatform}
diff --git a/atom/packages/vim-mode/spec/text-objects-spec.coffee b/atom/packages/vim-mode/spec/text-objects-spec.coffee
new file mode 100644 (file)
index 0000000..6991dc7
--- /dev/null
@@ -0,0 +1,481 @@
+helpers = require './spec-helper'
+
+describe "TextObjects", ->
+  [editor, editorElement, vimState] = []
+
+  beforeEach ->
+    vimMode = atom.packages.loadPackage('vim-mode')
+    vimMode.activateResources()
+
+    helpers.getEditorElement (element) ->
+      editorElement = element
+      editor = editorElement.getModel()
+      vimState = editorElement.vimState
+      vimState.activateCommandMode()
+      vimState.resetCommandMode()
+
+  keydown = (key, options={}) ->
+    options.element ?= editorElement
+    helpers.keydown(key, options)
+
+  commandModeInputKeydown = (key, opts = {}) ->
+    editor.commandModeInputView.editorElement.getModel().setText(key)
+
+  describe "the 'iw' text object", ->
+    beforeEach ->
+      editor.setText("12345 abcde ABCDE")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators inside the current word in operator-pending mode", ->
+      keydown('d')
+      keydown('i')
+      keydown('w')
+
+      expect(editor.getText()).toBe "12345  ABCDE"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+      expect(vimState.getRegister('"').text).toBe "abcde"
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "selects inside the current word in visual mode", ->
+      keydown('v')
+      keydown('i')
+      keydown('w')
+
+      expect(editor.getSelectedScreenRange()).toEqual [[0, 6], [0, 11]]
+
+    it "works with multiple cursors", ->
+      editor.addCursorAtBufferPosition([0, 1])
+      keydown("v")
+      keydown("i")
+      keydown("w")
+      expect(editor.getSelectedBufferRanges()).toEqual [
+        [[0, 6], [0, 11]]
+        [[0, 0], [0, 5]]
+      ]
+
+  describe "the 'i(' text object", ->
+    beforeEach ->
+      editor.setText("( something in here and in (here) )")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators inside the current word in operator-pending mode", ->
+      keydown('d')
+      keydown('i')
+      keydown('(')
+      expect(editor.getText()).toBe "()"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators inside the current word in operator-pending mode (second test)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('i')
+      keydown('(')
+      expect(editor.getText()).toBe "( something in here and in () )"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 28]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "works with multiple cursors", ->
+      editor.setText("( a b ) cde ( f g h ) ijk")
+      editor.setCursorBufferPosition([0, 2])
+      editor.addCursorAtBufferPosition([0, 18])
+
+      keydown("v")
+      keydown("i")
+      keydown("(")
+
+      expect(editor.getSelectedBufferRanges()).toEqual [
+        [[0, 1],  [0, 6]]
+        [[0, 13], [0, 20]]
+      ]
+
+  describe "the 'i{' text object", ->
+    beforeEach ->
+      editor.setText("{ something in here and in {here} }")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators inside the current word in operator-pending mode", ->
+      keydown('d')
+      keydown('i')
+      keydown('{')
+      expect(editor.getText()).toBe "{}"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators inside the current word in operator-pending mode (second test)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('i')
+      keydown('{')
+      expect(editor.getText()).toBe "{ something in here and in {} }"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 28]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+  describe "the 'i<' text object", ->
+    beforeEach ->
+      editor.setText("< something in here and in <here> >")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators inside the current word in operator-pending mode", ->
+      keydown('d')
+      keydown('i')
+      keydown('<')
+      expect(editor.getText()).toBe "<>"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators inside the current word in operator-pending mode (second test)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('i')
+      keydown('<')
+      expect(editor.getText()).toBe "< something in here and in <> >"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 28]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+  describe "the 'it' text object", ->
+    beforeEach ->
+      editor.setText("<something>here</something><again>")
+      editor.setCursorScreenPosition([0, 5])
+
+    it "applies only if in the value of a tag", ->
+      keydown('d')
+      keydown('i')
+      keydown('t')
+      expect(editor.getText()).toBe "<something>here</something><again>"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators inside the current word in operator-pending mode", ->
+      editor.setCursorScreenPosition([0, 13])
+      keydown('d')
+      keydown('i')
+      keydown('t')
+      expect(editor.getText()).toBe "<something></something><again>"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 11]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+  describe "the 'ip' text object", ->
+    beforeEach ->
+      editor.setText("\nParagraph-1\nParagraph-1\nParagraph-1\n\n")
+      editor.setCursorScreenPosition([2, 2])
+
+    it "applies operators inside the current paragraph in operator-pending mode", ->
+
+      keydown('y')
+      keydown('i')
+      keydown('p')
+
+      expect(editor.getText()).toBe "\nParagraph-1\nParagraph-1\nParagraph-1\n\n"
+      expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+      expect(vimState.getRegister('"').text).toBe "Paragraph-1\nParagraph-1\nParagraph-1\n"
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "selects inside the current paragraph in visual mode", ->
+      keydown('v')
+      keydown('i')
+      keydown('p')
+
+      expect(editor.getSelectedScreenRange()).toEqual [[1, 0], [4, 0]]
+
+  describe "the 'ap' text object", ->
+    beforeEach ->
+      editor.setText("text\n\nParagraph-1\nParagraph-1\nParagraph-1\n\nmoretext")
+      editor.setCursorScreenPosition([3, 2])
+
+    it "applies operators around the current paragraph in operator-pending mode", ->
+
+      keydown('y')
+      keydown('a')
+      keydown('p')
+
+      expect(editor.getText()).toBe "text\n\nParagraph-1\nParagraph-1\nParagraph-1\n\nmoretext"
+      expect(editor.getCursorScreenPosition()).toEqual [2, 0]
+      expect(vimState.getRegister('"').text).toBe "Paragraph-1\nParagraph-1\nParagraph-1\n\n"
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "selects around the current paragraph in visual mode", ->
+      keydown('v')
+      keydown('a')
+      keydown('p')
+
+      expect(editor.getSelectedScreenRange()).toEqual [[2, 0], [6, 0]]
+      
+  describe "the 'i[' text object", ->
+    beforeEach ->
+      editor.setText("[ something in here and in [here] ]")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators inside the current word in operator-pending mode", ->
+      keydown('d')
+      keydown('i')
+      keydown('[')
+      expect(editor.getText()).toBe "[]"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators inside the current word in operator-pending mode (second test)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('i')
+      keydown('[')
+      expect(editor.getText()).toBe "[ something in here and in [] ]"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 28]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+  describe "the 'i\'' text object", ->
+    beforeEach ->
+      editor.setText("' something in here and in 'here' ' and over here")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators inside the current string in operator-pending mode", ->
+      keydown('d')
+      keydown('i')
+      keydown('\'')
+      expect(editor.getText()).toBe "''here' ' and over here"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators inside the next string in operator-pending mode (if not in a string)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('i')
+      keydown('\'')
+      expect(editor.getText()).toBe "' something in here and in 'here'' and over here"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 33]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "makes no change if past the last string on a line", ->
+      editor.setCursorScreenPosition([0, 39])
+      keydown('d')
+      keydown('i')
+      keydown('\'')
+      expect(editor.getText()).toBe "' something in here and in 'here' ' and over here"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 39]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+  describe "the 'i\"' text object", ->
+    beforeEach ->
+      editor.setText("\" something in here and in \"here\" \" and over here")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators inside the current string in operator-pending mode", ->
+      keydown('d')
+      keydown('i')
+      keydown('"')
+      expect(editor.getText()).toBe "\"\"here\" \" and over here"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 1]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators inside the next string in operator-pending mode (if not in a string)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('i')
+      keydown('"')
+      expect(editor.getText()).toBe "\" something in here and in \"here\"\" and over here"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 33]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "makes no change if past the last string on a line", ->
+      editor.setCursorScreenPosition([0, 39])
+      keydown('d')
+      keydown('i')
+      keydown('"')
+      expect(editor.getText()).toBe "\" something in here and in \"here\" \" and over here"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 39]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+
+  describe "the 'aw' text object", ->
+    beforeEach ->
+      editor.setText("12345 abcde ABCDE")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators from the start of the current word to the start of the next word in operator-pending mode", ->
+      keydown('d')
+      keydown('a')
+      keydown('w')
+
+      expect(editor.getText()).toBe "12345 ABCDE"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+      expect(vimState.getRegister('"').text).toBe "abcde "
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "selects from the start of the current word to the start of the next word in visual mode", ->
+      keydown('v')
+      keydown('a')
+      keydown('w')
+
+      expect(editor.getSelectedScreenRange()).toEqual [[0, 6], [0, 12]]
+
+    it "doesn't span newlines", ->
+      editor.setText("12345\nabcde ABCDE")
+      editor.setCursorBufferPosition([0, 3])
+
+      keydown("v")
+      keydown("a")
+      keydown("w")
+
+      expect(editor.getSelectedBufferRanges()).toEqual [[[0, 0], [0, 5]]]
+
+  describe "the 'a(' text object", ->
+    beforeEach ->
+      editor.setText("( something in here and in (here) )")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators around the current parentheses in operator-pending mode", ->
+      keydown('d')
+      keydown('a')
+      keydown('(')
+      expect(editor.getText()).toBe ""
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators around the current parentheses in operator-pending mode (second test)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('a')
+      keydown('(')
+      expect(editor.getText()).toBe "( something in here and in  )"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 27]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+  describe "the 'a{' text object", ->
+    beforeEach ->
+      editor.setText("{ something in here and in {here} }")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators around the current curly brackets in operator-pending mode", ->
+      keydown('d')
+      keydown('a')
+      keydown('{')
+      expect(editor.getText()).toBe ""
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators around the current curly brackets in operator-pending mode (second test)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('a')
+      keydown('{')
+      expect(editor.getText()).toBe "{ something in here and in  }"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 27]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+  describe "the 'a<' text object", ->
+    beforeEach ->
+      editor.setText("< something in here and in <here> >")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators around the current angle brackets in operator-pending mode", ->
+      keydown('d')
+      keydown('a')
+      keydown('<')
+      expect(editor.getText()).toBe ""
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators around the current angle brackets in operator-pending mode (second test)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('a')
+      keydown('<')
+      expect(editor.getText()).toBe "< something in here and in  >"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 27]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+  describe "the 'a[' text object", ->
+    beforeEach ->
+      editor.setText("[ something in here and in [here] ]")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators around the current square brackets in operator-pending mode", ->
+      keydown('d')
+      keydown('a')
+      keydown('[')
+      expect(editor.getText()).toBe ""
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators around the current square brackets in operator-pending mode (second test)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('a')
+      keydown('[')
+      expect(editor.getText()).toBe "[ something in here and in  ]"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 27]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+  describe "the 'a\'' text object", ->
+    beforeEach ->
+      editor.setText("' something in here and in 'here' '")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators around the current single quotes in operator-pending mode", ->
+      keydown('d')
+      keydown('a')
+      keydown('\'')
+      expect(editor.getText()).toBe "here' '"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators around the current single quotes in operator-pending mode (second test)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('a')
+      keydown('\'')
+      expect(editor.getText()).toBe "' something in here and in 'here"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 31]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+  describe "the 'a\"' text object", ->
+    beforeEach ->
+      editor.setText("\" something in here and in \"here\" \"")
+      editor.setCursorScreenPosition([0, 9])
+
+    it "applies operators around the current double quotes in operator-pending mode", ->
+      keydown('d')
+      keydown('a')
+      keydown('""')
+      expect(editor.getText()).toBe 'here" "'
+      expect(editor.getCursorScreenPosition()).toEqual [0, 0]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "applies operators around the current double quotes in operator-pending mode (second test)", ->
+      editor.setCursorScreenPosition([0, 29])
+      keydown('d')
+      keydown('a')
+      keydown('"')
+      expect(editor.getText()).toBe "\" something in here and in \"here"
+      expect(editor.getCursorScreenPosition()).toEqual [0, 31]
+      expect(editorElement.classList.contains('operator-pending-mode')).toBe(false)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
diff --git a/atom/packages/vim-mode/spec/vim-mode-spec.coffee b/atom/packages/vim-mode/spec/vim-mode-spec.coffee
new file mode 100644 (file)
index 0000000..0f4d8b8
--- /dev/null
@@ -0,0 +1,56 @@
+describe "VimMode", ->
+  [editor, editorElement, workspaceElement] = []
+
+  beforeEach ->
+    workspaceElement = atom.views.getView(atom.workspace)
+
+    waitsForPromise ->
+      atom.workspace.open()
+
+    waitsForPromise ->
+      atom.packages.activatePackage('vim-mode')
+
+    waitsForPromise ->
+      atom.packages.activatePackage('status-bar')
+
+    runs ->
+      editor = atom.workspace.getActiveTextEditor()
+      editorElement = atom.views.getView(editor)
+
+  describe ".activate", ->
+    it "puts the editor in command-mode initially by default", ->
+      expect(editorElement.classList.contains('vim-mode')).toBe(true)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "shows the current vim mode in the status bar", ->
+      statusBarTile = workspaceElement.querySelector("#status-bar-vim-mode")
+      expect(statusBarTile.textContent).toBe("Command")
+      atom.commands.dispatch(editorElement, "vim-mode:activate-insert-mode")
+      expect(statusBarTile.textContent).toBe("Insert")
+
+    it "doesn't register duplicate command listeners for editors", ->
+      editor.setText("12345")
+      editor.setCursorBufferPosition([0, 0])
+
+      pane = atom.workspace.getActivePane()
+      newPane = pane.splitRight()
+      pane.removeItem(editor)
+      newPane.addItem(editor)
+
+      atom.commands.dispatch(editorElement, "vim-mode:move-right")
+      expect(editor.getCursorBufferPosition()).toEqual([0, 1])
+
+  describe ".deactivate", ->
+    it "removes the vim classes from the editor", ->
+      atom.packages.deactivatePackage('vim-mode')
+      expect(editorElement.classList.contains("vim-mode")).toBe(false)
+      expect(editorElement.classList.contains("command-mode")).toBe(false)
+
+    it "removes the vim commands from the editor element", ->
+      vimCommands = ->
+        atom.commands.findCommands(target: editorElement).filter (cmd) ->
+          cmd.name.startsWith("vim-mode:")
+
+      expect(vimCommands().length).toBeGreaterThan(0)
+      atom.packages.deactivatePackage('vim-mode')
+      expect(vimCommands().length).toBe(0)
diff --git a/atom/packages/vim-mode/spec/vim-state-spec.coffee b/atom/packages/vim-mode/spec/vim-state-spec.coffee
new file mode 100644 (file)
index 0000000..741c371
--- /dev/null
@@ -0,0 +1,420 @@
+_ = require 'underscore-plus'
+helpers = require './spec-helper'
+VimState = require '../lib/vim-state'
+StatusBarManager = require '../lib/status-bar-manager'
+
+describe "VimState", ->
+  [editor, editorElement, vimState] = []
+
+  beforeEach ->
+    vimMode = atom.packages.loadPackage('vim-mode')
+    vimMode.activateResources()
+
+    helpers.getEditorElement (element) ->
+      editorElement = element
+      editor = editorElement.getModel()
+      vimState = editorElement.vimState
+      vimState.activateCommandMode()
+      vimState.resetCommandMode()
+
+  keydown = (key, options={}) ->
+    options.element ?= editorElement
+    helpers.keydown(key, options)
+
+  commandModeInputKeydown = (key, opts = {}) ->
+    editor.commandModeInputView.editorElement.getModel().setText(key)
+
+  describe "initialization", ->
+    it "puts the editor in command-mode initially by default", ->
+      expect(editorElement.classList.contains('vim-mode')).toBe(true)
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+    it "puts the editor in insert-mode if startInInsertMode is true", ->
+      atom.config.set 'vim-mode.startInInsertMode', true
+      editor.vimState = new VimState(editorElement, new StatusBarManager)
+      expect(editorElement.classList.contains('insert-mode')).toBe(true)
+
+  describe "::destroy", ->
+    it "re-enables text input on the editor", ->
+      expect(editorElement.component.isInputEnabled()).toBeFalsy()
+      vimState.destroy()
+      expect(editorElement.component.isInputEnabled()).toBeTruthy()
+
+    it "removes the mode classes from the editor", ->
+      expect(editorElement.classList.contains("command-mode")).toBeTruthy()
+      vimState.destroy()
+      expect(editorElement.classList.contains("command-mode")).toBeFalsy()
+
+    it "is a noop when the editor is already destroyed", ->
+      editorElement.getModel().destroy()
+      vimState.destroy()
+
+  describe "command-mode", ->
+    describe "when entering an insertable character", ->
+      beforeEach -> keydown('\\')
+
+      it "stops propagation", ->
+        expect(editor.getText()).toEqual ''
+
+    describe "when entering an operator", ->
+      beforeEach -> keydown('d')
+
+      describe "with an operator that can't be composed", ->
+        beforeEach -> keydown('x')
+
+        it "clears the operator stack", ->
+          expect(vimState.opStack.length).toBe 0
+
+      describe "the escape keybinding", ->
+        beforeEach -> keydown('escape')
+
+        it "clears the operator stack", ->
+          expect(vimState.opStack.length).toBe 0
+
+      describe "the ctrl-c keybinding", ->
+        beforeEach -> keydown('c', ctrl: true)
+
+        it "clears the operator stack", ->
+          expect(vimState.opStack.length).toBe 0
+
+    describe "the escape keybinding", ->
+      it "clears any extra cursors", ->
+        editor.setText("one-two-three")
+        editor.addCursorAtBufferPosition([0, 3])
+        expect(editor.getCursors().length).toBe 2
+        keydown('escape')
+        expect(editor.getCursors().length).toBe 1
+
+    describe "the v keybinding", ->
+      beforeEach -> keydown('v')
+
+      it "puts the editor into visual characterwise mode", ->
+        expect(editorElement.classList.contains('visual-mode')).toBe(true)
+        expect(vimState.submode).toEqual 'characterwise'
+        expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+    describe "the V keybinding", ->
+      beforeEach ->
+        editor.setText("012345\nabcdef")
+        editor.setCursorScreenPosition([0, 0])
+        keydown('V', shift: true)
+
+      it "puts the editor into visual linewise mode", ->
+        expect(editorElement.classList.contains('visual-mode')).toBe(true)
+        expect(vimState.submode).toEqual 'linewise'
+        expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+      it "selects the current line", ->
+        expect(editor.getLastSelection().getText()).toEqual '012345\n'
+
+    describe "the ctrl-v keybinding", ->
+      beforeEach -> keydown('v', ctrl: true)
+
+      it "puts the editor into visual characterwise mode", ->
+        expect(editorElement.classList.contains('visual-mode')).toBe(true)
+        expect(vimState.submode).toEqual 'blockwise'
+        expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+    describe "selecting text", ->
+      beforeEach ->
+        spyOn(_._, "now").andCallFake -> window.now
+        editor.setText("abc def")
+
+      it "puts the editor into visual mode", ->
+        expect(vimState.mode).toEqual 'command'
+        editor.setSelectedBufferRanges([[[0, 0], [0, 3]]])
+
+        advanceClock(100)
+
+        expect(vimState.mode).toEqual 'visual'
+        expect(vimState.submode).toEqual 'characterwise'
+        expect(editor.getSelectedBufferRanges()).toEqual([[[0, 0], [0, 3]]])
+
+      it "handles the editor being destroyed shortly after selecting text", ->
+        editor.setSelectedBufferRanges([[[0, 0], [0, 3]]])
+        editor.destroy()
+        vimState.destroy()
+        advanceClock(100)
+
+    describe "the i keybinding", ->
+      beforeEach -> keydown('i')
+
+      it "puts the editor into insert mode", ->
+        expect(editorElement.classList.contains('insert-mode')).toBe(true)
+        expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+    describe "with content", ->
+      beforeEach -> editor.setText("012345\n\nabcdef")
+
+      # FIXME: See atom/vim-mode#2
+      xdescribe "on a line with content", ->
+        beforeEach -> editor.setCursorScreenPosition([0, 6])
+
+        it "does not allow the cursor to be placed on the \n character", ->
+          expect(editor.getCursorScreenPosition()).toEqual [0, 5]
+
+      describe "on an empty line", ->
+        beforeEach -> editor.setCursorScreenPosition([1, 0])
+
+        it "allows the cursor to be placed on the \n character", ->
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+    describe 'with character-input operations', ->
+      beforeEach -> editor.setText('012345\nabcdef')
+
+      it 'properly clears the opStack', ->
+        keydown('d')
+        keydown('r')
+        expect(vimState.mode).toBe 'command'
+        expect(vimState.opStack.length).toBe 0
+        atom.commands.dispatch(editor.commandModeInputView.editorElement, "core:cancel")
+        keydown('d')
+        expect(editor.getText()).toBe '012345\nabcdef'
+
+  describe "insert-mode", ->
+    beforeEach ->
+      keydown('i')
+
+    describe "with content", ->
+      beforeEach -> editor.setText("012345\n\nabcdef")
+
+      describe "when cursor is in the middle of the line", ->
+        beforeEach -> editor.setCursorScreenPosition([0, 3])
+
+        it "moves the cursor to the left when exiting insert mode", ->
+          keydown('escape')
+          expect(editor.getCursorScreenPosition()).toEqual [0, 2]
+
+      describe "when cursor is at the beginning of line", ->
+        beforeEach -> editor.setCursorScreenPosition([1, 0])
+
+        it "leaves the cursor at the beginning of line", ->
+          keydown('escape')
+          expect(editor.getCursorScreenPosition()).toEqual [1, 0]
+
+      describe "on a line with content", ->
+        beforeEach -> editor.setCursorScreenPosition([0, 6])
+
+        it "allows the cursor to be placed on the \n character", ->
+          expect(editor.getCursorScreenPosition()).toEqual [0, 6]
+
+    it "puts the editor into command mode when <escape> is pressed", ->
+      keydown('escape')
+
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+      expect(editorElement.classList.contains('insert-mode')).toBe(false)
+      expect(editorElement.classList.contains('visual-mode')).toBe(false)
+
+    it "puts the editor into command mode when <ctrl-c> is pressed", ->
+      helpers.mockPlatform(editorElement, 'platform-darwin')
+      keydown('c', ctrl: true)
+      helpers.unmockPlatform(editorElement)
+
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+      expect(editorElement.classList.contains('insert-mode')).toBe(false)
+      expect(editorElement.classList.contains('visual-mode')).toBe(false)
+
+  describe "visual-mode", ->
+    beforeEach ->
+      editor.setText("one two three")
+      editor.setCursorBufferPosition([0, 4])
+      keydown('v')
+
+    it "selects the character under the cursor", ->
+      expect(editor.getSelectedBufferRanges()).toEqual [[[0, 4], [0, 5]]]
+      expect(editor.getSelectedText()).toBe("t")
+
+    it "puts the editor into command mode when <escape> is pressed", ->
+      keydown('escape')
+
+      expect(editor.getCursorBufferPositions()).toEqual [[0, 4]]
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+      expect(editorElement.classList.contains('visual-mode')).toBe(false)
+
+    it "puts the editor into command mode when <escape> is pressed on selection is reversed", ->
+      expect(editor.getSelectedText()).toBe("t")
+      keydown("h")
+      keydown("h")
+      expect(editor.getSelectedText()).toBe("e t")
+      expect(editor.getLastSelection().isReversed()).toBe(true)
+      keydown('escape')
+      expect(editorElement.classList.contains('command-mode')).toBe(true)
+      expect(editor.getCursorBufferPositions()).toEqual [[0, 2]]
+
+    describe "motions", ->
+      it "transforms the selection", ->
+        keydown('w')
+        expect(editor.getLastSelection().getText()).toEqual 'two t'
+
+      it "always leaves the initially selected character selected", ->
+        keydown("h")
+        expect(editor.getSelectedText()).toBe(" t")
+
+        keydown("l")
+        expect(editor.getSelectedText()).toBe("t")
+
+        keydown("l")
+        keydown("l")
+        expect(editor.getSelectedText()).toBe("tw")
+
+    describe "operators", ->
+      beforeEach ->
+        editor.setText("012345\n\nabcdef")
+        editor.setCursorScreenPosition([0, 0])
+        editor.selectLinesContainingCursors()
+        keydown('d')
+
+      it "operate on the current selection", ->
+        expect(editor.getText()).toEqual "\nabcdef"
+
+    describe "returning to command-mode", ->
+      beforeEach ->
+        editor.setText("012345\n\nabcdef")
+        editor.selectLinesContainingCursors()
+        keydown('escape')
+
+      it "operate on the current selection", ->
+        expect(editor.getLastSelection().getText()).toEqual ''
+
+    describe "the o keybinding", ->
+      it "reversed each selection", ->
+        editor.addCursorAtBufferPosition([0, Infinity])
+        keydown("i")
+        keydown("w")
+
+        expect(editor.getSelectedBufferRanges()).toEqual([
+          [[0, 4], [0, 7]],
+          [[0, 8], [0, 13]]
+        ])
+        expect(editor.getCursorBufferPositions()).toEqual([
+          [0, 7]
+          [0, 13]
+        ])
+
+        keydown("o")
+
+        expect(editor.getSelectedBufferRanges()).toEqual([
+          [[0, 4], [0, 7]],
+          [[0, 8], [0, 13]]
+        ])
+        expect(editor.getCursorBufferPositions()).toEqual([
+          [0, 4]
+          [0, 8]
+        ])
+
+    describe "activate visualmode witin visualmode", ->
+      beforeEach ->
+        keydown('escape')
+        expect(vimState.mode).toEqual 'command'
+        expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+      it "activateVisualMode with same type puts the editor into command mode", ->
+        keydown('v')
+        expect(editorElement.classList.contains('visual-mode')).toBe(true)
+        expect(vimState.submode).toEqual 'characterwise'
+        expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+        keydown('v')
+        expect(vimState.mode).toEqual 'command'
+        expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+        keydown('V', shift: true)
+        expect(editorElement.classList.contains('visual-mode')).toBe(true)
+        expect(vimState.submode).toEqual 'linewise'
+        expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+        keydown('V', shift: true)
+        expect(vimState.mode).toEqual 'command'
+        expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+        keydown('v', ctrl: true)
+        expect(editorElement.classList.contains('visual-mode')).toBe(true)
+        expect(vimState.submode).toEqual 'blockwise'
+        expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+        keydown('v', ctrl: true)
+        expect(vimState.mode).toEqual 'command'
+        expect(editorElement.classList.contains('command-mode')).toBe(true)
+
+      describe "change submode within visualmode", ->
+        beforeEach ->
+          editor.setText("line one\nline two\nline three\n")
+          editor.setCursorBufferPosition([0, 5])
+          editor.addCursorAtBufferPosition([2, 5])
+
+        it "can change submode within visual mode", ->
+          keydown('v')
+          expect(editorElement.classList.contains('visual-mode')).toBe(true)
+          expect(vimState.submode).toEqual 'characterwise'
+          expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+          keydown('V', shift: true)
+          expect(editorElement.classList.contains('visual-mode')).toBe(true)
+          expect(vimState.submode).toEqual 'linewise'
+          expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+          keydown('v', ctrl: true)
+          expect(editorElement.classList.contains('visual-mode')).toBe(true)
+          expect(vimState.submode).toEqual 'blockwise'
+          expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+          keydown('v')
+          expect(editorElement.classList.contains('visual-mode')).toBe(true)
+          expect(vimState.submode).toEqual 'characterwise'
+          expect(editorElement.classList.contains('command-mode')).toBe(false)
+
+
+        it "recover original range when shift from linewse to characterwise", ->
+          keydown('v')
+          keydown('i')
+          keydown('w')
+
+          expect(_.map(editor.getSelections(), (selection) ->
+            selection.getText())
+          ).toEqual(['one', 'three'])
+
+          keydown('V', shift: true)
+          expect(_.map(editor.getSelections(), (selection) ->
+            selection.getText())
+          ).toEqual(["line one\n", "line three\n"])
+
+          keydown('v', ctrl: true)
+          expect(_.map(editor.getSelections(), (selection) ->
+            selection.getText())
+          ).toEqual(['one', 'three'])
+
+  describe "marks", ->
+    beforeEach ->  editor.setText("text in line 1\ntext in line 2\ntext in line 3")
+
+    it "basic marking functionality", ->
+      editor.setCursorScreenPosition([1, 1])
+      keydown('m')
+      commandModeInputKeydown('t')
+      expect(editor.getText()).toEqual "text in line 1\ntext in line 2\ntext in line 3"
+      editor.setCursorScreenPosition([2, 2])
+      keydown('`')
+      commandModeInputKeydown('t')
+      expect(editor.getCursorScreenPosition()).toEqual [1, 1]
+
+    it "real (tracking) marking functionality", ->
+      editor.setCursorScreenPosition([2, 2])
+      keydown('m')
+      commandModeInputKeydown('q')
+      editor.setCursorScreenPosition([1, 2])
+      keydown('o')
+      keydown('escape')
+      keydown('`')
+      commandModeInputKeydown('q')
+      expect(editor.getCursorScreenPosition()).toEqual [3, 2]
+
+    it "real (tracking) marking functionality", ->
+      editor.setCursorScreenPosition([2, 2])
+      keydown('m')
+      commandModeInputKeydown('q')
+      editor.setCursorScreenPosition([1, 2])
+      keydown('d')
+      keydown('d')
+      keydown('escape')
+      keydown('`')
+      commandModeInputKeydown('q')
+      expect(editor.getCursorScreenPosition()).toEqual [1, 2]
diff --git a/atom/packages/vim-mode/styles/vim-mode.less b/atom/packages/vim-mode/styles/vim-mode.less
new file mode 100644 (file)
index 0000000..a458937
--- /dev/null
@@ -0,0 +1,58 @@
+@import "syntax-variables";
+@import "ui-variables";
+
+.command-mode-input atom-text-editor[mini] {
+  background-color: inherit;
+  border: none;
+  width: 100%;
+  font-weight: normal;
+  color: @text-color;
+  line-height: 1.28;
+  cursor: default;
+  white-space: nowrap;
+  padding-left: 10px;
+}
+
+.block-cursor(@visibility: visible) {
+  border: 0;
+  background-color: @syntax-cursor-color;
+  visibility: @visibility;
+  opacity: 0.5;
+}
+
+atom-text-editor.vim-mode.command-mode,
+atom-text-editor.vim-mode.operator-pending-mode,
+atom-text-editor.vim-mode.visual-mode,
+{
+  &::shadow, // shadow-DOM enabled
+  &           // shadow-DOM disabled
+  {
+    .cursor, .cursor.blink-off {
+      .block-cursor(hidden);
+    }
+  }
+}
+
+atom-text-editor.vim-mode.command-mode.is-focused,
+atom-text-editor.vim-mode.operator-pending-mode.is-focused,
+atom-text-editor.vim-mode.visual-mode.is-focused
+{
+  &::shadow, // shadow-DOM enabled
+  &           // shadow-DOM disabled
+  {
+    .cursor, .cursor.blink-off {
+      .block-cursor;
+    }
+  }
+}
+
+atom-text-editor.vim-mode.visual-mode
+{
+  &::shadow, // shadow-DOM enabled
+  &           // shadow-DOM disabled
+  {
+    .cursor.hidden-cursor {
+      display: block;
+    }
+  }
+}
diff --git a/atom/packages/vim-surround/.npmignore b/atom/packages/vim-surround/.npmignore
new file mode 100644 (file)
index 0000000..ade14b9
--- /dev/null
@@ -0,0 +1,3 @@
+.DS_Store
+npm-debug.log
+node_modules
diff --git a/atom/packages/vim-surround/.travis.yml b/atom/packages/vim-surround/.travis.yml
new file mode 100644 (file)
index 0000000..d73c8e2
--- /dev/null
@@ -0,0 +1,11 @@
+language: objective-c
+
+notifications:
+  email:
+    on_success: never
+    on_failure: change
+
+script: 'curl -s https://raw.githubusercontent.com/atom/ci/master/build-package.sh | sh'
+
+git:
+  depth: 10
diff --git a/atom/packages/vim-surround/CHANGELOG.md b/atom/packages/vim-surround/CHANGELOG.md
new file mode 100644 (file)
index 0000000..c669642
--- /dev/null
@@ -0,0 +1,50 @@
+## 0.7.1
+* Propagate README changes.
+
+## 0.7.0
+* Change surround and delete surround implemented. Thanks to @shemerey :D !
+
+## 0.6.1
+* Fixed keymap -> keymaps change. [vim-surround #19](https://github.com/gepoch/vim-surround/issues/19)
+
+## 0.6.0
+* Upgraded to new config schema. General restructuring.
+
+## 0.5.1
+* Handle undefined values in config.
+
+## 0.5.0
+* Configurable surround key to support muscle memory in response to  [vim-surround #12](https://github.com/gepoch/vim-surround/issues/12)
+
+## 0.4.3
+* Fixed bug [vim-surround #13](https://github.com/gepoch/vim-surround/issues/13)
+
+
+## 0.4.2
+* Fixed bug [vim-surround #11](https://github.com/gepoch/vim-surround/issues/11)
+* Readme updates.
+
+## 0.4.1
+* Renamed the dynamic keybindings to match the package name.
+* Added some tests.
+* Poked the README.
+
+## 0.4.0
+* Multiple cursor support.
+
+## 0.3.0
+* Updated for Atom API v1.0.0 changes.
+
+## 0.2.3
+* Fixed bug: [vim-surround #5](https://github.com/gepoch/vim-surround/issues/5)
+
+## 0.2.0 - Activation and Keybindings Improved.
+* Keybindings are now dynamically generated from the configured pairs. No more
+  user keybindings changes necessary!
+* Activation is now on atom boot since keybindings are now dynamic and
+  impossible to predict for the purposes of activation events.
+* Fixed bug where surround action did not exit visual mode.
+
+## 0.1.0 - First Release
+* Every feature added
+* Every bug fixed
diff --git a/atom/packages/vim-surround/LICENSE.md b/atom/packages/vim-surround/LICENSE.md
new file mode 100644 (file)
index 0000000..9e77889
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2014 George Marchin
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+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/atom/packages/vim-surround/README.md b/atom/packages/vim-surround/README.md
new file mode 100644 (file)
index 0000000..193f733
--- /dev/null
@@ -0,0 +1,117 @@
+# Vim Surround for Atom [![Build Status](https://travis-ci.org/gepoch/vim-surround.svg?branch=master)](https://travis-ci.org/gepoch/vim-surround)
+
+Surround is an implementation of vim-surround for the [atom](http://atom.io)
+editor, creating a vim-surround with the power of Atom!
+
+You should definitely have [vim-mode](https://atom.io/packages/vim-mode) for
+this package to function properly, of course.
+
+Inspiration from and kudos to the wonderful [vim-surround for
+vim](https://github.com/tpope/vim-surround)
+
+See vim-surround on [github](https://github.com/gepoch/vim-surround) or
+[atom.io](https://atom.io/packages/vim-surround).
+
+## News
+
+* This package supports visual mode's `s )` set of commands for a configurable
+  set of pairs.
+
+* Next on the roadmap are pair deletions with `d )` and friends.
+
+* New in 0.4: Multiple cursors are now supported, and conveniently work just
+  like you think they do.
+
+* New in 0.5: Stable configuration changes and configurable surround key!
+
+* New in 0.7: Change surround and delete surround added.
+
+### Muscle Memory Compatability Note
+
+vim-surround uses a lowercase `s` instead of `S` for surround commands! This is
+configurable in the package settings, if you would like to set it to the
+original keybinding.
+
+## How to use Surround
+
+### Surrounding
+
+For double quotes, highlight the string in visual mode and enter `s "`.
+
+```
+Hello world -> "Hello world"
+```
+
+For parentheses there are two options. `s )` will surround as normal. `s (`
+will pad with a space. All asymmetrical pairs have the secondary space-padded
+form.
+
+For example:
+
+`s )`
+
+```
+Hello world -> (Hello world)
+```
+
+`s (`
+
+```
+Hello world -> ( Hello world )
+```
+
+### Changing Surrounding Pairs
+
+Suppose I want to make double quotes into single quotes. To do this, I should
+put my cursor inside the double quotes in question and enter `c s " '`
+
+```
+"Hello world" -> 'Hello world'
+```
+
+### Deleting Surrounding Pairs
+
+To delete the single quotes, place your cursor inside of them and enter `d s '`
+
+```
+'Hello world' -> Hello world
+```
+### Configuration
+
+Currently, the following pairs work out of the box!:
+
+- ()
+- []
+- {}
+- ""
+- ''
+
+You can add to the available pairs in atom's settings, and the commands will
+be dynamically added to your keybindings.
+
+For example if I'm working on Jinja templates, and I want to add the ability to
+surround using `{%` and `%}` I would add this in my settings:
+
+```
+(), [], {}, "", '', {%%}
+```
+
+Then:
+
+`s % }`
+
+```
+Hello world -> {%Hello world%}
+```
+
+`s { %`
+
+```
+Hello world -> {% Hello world %}
+```
+
+### TODO
+
+- [x] Implement deleting surrounding pairs with `d s`
+- [x] Implement changing surrounding pairs with `c s`
+- [ ] Intelligent tag surrounding/deleting/replacing with `s <q>` and friends.
diff --git a/atom/packages/vim-surround/keymaps/surround.cson b/atom/packages/vim-surround/keymaps/surround.cson
new file mode 100644 (file)
index 0000000..5de6766
--- /dev/null
@@ -0,0 +1,7 @@
+# OOPS! Good job with your dilligent hunting, but vim-surround's keybindings
+# are actually completely dynamic, so it doesn't use this file.... So I'll use
+# this as a guest book. Send me a PR!
+
+# # OFFICIAL VIM-SURROUND GUEST BOOK :+1:
+
+# George Marchin ~ Hi Mom!
diff --git a/atom/packages/vim-surround/lib/command/base.coffee b/atom/packages/vim-surround/lib/command/base.coffee
new file mode 100644 (file)
index 0000000..b40e644
--- /dev/null
@@ -0,0 +1,59 @@
+{CompositeDisposable} = require 'atom'
+
+module.exports = class Base
+
+  constructor: (config) ->
+    @disposables = new CompositeDisposable
+
+    @curPairs = []
+    @registerPairs config.pairs
+
+  registerPairs: (pairs) ->
+    pairs = (x for x in pairs when x.length > 0 and x.length %2 == 0)
+
+    for pair in pairs
+      if pair not in @curPairs
+        @registerPair pair
+        @curPairs.push(pair)
+
+  registerPair: (pair) ->
+    [left, right] = @splitPair(pair)
+
+    if left != right
+      @createPairBindings left, "#{left} ", " #{right}"
+    @createPairBindings right, left, right
+
+  createPairBindings: (key, left, right) ->
+    name = "vim-surround:#{@getName key}"
+
+    # First, we add a command to the system to actually perform the surround.
+    # We attach the disposable to our object's list.
+    @disposables.add atom.commands.add @context, name, @getRunner left, right
+
+    # Next, we build up keybindings for our command. First, we build a
+    # space-delineated version of our key that's passed in. This breaks up
+    # double keys like `{%` into the seperate keystroke form: `{ %`
+    keys = ""
+    for i in [0..key.length-1]
+      if i == 0
+        keys = key[i]
+      else
+        keys = "#{keys} #{key[i]}"
+
+    # Making a one-command keymap data structure here. Basically:
+    # "atom-text-editor.vim-mode.visual-mode":
+    #   "s (":
+    #     "vim-surround:surround-("
+
+    keymapArg = {}
+    fullCommand = "#{@command} #{keys}"
+    keymapArg[fullCommand] = name
+
+    contextArg = {}
+    contextArg[@context] = keymapArg
+
+    # Capture the disposable heretom test!
+    @disposables.add atom.keymaps.add name, contextArg
+
+  splitPair: (pair) ->
+    return [pair[..(pair.length/2)-1], pair[pair.length/2..]]
diff --git a/atom/packages/vim-surround/lib/command/change.coffee b/atom/packages/vim-surround/lib/command/change.coffee
new file mode 100644 (file)
index 0000000..b1860f5
--- /dev/null
@@ -0,0 +1,74 @@
+{CompositeDisposable} = require 'atom'
+
+Base = require './base'
+Selector = require './selector'
+
+module.exports = class Change
+  constructor: (config) ->
+    @command = config.changeSurroundCommand
+    @context = "atom-text-editor.vim-mode.command-mode"
+    @disposables = new CompositeDisposable
+    @curPairs = []
+    @curPairsWithTarget = []
+    @registerPairs config.pairs
+
+  getName: (key, targetKey) -> "change-#{key}-to-#{targetKey}"
+
+  registerPairs: (pairs) ->
+    pairs = (x for x in pairs when x.length > 0 and x.length %2 == 0)
+
+    for pair in pairs
+      for target in pairs
+        if "#{pair}#{target}" not in @curPairs
+          @registerPair pair, target
+          @curPairs.push("#{pair}#{target}")
+
+  registerPair: (pair, target) ->
+    [left, right] = @splitPair(pair)
+    [target_left, target_right] = @splitPair(target)
+
+    for key in [left, right]
+      for targetKey in [target_left, target_right]
+        if "#{key}#{targetKey}" not in @curPairsWithTarget
+          name = "vim-surround:#{@getName(key, targetKey)}"
+
+          unless pair == target
+            @disposables.add atom.commands.add @context, name, @getRunner pair, target
+
+          keymapArg = {}
+          fullCommand = "#{@command} #{key} #{targetKey}"
+          keymapArg[fullCommand] = name
+
+          contextArg = {}
+          contextArg[@context] = keymapArg
+
+          # Capture the disposable heretom test!
+          unless pair == target
+            @disposables.add atom.keymaps.add name, contextArg
+          @curPairsWithTarget.push("#{key}#{targetKey}")
+
+  splitPair: (pair) ->
+    return [pair[..(pair.length/2)-1], pair[pair.length/2..]]
+
+  getRunner: (from, to) -> ->
+    [left, right] = [from[0], from[1]]
+    [target_left, target_right] = [to[0], to[1]]
+    editor = atom.workspace.getActiveTextEditor()
+    selector = new Selector(editor, left, right)
+
+    editor.transact ->
+      cursorPos = editor.getCursorBufferPosition()
+
+      selector.inside().select()
+      editor.selections.forEach (selection) ->
+        text = selection.getText()
+
+        # restore cursore and select text with surrounding keys
+        editor.setCursorBufferPosition(cursorPos)
+        selector.outside().select()
+
+        editor.selections.forEach (selection) ->
+          selection.insertText "#{target_left}#{text}#{target_right}"
+
+      # restore cursore
+      editor.setCursorBufferPosition(cursorPos)
diff --git a/atom/packages/vim-surround/lib/command/delete.coffee b/atom/packages/vim-surround/lib/command/delete.coffee
new file mode 100644 (file)
index 0000000..aa5eec0
--- /dev/null
@@ -0,0 +1,33 @@
+{CompositeDisposable} = require 'atom'
+
+Base = require './base'
+Selector = require './selector'
+
+module.exports = class Delete extends Base
+  constructor: (config) ->
+    @command = config.deleteSurroundCommand
+    @context = "atom-text-editor.vim-mode.command-mode"
+    super config
+
+  getName: (key) -> "delete-#{key}"
+
+  getRunner: (left, right) -> ->
+    editor = atom.workspace.getActiveTextEditor()
+    selector = new Selector(editor, left, right)
+
+    editor.transact ->
+      cursorPos = editor.getCursorBufferPosition()
+
+      selector.inside().select()
+      editor.selections.forEach (selection) ->
+        text = selection.getText()
+
+        # restore cursore and select text with surrounding keys
+        editor.setCursorBufferPosition(cursorPos)
+        selector.outside().select()
+
+        editor.selections.forEach (selection) ->
+          selection.insertText text
+
+      # restore cursore
+      editor.setCursorBufferPosition(cursorPos)
diff --git a/atom/packages/vim-surround/lib/command/selector.coffee b/atom/packages/vim-surround/lib/command/selector.coffee
new file mode 100644 (file)
index 0000000..aae3541
--- /dev/null
@@ -0,0 +1,22 @@
+vimModePath = atom.packages.resolvePackagePath('vim-mode')
+{SelectInsideQuotes, SelectInsideBrackets} = require "#{vimModePath}/lib/text-objects"
+
+module.exports = class Selector
+  constructor: (@editor, left, right) ->
+    @left = left.trim()
+    @right = right.trim()
+
+  inside: ->
+    if @isBraket()
+      new SelectInsideBrackets(@editor, @left, @right, false)
+    else
+      new SelectInsideQuotes(@editor, @left, false)
+
+  outside: ->
+    if @isBraket()
+      new SelectInsideBrackets(@editor, @left, @right, true)
+    else
+      new SelectInsideQuotes(@editor, @left, true)
+
+  isBraket: ->
+    ['[', ']', '{', '}', '<', '>', '(', ')'].indexOf?(@left.trim()) >= 0
diff --git a/atom/packages/vim-surround/lib/command/surround.coffee b/atom/packages/vim-surround/lib/command/surround.coffee
new file mode 100644 (file)
index 0000000..e939f78
--- /dev/null
@@ -0,0 +1,18 @@
+{CompositeDisposable} = require 'atom'
+
+Base = require './base'
+
+module.exports = class Surround extends Base
+  constructor: (config) ->
+    @command = config.surroundCommand
+    @context = "atom-text-editor.vim-mode.visual-mode"
+    super config
+
+  getName: (key) -> "surround-#{key}"
+
+  getRunner: (left, right) -> ->
+    editor = atom.workspace.getActiveTextEditor()
+    editor.transact ->
+      editor.selections.forEach (selection) ->
+        text = selection.getText()
+        selection.insertText "#{left}#{text}#{right}"
diff --git a/atom/packages/vim-surround/lib/vim-surround.coffee b/atom/packages/vim-surround/lib/vim-surround.coffee
new file mode 100644 (file)
index 0000000..b9fd332
--- /dev/null
@@ -0,0 +1,41 @@
+{CompositeDisposable} = require 'atom'
+
+Surround = require './command/surround'
+Delete = require './command/delete'
+Change = require './command/change'
+
+module.exports =
+  config:
+    pairs:
+      type: 'array'
+      default: ['()', '{}', '[]', '""', "''"]
+      items:
+        type: 'string'
+    changeSurroundCommand:
+      type: 'string'
+      default: 'c s'
+    deleteSurroundCommand:
+      type: 'string'
+      default: 'd s'
+    surroundCommand:
+      type: 'string'
+      default: 's'
+
+  activate: (state) ->
+    @commandClasses = [
+      Surround, Delete, Change
+    ]
+
+    @configLoop = atom.config.observe 'vim-surround', (config) =>
+      @disposables.dispose() if @disposables?
+      @disposables = new CompositeDisposable
+
+      @commands = []
+
+      for cls in @commandClasses
+        command = new cls config
+        @commands.push command
+        @disposables.add command.disposables
+
+  deactivate: () ->
+    @disposables.dispose()
diff --git a/atom/packages/vim-surround/package.json b/atom/packages/vim-surround/package.json
new file mode 100644 (file)
index 0000000..ead55b9
--- /dev/null
@@ -0,0 +1,51 @@
+{
+  "name": "vim-surround",
+  "main": "./lib/vim-surround",
+  "version": "0.7.2",
+  "description": "vim-surround for Atom!",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/gepoch/vim-surround"
+  },
+  "license": "MIT",
+  "keywords": [
+    "pair",
+    "parentheses",
+    "quotes",
+    "surround",
+    "vim"
+  ],
+  "engines": {
+    "atom": ">0.50.0"
+  },
+  "dependencies": {},
+  "consumedServices": {},
+  "readme": "# Vim Surround for Atom [![Build Status](https://travis-ci.org/gepoch/vim-surround.svg?branch=master)](https://travis-ci.org/gepoch/vim-surround)\n\nSurround is an implementation of vim-surround for the [atom](http://atom.io)\neditor, creating a vim-surround with the power of Atom!\n\nYou should definitely have [vim-mode](https://atom.io/packages/vim-mode) for\nthis package to function properly, of course.\n\nInspiration from and kudos to the wonderful [vim-surround for\nvim](https://github.com/tpope/vim-surround)\n\nSee vim-surround on [github](https://github.com/gepoch/vim-surround) or\n[atom.io](https://atom.io/packages/vim-surround).\n\n## News\n\n* This package supports visual mode's `s )` set of commands for a configurable\n  set of pairs.\n\n* Next on the roadmap are pair deletions with `d )` and friends.\n\n* New in 0.4: Multiple cursors are now supported, and conveniently work just\n  like you think they do.\n\n* New in 0.5: Stable configuration changes and configurable surround key!\n\n* New in 0.7: Change surround and delete surround added.\n\n### Muscle Memory Compatability Note\n\nvim-surround uses a lowercase `s` instead of `S` for surround commands! This is\nconfigurable in the package settings, if you would like to set it to the\noriginal keybinding.\n\n## How to use Surround\n\n### Surrounding\n\nFor double quotes, highlight the string in visual mode and enter `s \"`.\n\n```\nHello world -> \"Hello world\"\n```\n\nFor parentheses there are two options. `s )` will surround as normal. `s (`\nwill pad with a space. All asymmetrical pairs have the secondary space-padded\nform.\n\nFor example:\n\n`s )`\n\n```\nHello world -> (Hello world)\n```\n\n`s (`\n\n```\nHello world -> ( Hello world )\n```\n\n### Changing Surrounding Pairs\n\nSuppose I want to make double quotes into single quotes. To do this, I should\nput my cursor inside the double quotes in question and enter `c s \" '`\n\n```\n\"Hello world\" -> 'Hello world'\n```\n\n### Deleting Surrounding Pairs\n\nTo delete the single quotes, place your cursor inside of them and enter `d s '`\n\n```\n'Hello world' -> Hello world\n```\n### Configuration\n\nCurrently, the following pairs work out of the box!:\n\n- ()\n- []\n- {}\n- \"\"\n- ''\n\nYou can add to the available pairs in atom's settings, and the commands will\nbe dynamically added to your keybindings.\n\nFor example if I'm working on Jinja templates, and I want to add the ability to\nsurround using `{%` and `%}` I would add this in my settings:\n\n```\n(), [], {}, \"\", '', {%%}\n```\n\nThen:\n\n`s % }`\n\n```\nHello world -> {%Hello world%}\n```\n\n`s { %`\n\n```\nHello world -> {% Hello world %}\n```\n\n### TODO\n\n- [x] Implement deleting surrounding pairs with `d s`\n- [x] Implement changing surrounding pairs with `c s`\n- [ ] Intelligent tag surrounding/deleting/replacing with `s <q>` and friends.\n",
+  "readmeFilename": "README.md",
+  "bugs": {
+    "url": "https://github.com/gepoch/vim-surround/issues"
+  },
+  "homepage": "https://github.com/gepoch/vim-surround",
+  "_id": "vim-surround@0.7.2",
+  "_shasum": "34c0ad724ca6be2fbe6f708455bddc5f5964eb19",
+  "_resolved": "file:../d-11562-86965-1746m6m/package.tgz",
+  "_from": "../d-11562-86965-1746m6m/package.tgz",
+  "_atomModuleCache": {
+    "version": 1,
+    "dependencies": [],
+    "extensions": {
+      ".coffee": [
+        "lib/command/base.coffee",
+        "lib/command/change.coffee",
+        "lib/command/delete.coffee",
+        "lib/command/selector.coffee",
+        "lib/command/surround.coffee",
+        "lib/vim-surround.coffee"
+      ],
+      ".json": [
+        "package.json"
+      ]
+    },
+    "folders": []
+  }
+}
\ No newline at end of file
diff --git a/atom/packages/vim-surround/spec/spec-helper.coffee b/atom/packages/vim-surround/spec/spec-helper.coffee
new file mode 100644 (file)
index 0000000..931e0b9
--- /dev/null
@@ -0,0 +1,13 @@
+getEditorElement = (callback) ->
+  textEditor = null
+
+  waitsForPromise ->
+    atom.project.open().then (e) ->
+      textEditor = e
+
+  runs ->
+    element = document.createElement("atom-text-editor")
+    element.setModel(textEditor)
+    callback(element)
+
+module.exports = { getEditorElement }
diff --git a/atom/packages/vim-surround/spec/vim-surround-spec.coffee b/atom/packages/vim-surround/spec/vim-surround-spec.coffee
new file mode 100644 (file)
index 0000000..41a348e
--- /dev/null
@@ -0,0 +1,72 @@
+helpers = require './spec-helper'
+
+describe "Vim Surround activation", ->
+  [editor, pairs, editorElement, vimSurround, configPairs, chars, names] = []
+
+  beforeEach ->
+    pairs = ['()', '{}', '[]', '""', "''"]
+    atom.config.set('vim-surround.pairs', pairs)
+
+    vimSurround = atom.packages.loadPackage('vim-surround')
+    vimSurround.activate()
+
+    configPairs = atom.config.get('vim-surround.pairs')
+
+    helpers.getEditorElement (element) ->
+      editorElement = element
+      editor = editorElement.getModel()
+
+      editorClassList = editorElement.classList
+
+      editorClassList.add('editor')
+      editorClassList.add('vim-mode')
+      editorClassList.add('visual-mode')
+
+
+  describe "When the vim-surround module loads", ->
+    beforeEach ->
+      chars = []
+      pairs.forEach (pair) ->
+        for i in [0..pair.length-1]
+          char = pair[i]
+          chars.push char unless char in chars
+
+      commands = atom.commands.findCommands target: editorElement
+
+      names = []
+      commands.forEach (command) ->
+        names.push(command.name)
+
+    it "Creates a surround command for each configured pair character", ->
+      chars.forEach (char) ->
+        expect(names).toContain("vim-surround:surround-#{char}")
+
+    describe "and the list of pairs changes", ->
+      beforeEach ->
+        pairs = ['()', '{}', '[]', '""', "-+"]
+        atom.config.set('vim-surround.pairs', pairs)
+        commands = atom.commands.findCommands target: editorElement
+        names = (command.name for command in commands)
+        chars = []
+        pairs.forEach (pair) ->
+          for i in [0..pair.length-1]
+            char = pair[i]
+            chars.push char unless char in chars
+
+      it "should add any new pairs.", ->
+        chars.forEach (char) ->
+          expect(names).toContain("vim-surround:surround-#{char}")
+
+      it "should remove any old pairs.", ->
+        expect(names).not.toContain("vim-surround:surround-'")
+
+    describe "and then deactivates", ->
+
+      beforeEach ->
+        vimSurround.deactivate()
+        commands = atom.commands.findCommands target: editorElement
+        names = (command.name for command in commands)
+
+      it "should clear out all commands from the registry", ->
+        chars.forEach (char) ->
+          expect(names).not.toContain("vim-surround:surround-#{char}")
diff --git a/atom/snippets.cson b/atom/snippets.cson
new file mode 100644 (file)
index 0000000..e27c158
--- /dev/null
@@ -0,0 +1,18 @@
+# Your snippets
+#
+# Atom snippets allow you to enter a simple prefix in the editor and hit tab to
+# expand the prefix into a larger code block with templated values.
+#
+# You can create a new snippet in this file by typing "snip" and then hitting
+# tab.
+#
+# An example CoffeeScript snippet to expand log to console.log:
+#
+# '.source.coffee':
+#   'Console log':
+#     'prefix': 'log'
+#     'body': 'console.log $1'
+#
+# This file uses CoffeeScript Object Notation (CSON).
+# If you are unfamiliar with CSON, you can read more about it here:
+# https://github.com/bevry/cson#what-is-cson
diff --git a/atom/styles.less b/atom/styles.less
new file mode 100644 (file)
index 0000000..a321469
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Your Stylesheet
+ *
+ * This stylesheet is loaded when Atom starts up and is reloaded automatically
+ * when it is changed and saved.
+ *
+ * Add your own CSS or Less to fully customize Atom.
+ * If you are unfamiliar with Less, you can read more about it here:
+ * http://lesscss.org
+ */
+
+
+/*
+ * Examples
+ * (To see them, uncomment and save)
+ */
+
+// style the background color of the tree view
+.tree-view {
+  // background-color: whitesmoke;
+}
+
+// style the background and foreground colors on the atom-text-editor-element itself
+atom-text-editor {
+  // color: white;
+  // background-color: hsl(180, 24%, 12%);
+}
+
+// To style other content in the text editor's shadow DOM, use the ::shadow expression
+atom-text-editor::shadow .cursor {
+  // border-color: red;
+}